内容简介 · · · · · ·
本书简介
本书将带领读者阅读 Vue.js 3.0 的源码,通过大量注释、流程图,将每部分源码的前因后果呈现给大家,帮助工程师地体会 Vue 框架的设计思想。全书共七部分,24 章,作者结合实际用例,循序渐进地介绍了 Vue.js 的整体设计、组件、响应式原理、编译和优化、实用特性、内置组件、官方生态等内容。阅读本书不仅可以深入理解Vue.js 的内核实现,还能学习到阅读源码的技巧,提高业务逻辑分析能力和重构代码的能力。
本书面向有 Vue.js、React 或者 Angular 等框架使用经验的,对源码设计感兴趣,渴望在技术方向进一步成长的开发者。
本书特色
Vue.js布道师匠心之作,Vue 3.0核心源码分析
1600+条注释,拆解核心源码,呈现框架源码的前因后果
代码细节、数据结构、算法妙用、设计思想,系统解读Vue.js的方方面面
1.直击...
本书简介
本书将带领读者阅读 Vue.js 3.0 的源码,通过大量注释、流程图,将每部分源码的前因后果呈现给大家,帮助工程师地体会 Vue 框架的设计思想。全书共七部分,24 章,作者结合实际用例,循序渐进地介绍了 Vue.js 的整体设计、组件、响应式原理、编译和优化、实用特性、内置组件、官方生态等内容。阅读本书不仅可以深入理解Vue.js 的内核实现,还能学习到阅读源码的技巧,提高业务逻辑分析能力和重构代码的能力。
本书面向有 Vue.js、React 或者 Angular 等框架使用经验的,对源码设计感兴趣,渴望在技术方向进一步成长的开发者。
本书特色
Vue.js布道师匠心之作,Vue 3.0核心源码分析
1600+条注释,拆解核心源码,呈现框架源码的前因后果
代码细节、数据结构、算法妙用、设计思想,系统解读Vue.js的方方面面
1.直击读者刚需,类型稀缺,本书是市面上鲜有的源码分析类图书。
2.内容全面,覆盖 Vue.js 核心和常用的知识点,以及 3.0 的新特性。图书大纲设计符合读者循序渐进学习的思维方式,深入浅出,课程不仅会讲 how,还会讲 why,且通过核心源码拆解、流程图的方式辅助讲解,更易于读者学习。
3.可实践性强,读者通过学习,对 Vue.js 实现原理能有充分的认识,在工作中遇到 Vue.js 相关的 bug 可以快速定位,提升工作效率;也可以修炼内功,提升个人技术能力,进而提升个人在市场中的竞争力。
4.作者在前端圈内有很好的口碑,是公众号“老黄的前端私房菜”的主理人,现zoom前端架构师,也是慕课网金牌讲师,他的课程在平台上销售过万,以其课程内容的优质质量著称,在前端圈有良好的口碑。
作者简介 · · · · · ·
黄轶,曾任职于百度、滴滴,现担任 Zoom 前端架构师,推进前后端分离架构方案,同时负责 Zoom 自研组件库 ZoomUI 的开发。专栏“Vue.js 3.0 核心源码解析”作者,14k star 开源项目 better-scroll 作者。慕课网明星讲师,教授“Vue.js 高仿开发饿了么外卖 App”“Vue 3 开发企业级音乐Web App”“Vue.js 源码全方位深入解析”等课程,帮助上万名学生完成 Vue.js 从入门到进阶的学习。
公众号“老黄的前端私房菜”主理人,不定期分享技术干货和软素质技能。
目录 · · · · · ·
第 一部分 Vue.js 的整体设计
第 1章 Vue.js 3.x 的优化 2
1.1 源码优化 2
1.1.1 monorepo 2
1.1.2 TypeScript 3
· · · · · · (更多)
第 一部分 Vue.js 的整体设计
第 1章 Vue.js 3.x 的优化 2
1.1 源码优化 2
1.1.1 monorepo 2
1.1.2 TypeScript 3
1.2 性能优化 4
1.2.1 源码体积优化 4
1.2.2 数据劫持优化 5
1.2.3 编译优化 7
1.3 语法API 优化 9
1.3.1 优化逻辑组织 9
1.3.2 优化逻辑复用 12
1.4 引入RFC 14
1.5 总结 14
第 2章 Vue.js 3.x 源码总览 15
2.1 源码目录结构 15
2.2 不同构建版本Vue.js 的使用场景 18
2.2.1 Runtime-only 与 Runtime + Compiler 19
2.2.2 CDN 直接使用 19
2.2.3 配合打包工具使用 20
2.2.4 服务端渲染使用 20
2.3 编译构建 21
2.3.1 收集编译目标 21
2.3.2 并行编译 21
2.3.3 单个编译 22
2.4 rollup 配置 23
2.4.1 输入与输出 24
2.4.2 external 27
2.4.3 插件配置 28
2.5 总结 31
*部分 组件
第3章 组件的渲染 34
3.1 什么是vnode 35
3.1.1 普通元素vnode 35
3.1.2 组件vnode 35
3.1.3 vnode 的优势 36
3.2 如何创建vnode 37
3.3 组件的挂载 41
3.3.1 设置副作用渲染函数 42
3.3.2 渲染组件生成subTree 43
3.3.3 subTree 的挂载 45
3.3.4 普通元素的挂载 46
3.3.5 组件的嵌套挂载 49
3.4 应用程序初始化 50
3.4.1 创建app 对象 50
3.4.2 重写app.mount 函数 52
3.4.3 执行mount 函数渲染应用 53
3.5 总结 54
第4章 组件的更新 55
4.1 渲染函数更新组件的过程 55
4.2 patch 流程 56
4.2.1 处理组件 58
4.2.2 处理普通元素 61
4.3 核心diff 算法 65
4.3.1 同步头部节点 66
4.3.2 同步尾部节点 67
4.3.3 添加新的节点 68
4.3.4 删除多余节点 69
4.3.5 处理未知子序列 71
4.3.6 移动子节点 73
4.3.7 建立索引图 74
4.3.8 更新和移除旧节点 75
4.3.9 移动和挂载新节点 78
4.3.10 *长递增子序列 80
4.4 总结 85
第5章 组件的实例 87
5.1 创建组件实例 87
5.2 设置组件实例 90
5.2.1 创建渲染上下文代理 92
5.2.2 上下文代理的优化 96
5.2.3 处理setup 函数 98
5.2.4 完成组件实例设置 103
5.2.5 兼容Options API 105
5.3 总结 107
第6章 组件的props 108
6.1 props 配置的标准化 109
6.2 props 值的初始化 112
6.2.1 设置props 113
6.2.2 验证props 117
6.2.3 响应式处理 119
6.3 props 的更新 120
6.3.1 触发子组件重新渲染 121
6.3.2 更新instance.props 121
6.3.3 把instance.props 变成响应式的 124
6.3.4 对象类型props 数据的更新 125
6.4 总结 128
第7章 组件的生命周期 129
7.1 注册钩子函数 130
7.2 onBeforeMount 和onMounted 132
7.3 onBeforeUpdate 和onUpdated 134
7.4 onBeforeUnmount 和onUnmounted 136
7.5 onErrorCaptured 137
7.6 总结 139
第8章 异步组件 140
8.1 defineAsyncComponent 141
8.1.1 渲染占位节点 143
8.1.2 加载异步JavaScript 模块 144
8.1.3 重新渲染组件 145
8.2 *用法 145
8.2.1 Loading 组件 146
8.2.2 Error 组件 147
8.3 只加载一次 150
8.4 总结 152
第三部分 响应式原理
第9章 响应式的内部实现原理 154
9.1 响应式对象的实现差异 155
9.2 reactive API 157
9.3 依赖收集 160
9.4 派发通知 164
9.4.1 副作用函数 166
9.4.2 嵌套effect 的场景 168
9.4.3 cleanup 的设计 169
9.5 响应式实现的优化 171
9.5.1 依赖收集的优化 171
9.5.2 trackOpBit 的设计 176
9.6 ref API 177
9.6.1 ref API 的优化 178
9.6.2 unref 180
9.7 shallowReactive API 182
9.8 readonly API 183
9.9 总结 185
第 10章 计算属性 186
10.1 computed API 186
10.2 计算属性的运行机制 190
10.3 嵌套计算属性 193
10.4 总结 193
第 11章 侦听器 195
11.1 watch API 的用法 196
11.2 watch API 的实现原理 196
11.2.1 标准化source 197
11.2.2 创建job 200
11.2.3 创建scheduler 201
11.2.4 创建effect 202
11.2.5 返回销毁函数 203
11.3 异步任务队列的设计 204
11.3.1 异步任务队列的创建 205
11.3.2 异步任务队列的执行 208
11.3.3 检测循环更新 211
11.4 watchEffect API 212
11.5 注册无效回调函数 215
11.6 侦听器调试 216
11.7 总结 219
第四部分 编译和优化
第 12章 模板解析 222
12.1 生成AST 223
12.2 创建解析上下文 226
12.3 解析子节点 227
12.3.1 生成AST 节点数组 228
12.3.2 注释节点的解析 230
12.3.3 插值的解析 232
12.3.4 普通文本的解析 233
12.3.5 元素节点的解析 234
12.3.6 空白字符处理 238
12.4 创建AST 根节点 240
12.5 总结 240
第 13章 AST 转换 242
13.1 创建transform 上下文 244
13.2 遍历AST 节点 246
13.2.1 Element 节点转换函数 247
13.2.2 表达式节点转换函数 252
13.2.3 Text 节点转换函数 254
13.2.4 条件节点转换函数 258
13.3 静态提升 266
13.4 创建根节点的代码生成节点 270
13.5 总结 272
第 14章 生成代码 273
14.1 创建代码生成上下文 276
14.2 生成预设代码 278
14.3 生成渲染函数的名称和参数 282
14.4 生成资源声明代码 283
14.5 生成创建vnode 树的表达式 285
14.6 运行时优化 298
14.7 总结 302
第五部分 实用特性
第 15章 依赖注入 304
15.1 provide API 305
15.2 inject API 307
15.3 对比模块化共享数据的方式 308
15.4 依赖注入的缺陷和应用场景 309
15.5 总结 313
第 16章 插槽 314
16.1 插槽的用法 314
16.2 插槽的实现 317
16.2.1 父组件的渲染 317
16.2.2 子组件的渲染 320
16.2.3 作用域插槽 325
16.3 总结 327
第 17章 自定义指令 328
17.1 指令的定义 329
17.2 指令的注册 330
17.3 指令的应用 331
17.4 总结 337
第 18章 v-model 指令 338
18.1 普通表单元素 338
18.2 自定义组件 342
18.3 自定义事件派发 345
18.4 v-model 修饰符 346
18.4.1 默认修饰符 347
18.4.2 带参数的修饰符 348
18.5 总结 350
第六部分 内置组件
第 19章 Teleport 组件 352
19.1 Teleport 实现原理 354
19.1.1 组件创建 355
19.1.2 组件更新 357
19.1.3 组件移除 359
19.2 总结 360
第 20章 KeepAlive 组件 362
20.1 组件的渲染 364
20.2 缓存的设计 366
20.3 props 设计 369
20.4 组件的卸载 370
20.5 总结 372
第 21章 Transition 组件 373
21.1 Transition 组件的用法 373
21.2 组件的核心思想 376
21.3 组件的实现原理 377
21.3.1 组件的渲染 380
21.3.2 钩子函数的执行 381
21.3.3 模式的应用 389
21.4 总结 391
第 22章 TransitionGroup 组件 392
22.1 组件的实现原理 392
22.1.1 组件的渲染 395
22.1.2 move 过渡实现 396
22.2 总结 399
第七部分 官方生态
第 23章 Vue Router 402
23.1 路由的基本用法 402
23.2 路由的实现原理 404
23.2.1 路由对象的创建 404
23.2.2 路由的安装 404
23.2.3 路径的管理 406
23.2.4 路径和路由组件的渲染的映射 413
23.2.5 守卫函数的实现 422
23.2.6 完整的导航解析流程 426
23.3 总结 435
第 24章 Vuex 436
24.1 Vuex 是什么 436
24.1.1 什么是“状态管理模式” 436
24.1.2 Vuex 核心思想 438
24.2 Vuex 初始化 438
24.2.1 创建store 实例 439
24.2.2 初始化模块 440
24.2.3 安装模块 445
24.2.4 重置state 453
24.2.5 Vuex 安装 456
24.3 API 457
24.3.1 数据获取 457
24.3.2 数据存储 459
24.3.3 语法糖 463
24.3.4 动态更新模块 469
24.4 插件 470
24.5 总结 474
· · · · · · (收起)
喜欢读"Vue.js技术内幕"的人也喜欢 · · · · · ·
Vue.js技术内幕的书评 · · · · · · ( 全部 15 条 )
vue.js技术内幕之我见
非常推荐的Vue源码阅读书籍
得心应手必需走的路-源码
《读Vue.js技术内幕有感》
这篇书评可能有关键情节透露
首先在我看来Vue是一个比较成熟的前端框架了,其也是从事前端开发小伙伴们必须要掌握的一个开发框架,毕竟使用Vue.js编写出来的界面效果本身就是响应式的,基于这种优点使得开发出来的网页在各种设备上都能显示出非常好看的效果,这也是当初吸引我学习Vue的地方。 前段时间在京... (展开)《Vue.js技术内幕》读后感
这篇书评可能有关键情节透露
作为一个 “成熟” 的前端开发,Vue框架是必须熟练掌握的,因为之前学习过黄轶老师慕课网Vue2的源码课《Vue技术揭秘》,大概刷了两遍,真的是受益匪浅,学到了太多,后面相关的Vue3的课程可能是写的比较早吧,内容不是很多。一直在期待着老师新的关于Vue3的课程,大概9月中旬,... (展开)《Vue.js技术内幕》读书有感-值得推荐的源码书籍
> 更多书评 15篇
论坛 · · · · · ·
在这本书的论坛里发言以下书单推荐 · · · · · · ( 全部 )
- 仅纸质版本 (豆友B-1hraWFjc)
- 编程 (图灵)
- 读书向 | JavaScript 相关书籍 (uge)
- 图灵新出版的技术书 (图灵社区)
- 书单|Web (gsn)
谁读这本书? · · · · · ·
二手市场
· · · · · ·
- 在豆瓣转让 有73人想读,手里有一本闲着?
订阅关于Vue.js技术内幕的评论:
feed: rss 2.0
1 有用 才难破赋意 2022-10-24 19:23:49 上海
正好关注到图灵出版社出了这本由黄轶老师撰写的《Vue.js技术内幕》,作为一名图灵的老读者,就第一时间拿下了。结合Vue3教程一起看,推荐vue3.chengpeiquan.com上面的《Vue入门教程》,我基本上是在看完一个概念后,看一些代码,然后再到黄老师这本书中去细细品读其中的内部原理,在这里面涉及到调用、算法、以及实例都写得很清晰。《Vue.js技术内幕》是一本用心之作,作为后端接触Vue... 正好关注到图灵出版社出了这本由黄轶老师撰写的《Vue.js技术内幕》,作为一名图灵的老读者,就第一时间拿下了。结合Vue3教程一起看,推荐vue3.chengpeiquan.com上面的《Vue入门教程》,我基本上是在看完一个概念后,看一些代码,然后再到黄老师这本书中去细细品读其中的内部原理,在这里面涉及到调用、算法、以及实例都写得很清晰。《Vue.js技术内幕》是一本用心之作,作为后端接触Vue.js的第二本书非常合适,当然需要多用功读几遍。 (展开)
8 有用 且听书吟 2022-10-18 08:54:21 安徽
通篇源码,干货较少。
1 有用 猫书一枚 2022-10-04 22:15:09
通读本书,你会发现前端框架的代码并没有多么高深,命令的背后,其实就是语言开发者给普通开发者节约了很多劳动,封装成一个命令,普通人员要知道这是个命令就够了。而这本书,讲的是命令背后的故事。所谓,知其然,也知其所以然。
9 有用 katiaotioyy 2022-10-07 11:50:53 广东
你真的别写书 写的什么玩意 直接贴源码得了 而且这书评一看都是刷的 一点进去个人中心都不是学技术的 专业好评是吧?
1 有用 沙漠的烦恼 2023-05-12 08:14:19 广东
大段代码甩脸上,没太多干货。作者写作之前,应该看看隔壁的设计与实现,这才是负责任的图书作者
1 有用 耶格派 2023-06-12 16:49:33 浙江
非常差的一本书,胡乱拼凑,就跟无头苍蝇一样的写,大量的源码堆砌
1 有用 沙漠的烦恼 2023-05-12 08:14:19 广东
大段代码甩脸上,没太多干货。作者写作之前,应该看看隔壁的设计与实现,这才是负责任的图书作者
0 有用 慢慢 2022-11-11 12:24:26 广东
看人吧!我入门的话感觉源码多还挺好的,作者讲的比较详细,算是手把手了。
1 有用 才难破赋意 2022-10-24 19:23:49 上海
正好关注到图灵出版社出了这本由黄轶老师撰写的《Vue.js技术内幕》,作为一名图灵的老读者,就第一时间拿下了。结合Vue3教程一起看,推荐vue3.chengpeiquan.com上面的《Vue入门教程》,我基本上是在看完一个概念后,看一些代码,然后再到黄老师这本书中去细细品读其中的内部原理,在这里面涉及到调用、算法、以及实例都写得很清晰。《Vue.js技术内幕》是一本用心之作,作为后端接触Vue... 正好关注到图灵出版社出了这本由黄轶老师撰写的《Vue.js技术内幕》,作为一名图灵的老读者,就第一时间拿下了。结合Vue3教程一起看,推荐vue3.chengpeiquan.com上面的《Vue入门教程》,我基本上是在看完一个概念后,看一些代码,然后再到黄老师这本书中去细细品读其中的内部原理,在这里面涉及到调用、算法、以及实例都写得很清晰。《Vue.js技术内幕》是一本用心之作,作为后端接触Vue.js的第二本书非常合适,当然需要多用功读几遍。 (展开)
0 有用 tly123456 2022-10-21 15:20:54 湖北
作为一名电子信息专业的工科学生,平时接触JAVA前端还不是太多,但是偶然一次上课的机会,JAVA编程老师给我们介绍了Vue.js这门技术,听完老师对这门技术的科普,以及自己课后的网上搜索和图书馆借书,我对它有个比较详细的了解。 这次突然看见图灵教育关于这本书推送的公众号,我立即就去京东上买了回来钻研。通读下来,我觉得这本书对前端开发的代码逻辑和编程思想有很深的讲解,通过边看书边实现书中的例子,我... 作为一名电子信息专业的工科学生,平时接触JAVA前端还不是太多,但是偶然一次上课的机会,JAVA编程老师给我们介绍了Vue.js这门技术,听完老师对这门技术的科普,以及自己课后的网上搜索和图书馆借书,我对它有个比较详细的了解。 这次突然看见图灵教育关于这本书推送的公众号,我立即就去京东上买了回来钻研。通读下来,我觉得这本书对前端开发的代码逻辑和编程思想有很深的讲解,通过边看书边实现书中的例子,我现在已经对Vue.js算是入了大门,之前只是小打小闹,现在已经对其非常深刻了。 这本书也是非常厚的一半技术书籍,书中我最喜欢的部分是对源码的解读,作者通过深厚的技术基础向读者展示了底层源码的逻辑和框架,章节也比较清晰,书的行文逻辑是先阐述如何使用,然后具体描述如何实现,其对于想学习前端技术小白和想 (展开)