Vue中我认为需要注意的地方:
1、组件化(组件系统)
小型、独立和可复用组件组成了大的组件,进而构建了页面。多个页面形成了一个大型的应用。
2、组件
组件是一个拥有预定义选项的Vue实例。一个 Vue 应用由一个通过 new Vue 创建的根 Vue 实例,以及可选的嵌套的、可复用的组件树组成。
组件中定义一个props,相当于定义一个attribute,props的值为attribute名称。例如:在组件上使用v-bind:title="",组件内接收title,使用props: ['title'],这样实现了父子组件的传值。
3、响应式数据
数据改变时,视图会进行重渲染。当实例被创建时就已经存在于 data 中的 property 才是响应式的。也就是说如果你添加一个新的 property,这个属性不是响应式的。(在实例中新添加的属性,不会触发视图的更新)
Object.freeze(),这会阻止修改现有的 property,也意味着响应系统无法再追踪变化。
Vue 实例还暴露了一些有用的实例 property 与方法。它们都有前缀 data就是实例中的data。
vm.watch 是一个实例方法, a是data中的数据
vm.$watch('a', function (newValue, oldValue) {
// 这个回调将在vm.a
改变后调用
})
4、实例生命周期钩子
每个 Vue 实例在被创建时都要经过一系列的初始化过程,例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。同时在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会。
创建new Vue()后,init Events & lifecycle,说明事件和生命周期会被初始化。
紧接着,执行第一个生命周期,beforeCreate。(可以做页面路由拦截等,组件被创建前)
然后,Init injection & reactivity。(初始化注入及响应)
下一步,created生命周期钩子函数。(组件实例被创建完成,属性已经绑定,但是DOM还未生成。)
下一步,beforeMount(template编译,挂载之前)。
下一步,mounted(编译,并替换了绑定的元素)。(注意:如果操作DOM,需要在此生命周期或之后)
下一步,beforeUpdate(data发生改变)
下一步,updated(虚拟DOM被重新渲染然后更新数据)
5、模板方法
如果你熟悉虚拟 DOM 并且偏爱 JavaScript 的原始力量,你也可以不用模板,直接写渲染 (render) 函数,使用可选的 JSX 语法。
6、动态参数
vue 2.6.0中新增,可以用方括号括起来的 JavaScript 表达式作为一个指令的参数。例如:
v-bind:[eventname]='dosomething'
对动态参数的值的约束
动态参数预期会求出一个字符串,异常情况下值为 null。这个特殊的 null 值可以被显性地用于移除绑定。任何其它非字符串类型的值都将会触发一个警告。
对动态参数表达式的约束
因为某些字符,如空格和引号,放在 HTML attribute 名里是无效的。
变通的办法是使用没有空格或引号的表达式,或用计算属性替代这种复杂表达式。
在 DOM 中使用模板时 (直接在一个 HTML 文件里撰写模板),还需要避免使用大写字符来命名键名,因为浏览器会把 attribute 名全部强制转为小写。