Vue.js设计与实现(0-0)
主要内容
- 框架设计的核心要素以及框架设计过程中要做出的权衡;
- 三种常见的虚拟DOM的diff算法;
- 组件化的实现与Vue.js内建组件的原理;
- 服务端渲染、客户端渲染、同构渲染之间的差异,以及同构渲染的原理。
6篇18章
一、框架设计概览
- 命令式和声明式两种范式的差异,二者对框架设计的影响;虚拟DOM的性能状况;运行时和编译时的相关知识 —— Vue.js 3.0 是一个运行时+编译时的框架。
- 设计框架时应该考虑的内容:用户的开发体验、控制框架代码的体积、Tree-Shaking的工作机制、框架产物、特性开关、错误处理、TypeScript支持等。
- 设计思路及各模块之间如何协作。
二、响应系统
- 响应系统实现机制:副作用函数、计算属性和watch的实现原理。
- 使用Proxy代理JavaScript对象的方式:Proxy、Reflect以及JavaScript对象的工作原理。
- ref的概念,基于ref实现原始值的响应式方案,使用ref解决响应丢失问题。
三、渲染器
- 渲染器与响应系统的关系,两者如何配合工作完成页面更新,渲染器中的一些基本名词和概念,自定义渲染器的实现与应用。
- 渲染器挂载与更新的实现原理:子节点的处理、属性的处理和事件的处理。当挂载或更新组件类型的虚拟节点时,组件生命周期函数的处理。
- 简单diff算法的工作原理。
- 双端diff算法的工作原理。
- 快速diff算法的工作原理。
四、组件化
- 组件的实现原理:组件自身状态的初始化,由自身状态变化引起的组件自更新;组件的外部状态(props),由外部状态变化引起的被动更新,以及组件事件和插槽的实现原理。
- 异步组件和函数式组件的工作机制和实现原理。异步组件:超时与错误处理、延迟展示Loading组件、加载重试等。
- 三个内建组件的实现原理:KeepAlive、Teleport和Transition。
五、编译器
- Vue.js模板编译器的工作流程,parser的实现原理与状态机,AST的转换与插件化架构,生成渲染函数代码的具体实现。
- 如何实现一个符合WHATWG组织的HTML解析规范的解析器:解析器的文本模式、文本模式对解析器的影响,如何使用递归下降算法构造模板AST。如何根据规范解码字符引用。
- Vue.js 3.0中模板编译优化的相关内容:Block树的更新机制、动态节点的收集、静态提升、预字符串化、缓存内联事件处理函数、v-once等。
六、服务端渲染
- Vue.js 同构渲染的原理:CSR、SSR以及同构渲染等方案的优缺点。Vue.js进行服务端渲染和客户端激活的原理,编写同构代码时的注意事项。