一.模板template
- vue的构造器的选项中:
el:指定挂载的节点
data:声明Vue实例中的属性
methods:定义事件函数/其他的方法
template也是选项之一,定义视图模板
- template最终会直接替换原节点,使用template模板中必须要有一个根节点
- template使用的3种方式
1.直接定义在选项中
2.定义在template
2.定义在script
二.计算属性 computed
- 当依赖的值发生变化时,会触发计算属性重新计算
- 是否刷新视图问题
- 如果计算属性中依赖的值没有发生变化,则计算属性不会在视图更新时执行,因为计算属性会缓存计算过后的值
- methods定义的方法如果使用了{{fn()}}调用,则视图更新时,不管与该方法有没有关系,都会重新执行一遍
- 计算属性只有看自己已懒得值得有没有发生变化,如果没变化,则视图即使更新了,计算属性也不会重新执行
- 何时使用计算属性
当属性需要经过计算,从一个已有的数据得到一个新的数据时,就可以使用computed,这样可以节省性能 - 是属性,调用时不用加()
三.监听属性watch
- 作用:监听数据的状态变化
- 属性
- deep属性表示是否深度监听,默认值为false(不开启),当对象等引用类型数据发生变化时,是不会监听到的
=>普通的watch方法无法监听到对象内部属性的改变
=> 为了发现对象内部值的变化,可以在选项参数中指定 deep: true。注意监听数组的变更不需要这么做。 - immediate属性表示是否立即监听,默认值false;如果为true,则在加载页面时就已经开始监听
- 无法监听通过下标改变的数组
- 无法监听通过 . 方式添加对象属性
- 何时使用:当数据发生变化后需要处理某些逻辑时
- 对象的监听
'obj.a':{
handle(){},
deep:true,
immediate:true,
}
- watch自带一个新值和旧值,新值就是变化后的值,旧值就是变化前的值
就是watch:{
num(新值,旧值){}
} - computed和watch的区别
- computed是根据依赖的值的变化计算得出新的值,新的值会被挂载到Vue实例上;watch是监听已经存在的属性/状态,watch还可以监听computed的变化
- computed计算得到的值具有缓冲性,当依赖发生变化时,才会重新计算;watch是只有当监听的属性发生变化才会执行
- 从使用场景来说:
computed适用于一个数据受多个数据影响的场景
watch适用于一个数据影响多个数据的场景
computed用于同步数据的处理
watch可以处理异步数据
四.其他
- 反引号``的作用
模板字符串(Template String)是增强版的字符串,用反引号(`)标识,它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。
https://blog.csdn.net/blog_szhao/article/details/51792868 - template什么情况下需要使用
单独使用模板将会替换挂载的元素。所以一般与插槽一起使用, - v-model 和 :value的区别
v-model的适用范围更广,更好的使用监听watch的的选项
:value只能用于有value值的标签 - vue里的方法要调用才能运行
- forEach循环
arr.forEach(function(value,index,array){
});
- await与async
AsyncFunction 构造函数用来创建新的异步函数对象,JavaScript 中每个异步函数都是 AsyncFunction 的对象。
https://www.jianshu.com/p/b4fd76c61dc9
http://www.ruanyifeng.com/blog/2015/05/async.html - 数组的增加
arr.pop() 用于删除并返回数组的最后一个元素。 后删
arr.unshift() 向数组的开头添加一个或更多元素,并返回新的长度。 头增
arr.shift() 用于把数组的第一个元素从其中删除,并返回第一个元素的值。 头删
arr.push() 向数组的末尾添加一个或多个元素,并返回新的长度。 后增 - 定时器
setTimeout((),时间) 在指定的毫秒数后调用函数或计算表达式。
setInterval((),时间) 每隔固定时间被调用一次