Vue.js 知识点

来源:互联网 发布:linux网速测试命令 编辑:程序博客网 时间:2024/06/07 23:36

计算属性computed

计算属性computed,其实是该属性的getter函数,计算属性只有在它的相关依赖改变的时候才会重新计算,否则就会缓存起来,避免了重复使用的时候函数执行,优化性能。
同样,计算属性也有setter函数,我们可以在计算属性重新赋值的时候通过setter函数执行一些语句。
与watcher比较:watcher通过对所有 的依赖都需要写watcher函数,进行监听,如果某一个依赖发生改变,再进行改变,而且,每次都会执行函数,不利于我们的性能。而computed则不同,它会将计算结果进行缓存,每次调用都会调用这个缓存的结果,而不必执行函数,只有在相关依赖改变的情况下,才会执行函数,而且它可以对多个依赖起作用,这点要优于watcher函数。

new Vue({    el:'#app',    data:{        firstName:'John',        lastName:'Wade',        fullName:'John Wade'    },    watch:{        //watcher函数        firstName:(n) => {            this.fullName = n + ' ' + this.lastName        },        lastName:(n) => {            this.fullName = this.firstName + ' ' + n        }    },    computed:{        //计算属性computed        fullName:() => {            return this.firstName + ' ' + this.lastName        }    }})//是否computed优于watcher函数呢?

template包装元素

Vue中可以使用template包装元素来将一些分离的元素包在一起,在最终渲染元素时,并不会包括template元素,这样可以避免没有根节点的问题!
PS:v-if v-for都可以使用template元素,v-show不支持template元素。

    <template v-if="isNessery">        <h1>Hello</h1>        <h2>Welcome to China!</h2>    </template>

使用Key值来管理可复用的元素

通常情况下,Vue为尽可能高效的渲染元素,会使用已有的重复元素。这样会出现一个问题,如果两个input的使用,已经在其中一个里面输入一些内容,那么当需要显示第二个时,通常会重复使用第一个,这样输入的内容不会被清除,这样就不符合需求,这种情况下,我们在相同的元素上加上不同的key值,就不会出现这个问题了,基本上这个问题大部分会出现在input上,其他不需要输入的元素应该没有问题。
另外:v-if,v-else-if,v-else这些条件必须紧跟在一起,否则不起作用!
v-show不支持template元素
v-if与v-show:v-if有更高的切换开销,v-show有更高的渲染开销,一般情况下,如果元素需要频繁的切换,使用v-show比较好,如果运行时条件不太可能改变,那么就使用v-if!

    <template v-if="isActive">        <label>Template 1</label>        <input type="text" key="temp-1"/>    </template>    <template v-else>        <label>Template 2</label>        <input type="text" key="temp-2"/>    </template>    //其中input添加了唯一的key值,每次都会被重新加载    //而label元素会被高效的重复使用,只改变里面的内容,不需要key值

变异数组

Vue.js包含一些数组变异方法,也会触发视图更新:

push()pop()shift()unshift()splice()sort()reverse()

变异方法意思就是会改变原数组的方法,也有非变异方法,它们是返回一个全新的数组。如:filter(),concat(),slice()等。
Vue实现了一些方式最大的重复使用已有DOM元素。

事件修饰符

.stop //阻止事件冒泡.prevent //阻止重载页面.capture //捕获.self //元素本身.once //只执行一次//键名修饰符@keyup.enter.tab.delete.space.esc...

表单控件绑定

可以将checkbox绑定到一个数组上

<input type="checkbox" value="a" v-model="arrs"/><input type="checkbox" value="b" v-model="arrs"/><input type="checkbox" value="c" v-model="arrs"/>
原创粉丝点击