/*#__PURE__*/
注释,可告知构建工具哪些函数无副作用,可安全移除。__DEV__
常量,在生产环境移除调试代码。/*#__PURE__*/
注释,优化代码体积。<script>
标签、打包工具和 Node.js 环境。registerErrorHandler
函数,用户可注册自定义错误处理程序。WeakMap
存储依赖关系,避免内存泄漏。
computed
值时才执行计算,并缓存结果。A: 这种架构兼顾了灵活性和性能。运行时允许动态创建组件,编译时可分析模板,提取关键信息,用于运行时优化。
A: Tree-Shaking 指的是消除那些永远不会被执行的代码,也就是排除 dead code 。Vue.js 3 中利用 Tree-Shaking 机制配合构建工具,移除未使用的代码,减小打包体积。
A: ref 是一种包裹原始值的响应式方案,解决 JavaScript 的 Proxy 无法代理原始值的问题。响应式对象基于 Proxy 直接代理对象属性。
A: 客户端激活是同构渲染的关键步骤。它将服务端渲染的静态 HTML “激活”为可交互的 Vue.js 应用,包括: - 在 DOM 元素与虚拟节点对象之间建立联系。 - 为 DOM 元素添加事件绑定。
A: Block 本质上也是一个虚拟 DOM 节点,只是多出了一个用来存储动态子节点的 dynamicChildren 数组。 在 Diff 过程中, 渲染器能够根据 Block 的 key 值区分出更新前后的两个 Block 是不同的, 并使用新的 Block 替换旧的 Block 。 在 Vue.js 3 中, 只有根节点, v-for 、 v-if/v-else-if/v-else 等结构化指令的节点, 都应该作为 Block 角色。
本书适合对 Vue.js 2/3 具有一定上手经验,并希望深入理解 Vue.js 框架设计原理的开发人员。同时,本书也适合没有使用过 Vue.js,但对前端框架设计感兴趣的前端开发人员。通过阅读本书,读者可以了解 Vue.js 3 的核心设计思想,掌握框架设计的核心要素,并能够将这些知识应用到其他领域进行架构设计。此外,本书还可以帮助读者掌握阅读和理解规范的方法,并据此编写代码。
Vue.js 3.0 于 2020 年 9 月 18 日正式发布,是 Vue.js 框架的一个重要里程碑。它在 Vue.js 2 的基础上进行了诸多改进和创新,包括性能优化、模块化设计、TypeScript 支持等方面。本书的创作背景是 Vue.js 3 发布后,为了帮助开发者更好地理解和应用这一新版本,作者结合自身参与 Vue.js 3 源码维护的经验,深入分析了其设计思路和实现细节。