-
虽然没有完全遵循 MVVM 模型,但是 Vue 的设计也受到了它的启发。因此在文档中经常会使用 vm (ViewModel 的缩写) 这个变量名表示 Vue 实例。
- (哪里没有遵循?)
-
Vue实例
-
这里唯一的例外是使用 Object.freeze(),这会阻止修改现有的属性,也意味着响应系统无法再追踪变化。
vue实例 -
每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。
-
生命周期钩子的 this 上下文指向调用它的 Vue 实例。
-
不要在选项属性或回调上使用箭头函数,比如 created: () => console.log(this.a) 或 vm.$watch('a', newValue => this.myMethod())。
-
模板语法
-
“Mustache”语法 (双大括号)
-
你的站点上动态渲染的任意 HTML 可能会非常危险,因为它很容易导致 XSS 攻击。请只对可信内容使用 HTML 插值,绝不要对用户提供的内容使用插值。
-
js表达式 <div v-bind:id="'list-' + id"></div>
-
模板表达式都被放在沙盒中,只能访问全局变量的一个白名单,如 Math 和 Date 。你不应该在模板表达式中试图访问用户定义的全局变量。
-
从 2.6.0 开始,可以用方括号括起来的 JavaScript 表达式作为一个指令的参数:
<a v-on:[eventName]="doSomething"> ... </a>
当 eventName 的值为 "focus" 时,v-on:[eventName] 将等价于 v-on:focus。
<!-- 这会触发一个编译警告 -->
<a v-bind:['foo' + bar]="value"> ... </a>
变通的办法是使用没有空格或引号的表达式,或用计算属性替代这种复杂表达式。
<!-- 在 DOM 中使用模板时这段代码会被转换为 `v-bind:[someattr]` -->
<a v-bind:[someAttr]="value"> ... </a>
-
计算属性和侦听器
-
计算属性是基于它们的响应式依赖进行缓存的,相比之下,每当触发重新渲染时,调用方法将总会再次执行函数。
-
计算属性默认只有 getter ,不过在需要时你也可以提供一个 setter
-
当需要在数据变化时执行异步或开销较大的操作时,侦听器(居然不是监听器)这个方式是最有用的。
-
Class 与 Style 绑定
-
在将 v-bind 用于 class 和 style 时,表达式结果的类型除了字符串之外,还可以是对象或数组。
-
(我用的最多的还是对象模式)
-
条件渲染
-
注意,v-show 不支持 <template> 元素,也不支持 v-else。
-
当 v-if 与 v-for 一起使用时,v-for 具有比 v-if 更高的优先级。
-
列表渲染
-
你也可以用 v-for 来遍历一个对象的属性。
- v-for="(value, name, index) in object"
-
如果你想添加新的响应式属性
vm.userProfile = Object.assign({}, vm.userProfile, { age: 27, favoriteColor: 'Vue Green' }) -
可用计算属性或是方法
- <li v-for="n in even(numbers)">{{ n }}</li>
网友评论