渲染器的作用
渲染器至少知道vnode与存储它的容器;
控制部分组件生命周期钩子的调用;(挂载,卸载
多端渲染的桥梁;
与异步渲染有关;
最核心的diff算法;
将各种类型的vnode挂载为真实的DOM;
挂载:创建DOM,设置相关属性,时间等,不会插入页面中;
工作阶段
- 安装(mount: 不存在老vnode时;
- 补丁(patch: 以最小的开销完成DOM更新;
挂载普通元素标签
- mount函数将vnode渲染成真实dom,根据vnode类型不同需要的挂载方式不同;
挂载纯文本
挂载Fragment
- 没有最外层容器元素的容器组件;
- vnode的tag为空;
挂载Portal
- 可以将组件渲染到任何地方的组件;
- vnode的tag为挂载点元素的tag;
挂载有状态的组件
- 实例化->vnode->挂载->将自身真实dom的引用设置到实例属性$el;
挂载函数式组件(也就是无状态组件)
- 是一个没有状态,不需要实例化的函数;
异步渲染
- vue默认时异步渲染的方式,触发数据更新后,会将运行渲染任务,通过nextTick函数放到任务队列中,所以