Vue2笔记
数据驱动:将数据与视图相关联,数据变化时自动更新视图。单页面应用VS多用途应用1)多页面应用:优点:首屏时间快,SEO效果好缺点:页面切换慢2)单页面应用:优点:页面切换快前提是依赖条件不变,第一次计算的结果会缓存起来,后面使用时直接使用第一次计算的结果。当计算属性的依赖属性的值发生变化时,该属性的值会自动更新,相关的DOM部分也会自动同步更新。1)计算属性有两种形式:函数形式和对象形式,有get()和set()方法计算:{url:{get(){return`${this.protocol}//${this.host}`;},set(val){consttmp=val.split('//');如果(tmp.length>1){this.protocol=tmp[0];this.host=tmp[1];}}}}2)计算属性使用闭包传递计算参数:{url(){returnfunction(hash){return`${this.protocol}//${this.host}#${hash}`;}}}listenDevice1.Functionform2.Objectformwatch:{location:{immediate:true,//初始化期间执行deep:true,//递归(深度)遍历handler(newVal,oldVal){this.url=`${newVal.protocol}//${newVal.host}`;}}}computed和watch的区别computed属性和listeners的本质是Watcher的实例。Computed是基于响应式依赖进行缓存的,只有当相关的响应式依赖发生变化时才会重新计算。当依赖关系保持不变时,计算属性使用缓存的最后一次计算结果,而无需重复执行监视。当数据发生变化时需要执行异步或昂贵的操作时,请使用手表。v-if和v-showv-if是“真”条件渲染,因为它将确保条件块内的事件侦听器和子组件在切换期间被适当地销毁和重新创建。v-if动态增删节点(DOM),v-show控制CSS属性(display)切换;v-if是惰性的,初始条件为假时不会参与模板编译;v-show会一直参与渲染;v-if会缓存编译结果。当v-if条件为真时,vue会编译成虚拟DOM并缓存起来,下次条件渲染后直接使用。v-if具有更高的切换开销,而v-show具有更高的初始渲染开销。所以,如果你需要非常频繁地切换,最好使用v-show,如果条件在运行时很少改变,最好使用v-if。v-if中的keyVue将尽可能高效地渲染元素,通常会重用现有元素而不是从头开始渲染。为元素添加一个具有唯一值的key属性,表明该元素是完全独立的,不要重复使用它们。v-if和v-for在同一个元素上,v-for优先级高比v-if,即先执行遍历,再执行判断。如果条件出现在循环内部,可以使用计算属性过滤掉那些不需要提前显示的项目。v-for中键值的作用:作为同级元素的标识,提高更新效率。key值的作用首先要了解vue更新DOM的机制,即Diff算法。该算法有三个假设,其中一个是同一层级的元素可以通过唯一的id值来区分,将key值作为id值,以便vue在更新(包括插入、删除、添加)时能够识别,交换等)到底是哪个虚拟DOM发生了变化,而不是一般的批量更新。用作分隔符是因为它更接近JavaScript迭代器的语法:
变异方法和非变异方法Vue重写了监听数组的change方法,会改变原数组push(),pop(),unshift(),shift(),splice(),reverse(),sort()非变异方法:无改变原始数组,并始终返回一个新数组filter(),concat()和slice()当使用非变异方法时,可以用新数组替换旧数组Event
方法:{add(step,event){this.count+=step;控制台日志(事件);//访问原生事件对象}}事件修饰符:.stop//防止事件冒泡.prevent//防止浏览器的默认行为。self//只有当触发事件(event.target)的对象是它自己时才执行。capture//监听器采用事件捕获模型。once//触发一次后移除监听器。//告诉浏览器监听器是“活跃的”,不会阻止浏览器的默认行为,让滑动更流畅。特别是可以提高移动终端的性能。数据双向绑定(v-model)v-model指令用于在input、select、text、checkbox、radio和其他表单控件元素上创建双向数据绑定。v-model是句法糖,在用户输入事件中更新数据。给v-model添加.lazy修饰符会监听change事件。native修饰符用于监听组件根元素上的本地事件//将本地事件绑定到组件。复用性高,减少重复开发,即一处开发,多处使用。单向数据流:父组件传值给子组件1)是属性,table、ul、ol、select中使用了一些HTML元素,如
、、和