Vue.js - 核心

简介: Vue.js - 核心

【序号】表示后期插入的知识点~

1、Hello World

2、双向绑定
语法:v-model
简介:v-model 是一个模板指令 input里面value的内容输入什么,下面content的内容就会显示出来。

3、数据绑定
语法:{{}}

【1】、属性绑定
语法:v-bind ~ :
简介:title='title' 后面的title不是个字符串 而是js的表达式 (new 实例下面的title)。

4、MVP & MVVM
4.1、MVP

4.2、MVVM


Ps:VM层属于Vue层(数据自动绑定),面向数据开发;而传统的MVP中的P层主要是面向DOM开发;用MVVM模式可以减少30%的代码量甚至可以达到70%。

5、组件
5.0、Vue组件 & Vue实例
在Vue里 ,每一个Vue组件,都是一个Vue实例。
Vue实例有的功能,Vue组件都同样拥有。
如果一个vue实例里面没有定义template,那么这个实例会把它对应的挂载点下的所有内容当作模板。

5.1、全局组件(注释部分) & 局部组件

5.2、组件即实例(new Vue({}))
5.3、组件定义的新标签,有时不能直接使用,比如:

Ps:一般情况下,父组件可以传递数据到子组件(单向),子组件不能修改从父组件而来的变量,不过可以通过data临时变量来传递到父组件。

【4、父子组件通信过程】

(1)父组件通过prop向子组件传值,子组件获得父组件传来的内容和索引。
(2)子组件通过$emit向父组件抛出触发事件名称(delete)和触发事件的list索引值。
(3)父组件通过监听对应事件名称(@delete)触发函数handleDelete。函数通过子组件抛出的索引值对应删除list。

5.7、组件参数检验 + props + 非props 特性

props:不仅可以用数组来接收,也可以用对象来接收;渲染后不会显示content=”xxx”。

非props:可以直接操作要显示的数据,渲染后会显示content=”xxx”。一般非props不常用。

5.8、组件绑定原生事件
传统方式:

Ps:emit针对自定义事件;而在组件内部 @click 属于原生事件。
简写方式:

5.9、非父子组件通信

5.10、内容插槽

5.11、作用域插槽

Ps:在这里的和slot-scope是固定写法。

5.12、动态组件 & v-once 指令

Ps:注释的代码性能更好,因为不需要每次都删除再增贴。

5.13、template 属性



Ps:挂载点:指的是el标记的。
模板:既可以写在挂载点内部,也可以写在js的template里面。
挂载点里面的内容称之为模板。

6、生命周期

Ps:椭圆白底矩形的方法是不用写在methods里面的,与methods同层次级别。

7、计算属性(一)
语法:computed:{}
提示:
7.1、支持缓存,只要跟他的相关值改变才会更新,否则一直使用缓存。
7.2、若一个业务逻辑可以用watch、methods、computed实现的话,优先选择computed,因为代码少,而且性能最好。

7、计算属性(二)
语法:computed:{
xxx:{
set: function(){},
get: function(){}
}
}
提示:
7.1、支持缓存,只要跟他的相关值改变才会更新,否则一直使用缓存。
7.2、set函数里面需要自己split来分割分别赋值。

8、监听器
语法:watch:{}
提示:
8.1、支持缓存,只要跟他监听的变量改变才会更新。

【2】计算属性 & 监听器

9、样式绑定
9.1、:style
9.2、:class
Ps:value用数组或{}(对象)来表示,用对象时,注意用驼峰命名法,比如:font-size => fontSize。

10、条件渲染
10.1、v-show
提示:
10.1.1、如果为false,相当于display:none; 和v-if一样会整个DOM都消失了;从性能上来看v-show性能更好。

10.2、v-if / v-else-if / v-else
提示:
10.2.1、中间不能有其他与if/else不相关的元素,if/else必须紧接着一起。

10.3、key
提示:
10.3.1、因为Vue会尽可能的用已加载好的结构来提高性能,但是有时也会出现BUG,比如:input元素,此时,就要用key来区分,避免乱用别人的DOM(脏数据)。

【3、v-if & v-show】

  • v-if 为false时,DOM元素在HTML里不存在(原来存在的话,现在就被删除),自然而然在流结构上面不存在。
  • v-show 为false时,DOM元素在HTML里存在,但是 display:none 而且在流结构上面仍然属于不存在。

