Vue.js设计与实现
上QQ阅读APP看书,第一时间看更新

本书分为 6 篇,共 18 章,各章的简介如下。

  • 第一篇(框架设计概览):共 3 章。
    • 第1 章主要讨论了命令式和声明式这两种范式的差异,以及二者对框架设计的影响,还讨论了虚拟 DOM 的性能状况,最后介绍了运行时和编译时的相关知识,并介绍了 Vue.js 3.0 是一个运行时 + 编译时的框架。
    • 第2 章主要从用户的开发体验、控制框架代码的体积、Tree-Shaking 的工作机制、框架产物、特性开关、错误处理、TypeScript 支持等几个方面出发,讨论了框架设计者在设计框架时应该考虑的内容。
    • 第3 章从全局视角介绍 Vue.js 3.0 的设计思路,以及各个模块之间是如何协作的。
  • 第二篇(响应系统):共 3 章。
    • 第4 章从宏观视角讲述了 Vue.js 3.0 中响应系统的实现机制。从副作用函数开始,逐步实现一个完善的响应系统,还讲述了计算属性和 watch 的实现原理,同时讨论了在实现响应系统的过程中所遇到的问题,以及相应的解决方案。
    • 第5 章从 ECMAScript 规范入手,从最基本的 ProxyReflect 以及 JavaScript 对象的工作原理开始,逐步讨论了使用 Proxy 代理 JavaScript 对象的方式。
    • 第6 章主要讨论了 ref 的概念,并基于 ref 实现原始值的响应式方案,还讨论了如何使用 ref 解决响应丢失问题。
  • 第三篇(渲染器):共 5 章。
    • 第7 章主要讨论了渲染器与响应系统的关系,讲述了两者如何配合工作完成页面更新,还讨论了渲染器中的一些基本名词和概念,以及自定义渲染器的实现与应用。
    • 第8 章主要讨论了渲染器挂载与更新的实现原理,其中包括子节点的处理、属性的处理和事件的处理。当挂载或更新组件类型的虚拟节点时,还要考虑组件生命周期函数的处理等。
    • 第9 章主要讨论了“简单 Diff 算法”的工作原理。
    • 第10 章主要讨论了“双端 Diff 算法”的工作原理。
    • 第11 章主要讨论了“快速 Diff 算法”的工作原理。
  • 第四篇(组件化):共 3 章。
    • 第12 章主要讨论了组件的实现原理,介绍了组件自身状态的初始化,以及由自身状态变化引起的组件自更新,还介绍了组件的外部状态(props)、由外部状态变化引起的被动更新,以及组件事件和插槽的实现原理。
    • 第13 章主要介绍了异步组件和函数式组件的工作机制和实现原理。对于异步组件,我们还讨论了超时与错误处理、延迟展示 Loading 组件、加载重试等内容。
    • 第14 章主要介绍了 Vue.js 内建的三个组件的实现原理,即 KeepAlive、Teleport和Transition 组件。
  • 第五篇(编译器):共 3 章。
    • 第15 章首先讨论了 Vue.js 模板编译器的工作流程,接着讨论了 parser 的实现原理与状态机,以及 AST 的转换与插件化架构,最后讨论了生成渲染函数代码的具体实现。
    • 第16 章主要讨论了如何实现一个符合 WHATWG 组织的 HTML 解析规范的解析器,内容涵盖解析器的文本模式、文本模式对解析器的影响,以及如何使用递归下降算法构造模板 AST。在解析文本内容时,我们还讨论了如何根据规范解码字符引用。
    • 第17 章主要讨论了 Vue.js 3.0 中模板编译优化的相关内容。具体包括:Block 树的更新机制、动态节点的收集、静态提升、预字符串化、缓存内联事件处理函数、v-once 等优化机制。
  • 第六篇(服务端渲染):1 章。
    • 第18 章主要讨论了 Vue.js 同构渲染的原理。首先探讨了 CSR、SSR 以及同构渲染等方案各自的优缺点,然后探讨了 Vue.js 进行服务端渲染和客户端激活的原理,最后总结了编写同构代码时的注意事项。