- 一个Vue实例只能跟一个容器绑定:若有多个容器,则只能绑定到第一个;若有多个Vue实例,则仅有第一个Vue实例能成功绑定,其他实例会报错。
- 可以在创建Vue实例时使用
el:"#id"
的方式挂载,也可以使用Vue
对象的$mount("#id")
方法挂载。 data
也有2种形式:可以是一个对象data:{}
,也可以是一个函数data() { return{} }
。data
作为函数时返回值必须是一个对象。- 由Vue管理的函数都不要写成箭头函数,因为箭头函数没有自己的
this
,this
指向的也不会是Vue实例了。 {{}}
模板中可以写任意JavaScript表达式。data
中的所有属性都会出现在Vue实例对象中,任意在Vue实例对象或其__proto__
原型中的属性都可以在{{}}
模板中直接使用。v-bind
单向绑定,v-model
双向绑定,但v-model
只能用在表单类元素上。v-model:value
可以简写成v-model
,因为v-model
默认绑定value
属性。@click
需要传参时,想要传入事件对象可以使用$event
。- 绑定特殊按键(如
ctrl
,shift
,alt
,tab
)的键盘事件时,需要使用@keydown
而非@keyup
。 - 要更改计算属性的值必须通过
setter
响应式修改,且setter
需要更改计算属性所依赖的数据。 - 监听属性可以在Vue配置对象中写
watch
属性,也可以在创建Vue实例后,使用$watch
方法。 watch
属性的配置对象中设置immediate
属性为true
可以使回调函数handler
在Vue实例初始化时就执行一次。监听对象或其他多级结构时设置deep
属性为true
,即可深度监听。- 监听的属性不存在时不会报错。
computed
能完成的功能,watch
都能完成,而watch
能完成的功能,computed
则不一定能完成,例如异步操作只能使用watch
。v-show
指令是通过给元素添加display: none
实现隐藏元素,而v-if
是将该元素从DOM树移除。需要频繁的根据条件显示和隐藏元素时,使用v-show
具有更好的性能。template
只能使用v-if
而不能使用v-show
。v-if
和v-else-if
以及v-else
的元素之间不能有其他元素,否则其后面的v-else-if
和v-else
都会失效。v-for
若没有绑定key
,则Vue会自动把key
绑定index
。v-for
的key
如果绑定index
,则当页面中元素的顺序发生变化时,生成DOM的效率会降低,并且页面中用户输入的数据会错位。- Vue响应式的底层原理是给Vue管理的对象都添加了
getter
和setter
,修改数据时通过setter
来更新数据同时并更新视图。 - 直接向Vue中的响应式对象添加的新属性无法被Vue监测,且不会更新视图。需要使用
Vue.set()
往响应式对象中添加新的响应式属性,但是无法直接给Vue实例对象或Vue实例的根数据对象添加属性,例如可以给data
中的myObj
对象添加newProperty
属性,但是无法直接给data
添加newProperty
属性。 data
中绑定的数组若直接通过[]
修改,则不会被Vue监测到修改。响应式修改数组只能使用push()
、pop()
、shift()
、unshift()
、reverse()
、sort()
和splice()
方法,上述方法实际上并不是Array.prototype
中的方法,而是Vue给数组重写的方法,因此能够响应式的更新视图。Vue.set()
同样可以响应式的修改数组。- 关于组件:
- 关于VueComponent:
VueComponent.prototype.__proto__ === Vue.prototype
,即VueComponent
原型继承自Vue
。- 关于
props
: - 全局事件总线:
- 消息订阅与发布:
- 配置代理服务器:
- 插槽:
Vue学习笔记
最新推荐文章于 2023-05-20 20:19:04 发布