11、列表渲染
语法:v-for=”(item, index, key) of list”
语法::key=”item.id”(不推荐使用”index”,因为性能不好)

提示:
11.1、使用下标改数据,数据成功改变,但不会实时渲染;只有调用上面注释的API(变异方法)改变数据或者改变引用地址(赋值新的对象或数组)才会实时渲染。
11.2、相当于小程序中的可节省一个


11.3、Vue.set 或 vm.$set 也可以实现实时渲染

【4、for of & for in】
ES6 - for of & for in 区别

12、CSS动画原理


Ps1:如果属性name=”xxx”,则class为“.xxx-enter-active”其他类似,默认为“.v-…”。
Ps2:leave:准备离开时调用;enter:准备出现时调用。

13、Animate.css库

Ps:支持自定义动画。

Ps:支持自定义class。

Ps:必须使用自定义的模式,如“enter-active-class”来使用;并且加上“animated”,剩下的效果自己选择。其实Animate.css库只是@keyframes的封装罢了。

14、Animate.css & 自定义同时使用

Ps1:appear 出场时调用。
Ps2:type 选择以自定义的时间为基准。
Ps3::duration 固定出现和消失的基准时间,若一样,则可以“:duration=‘毫秒’”。

15、结合动画Velocity.js使用
传统方式:

Ps:leave类似。

Velocity.js方式:

16、多个元素或组件的过渡
方法一:

方法二:

17、列表过渡

Ps:高亮选中的为的原理部分。

18、动画封装

19、项目初始化



Ps:项目更新到码云上。

20、单页应用 & 多页应用

Ps:单页应用,把当前页DOM删除掉,再把需要的渲染出来。

21、axios
URL代理

22、keep-alive
22.1、多了一个 activated 生命周期
22.2、多了一个 deactivated 生命周期
22.3、exclude 属性
实战:每个地方的首页是不一样的,如果我第一次选A地,发送一次请求;如果第二次还选A地,不发送请求;如果选非A地,发送一次请求。

23、Vue + Vue-Cli + Webpack + npm

build 目录下放置的是项目的webpack配置文件,可以不动

config 是针对线上环境和开发环境的配置文件,也可以不动

node_modules 指的是项目的依赖

src 指的是源代码放置的目录

static 放置的是静态的资源

src中的main.js文件是整个项目的入口文件

vue-cli 提供了一种新的vue的编码语法:单文件组件(一个.vue文件中包含了一个组件里必须的所有内容)

vue-cli 的优势:

23.1、可以使用es6。

23.2、一个组件是一个.vue的文件所定义的,实现了组件的封装。

(在安装该工具之前需要安装npm和node)

24、单文件组件开发模式

  • template下面只能有一个最外层根标签。
  • 在v-cli脚手架中,data不再是一个对象,而是一个函数。

附:

目录
相关文章
N..
|
25天前
|
JavaScript 前端开发 测试技术
Vue.js的组件
Vue.js的组件
N..
11 1
|
7月前
|
JavaScript
|
3月前
|
JavaScript 前端开发
前端:Vue.js特性
前端:Vue.js特性
22 0
|
4月前
|
存储 JavaScript 前端开发
Vue.js 3 的设计思路
Vue.js 3 的设计思路
30 1
|
5月前
|
JavaScript 前端开发 API
Vue.js 的核心特点
Vue.js 的核心特点
310 0
|
8月前
|
JavaScript 前端开发 UED
Js和Vue的运行机制
Js和Vue的运行机制
|
10月前
|
存储 JavaScript 前端开发
Vue.js的设计思路
Vue.js的设计思路
76 0
|
JavaScript 前端开发 API
|
JavaScript
Vue.js - Vue 中如何引入第三方 JS 库(三)
Vue.js - Vue 中如何引入第三方 JS 库(三)
365 0
Vue.js - Vue 中如何引入第三方 JS 库(三)
|
JavaScript
Vue.js - Vue 中如何引入第三方 JS 库(二)
Vue.js - Vue 中如何引入第三方 JS 库(二)
415 0
Vue.js - Vue 中如何引入第三方 JS 库(二)