1、描述组件渲染和更新过程
渲染组件时,会通过 Vue.extend 方法构建子组件的构造函数,并进行实例化。最终手动调用 $mount() 进行挂载。更新组件时会进行 patchVnode 流程.核心就是diff算法
2、组件中的 data为什么是一个函数?
同一个组件被复用多次,会创建多个实例。这些实例用的是同一个构造函数,如果 data 是一个对象的 话。那么所有组件都共享了同一个对象。为了保证组件的数据独立性要求每个组件必须通过 data 函数 返回一个对象作为组件的状态。
3、Vue中事件绑定的原理
Vue 的事件绑定分为两种一种是原生的事件绑定,组件的事件绑定
(1)原生 dom 事件的绑定,采用的是 addEventListener 实现
- Vue 在创建真是 dom 时会调用 createElm ,默认会调用 invokeCreateHooks
- 会遍历当前平台下相对的属性处理代码,其中就有 updateDOMListeners 方法,内部会传入 add 方法
vue 中绑定事件是直接绑定给真实 dom 元素的
(2)组件绑定事件采用的是 $on 方法
组件绑定事件是通过 vue 中自定义的 $on 方法来实现的
4、v-model中的实现原理及如何自定义v-model?
v-model 可以看成是 value+input方法 的语法糖