Vue.js 是一套构建用户界面的渐进式框架。
Vue.js 是一款极简的 MVVM 框架
Vue 不支持 IE8 及以下版本
尤雨溪是 Vue.js 框架的作者,2014 年 2 月,开源了一个前端开发库Vue.js。
2016 年 9 月 3 日,Vue作者尤雨溪正式宣布以技术顾问的身份加盟阿里巴巴 Weex 团队。
MVVM框架(MVVM 把代码分了三层,可以进行数据的双向绑定)
数据的双向绑定
es5 的 Object.defineProperty()
Vue 为什么能实现数据驱动,原因就是因为Vue的框架使用了 es5 的 Object.defineProperty() 函数,观测了数据,当数据发生了变化的时候,会自动的执行一些代码。如:让 span 和 obj 的关联,当 set 函数执行的时候,span中的内容变成 obj 中 a 的内容。
{{ message }}
元素属性:
hello
v-bind 指令:
v-bind指把div中的title属性与vue中message属性绑定在一起。
v-bind:title="message" 可以简写为 :title="message",写代码时,尽量用简写。
插值:
Message: {{ msg }}
v-once 指令:
仅执行1次更新
{{ msg }}
显示:
JS:
{{ number + 1 }}
{{ ok ? 'YES' : 'NO' }}
{{ message.split('').reverse().join('') }}
+
=
{{c}}
computed:{
c(){
return Number(this.a) + Number(this.b);
}
}
computed:{
c : {
get(){
console.log('get');
return this.a+this.b;
},
set(v){
console.log('set:', v)
}
}
}
{{d()}}
method:{
d(){
console.log('d 执行了');
return Number(this.a) + Number(this.b);
},
}
推荐用计算属性 (因为计算属性有缓存),不推荐用方法
执行 vm.str=“abc” 时,这段代码与d()没有任何关系,但是d()被执行了,意味着只要视图发生变化,methods中方法都会被执行
我们可以将同一函数定义为一个方法而不是一个计算属性。两种方式的最终结果确实是完全相同的。然而,不同的是计算属性是基于它们的依赖进行缓存的。只在相关依赖发生改变时它们才会重新求值。
相比之下,每当触发重新渲染时,调用方法将总会再次执行函数。
计算属性缓存
计算属性缓存可以使性能消耗降低。
侦听属性
watch:{
a(v){
this.c = Number(this.b) + Number(v);
},
b(v){
this.c = Number(this.a) + Number(v);
}
}
添加多个class 属性
对象的写法
数组的写法:
123
data: { a : "x", b : "y" }
123
data: { classArr : ["a", "b-c"] }
123
data: { a:'blue', c:100 }
123
data: { classObj: { background:'yellow', 'font-size':'50px'} }
123
data: { a:{background:'yellow'}, b:{color:'orange'} }
123
data: { classArr: [{background:'red'}, {color:'green'}] }
现在你看到我了
现在你看到我了
现在你看到我了
一个小小的案例,做一个切换按钮,点击按钮,实现添加和删除 div 盒子的效果。bln : true 时,添加 div; bln : false 时,删除 div。
hello
Title
Paragraph 1
Paragraph 2
那么在上面的代码中切换 loginType 将不会清除用户已经输入的内容。因为两个模板使用了相同的元素, 不会被替换掉——仅仅是替换了它的 placeholder。
这样也不总是符合实际需求,所以 Vue 为你提供了一种方式来表达“这两个元素是完全独立的,不要复用它们”。只需添加一个具有唯一值的 key 属性即可:
注意, 元素仍然会被高效地复用,因为它们没有添加 key 属性。
注意,v-show 不支持 元素,也不支持 v-else。
你能看到我吗?
v-if 也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块。
相比之下,v-show 就简单得多——不管初始条件是什么,元素总是会被渲染,并且只是简单地基于 CSS 进行切换。
一般来说,v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。因此,如果需要非常频繁地切换,则使用 v-show 较好;如果在运行时条件很少改变,则使用 v-if 较好。
{{val + ' ------- ' + ind }}
关于 v-for 更详细介绍,见 https://cn.vuejs.org/v2/guide/list.html