具体描述
《前端架构:从入门到微前端》是一本围绕前端架构的实施手册,从基础的架构规范,到如何设计前端架构,再到采用微前端架构拆分复杂的前端应用。本书通过系统地介绍前端架构世界的方方面面,来帮助前端工程师更好地进行系统设计。
前端架构包含以下五部分内容。
设计:讲述了架构设计的模式,以及设计和制定前端工作流。
基础:通过深入构建系统、单页面应用原理、前端知识体系等,来构建出完整的前端应用架构体系。
实施:通过与代码结构的方式,介绍如何在企业级应用中实施组件化架构、设计系统和前后端分离架构。
微前端:引入6种微前端的概念,以及如何划分、设计微前端应用,并展示了如何实现这6种微前端架构。
演进:提出更新、迁移、重构、重写、重新架构等架构演进方式,来帮助开发人员更好地设计演进式架构
《前端架构:从入门到微前端》适合想要成为优秀前端开发工程师(初中级),或致力于构建更易于维护的系统架构的开发人员、技术主管、软件架构师和软件项目经理等。
作者简介
黄峰达(Phodal)
一个“极客”、创作者,喜欢在现实世界和虚拟世界中创造和分享。
喜欢分享软件开发经验,以帮助开发人员构建更好的软件系统。撰写了三本关于软件开发的书籍:《前端架构:从入门到微前端》《自己动手设计物联网》和《全栈应用开发:精益实践》。还是七本有关物联网和前端开发书籍的技术审阅者。
一位开源爱好者,在GitHub中创建了许多实用的开源软件。工作之余,喜欢重新发明一些“轮子”以获得乐趣。你可以在他的GitHub页面上找到更多的“轮子”。
目录信息
1.1 为什么需要软件架构 2
1.1.1 什么是软件架构 2
1.1.2 开发人员需要怎样的软件架构 3
1.2 架构的设计 4
1.2.1 收集架构需求 5
1.2.2 架构模式 10
1.2.3 架构设计方法 11
1.2.4 生成架构产出物 15
1.3 架构设计原则 16
1.3.1 不多也不少 16
1.3.2 演进式 17
1.3.3 持续性 19
1.4 前端架构发展史 20
1.5 前端架构设计:层次设计 21
1.5.1 系统内架构 22
1.5.2 应用级架构 23
1.5.3 模块级架构 24
1.5.4 代码级:规范与原则 25
1.6 小结 25
第2章 项目中的技术架构实施 27
2.1 技术负责人与架构 28
2.2 技术准备期:探索技术架构 30
2.2.1 架构设计 30
2.2.2 概念验证:架构的原型证明 30
2.2.3 迭代0:搭建完整环境 31
2.2.4 示例项目代码:体现规范与原则 32
2.3 业务回补期:应对第一次Deadline 33
2.3.1 追补业务 33
2.3.2 测试:实践测试策略 34
2.3.3 上线准备 35
2.3.4 第一次部署:验证部署架构 35
2.3.5 提升团队能力 36
2.4 成长优化期:技术债务与演进 39
2.4.1 偿还技术债务 40
2.4.2 优化开发体验 41
2.4.3 带来技术挑战 41
2.4.4 架构完善及演进 42
2.5 小结 43
第3章 架构基础:工作流设计 44
3.1 代码之旅:基础规范 45
3.2 代码组织决定应用架构 47
3.3 统一代码风格,避免架构腐烂 49
3.4 使用Lint规范代码 50
3.5 规范化命名,提升可读性 51
3.5.1 命名法 51
3.5.2 CSS及其预处理器命名规则 52
3.5.3 组件命名规则 53
3.6 规范开发工具,提升开发效率 54
3.7 项目的文档化:README搭建指南 55
3.8 绘制架构图:减少沟通成本 56
3.8.1 代码生成 56
3.8.2 专业工具 57
3.8.3 软件附带工具 57
3.8.4 在线工具 58
3.9 可编辑文档库:提升协作性 59
3.10 记录架构决策:轻量级架构决策记录 59
3.11 可视化文档:注重代码的可读性 60
3.12 看板工具:统一管理业务知识 62
3.13 提交信息:每次代码提交文档化 63
3.13.1 项目方式 63
3.13.2 开源项目方式 64
3.13.3 对比不同文档方式 65
3.14 通过流程化提高代码质量 66
3.14.1 代码预处理 67
3.14.2 手动检视代码 69
3.15 使用工具提升代码质量 70
3.15.1 代码扫描工具 70
3.15.2 IDE 快速重构 71
3.16 测试策略 72
3.16.1 单元测试 73
3.16.2 组件测试 75
3.16.3 契约/接口测试 76
3.17 小结 77
第4章 架构基础:设计构建流 78
4.1 依赖管理工具 81
4.2 软件包源管理 83
4.3 前端代码的打包 88
4.4 设计构建流 89
4.5 持续交付问题 99
4.6 小结 105
第5章 架构设计:多页面应用 107
5.1 为什么不需要单页面应用 108
5.1.1 构建成本 108
5.1.2 学习成本 109
5.1.3 后台渲染成本 110
5.1.4 应用架构的复杂性 111
5.2 简单多页面应用的开发 112
5.2.1 选择UI库及框架 113
5.2.2 jQuery和Bootstrap仍然好用 113
5.2.3 不使用框架:You Don’t Need xxx 114
5.3 复杂多页面应用的开发 115
5.3.1 模板与模板引擎原理 115
5.3.2 基于字符串的模板引擎设计 116
5.3.3 基于JavaScript的模板引擎设计 117
5.3.4 双向绑定原理及实践 120
5.3.5 前端路由原理及实践 124
5.3.6 两种路由类型 124
5.3.7 自造Hash路由管理器 125
5.4 避免散弹式架构 127
5.4.1 散弹式架构应用 127
5.4.2 如何降低散弹性架构的出现频率 128
5.5 小结 130
第6章 架构设计:单页面应用 131
6.1 前端MV*原理 132
6.2 前端MVC架构原理 133
6.3 进阶:设计双向绑定的MVC 135
6.4 前端框架选型 138
6.4.1 选型考虑因素 139
6.4.2 框架类型:大而全还是小而美 140
6.4.3 框架:React 142
6.4.4 框架:Angular 143
6.4.5 框架:Vue 145
6.4.6 选型总结 146
6.5 启动前端应用 146
6.5.1 创建应用脚手架 147
6.5.2 构建组件库 148
6.5.3 考虑浏览器的支持范围 150
6.6 服务端渲染 155
6.6.1 非JavaScript语言的同构渲染 155
6.6.2 基于JavaScript语言的同构渲染 157
6.6.3 预渲染 158
6.7 小结 159
第7章 架构设计:组件化架构 161
7.1 前端的组件化架构 161
7.2 基础:风格指南 163
7.2.1 原则与模式 163
7.2.2 色彩 165
7.2.3 文字排印 167
7.2.4 布局 168
7.2.5 组件 173
7.2.6 文档及其他 174
7.2.7 维护风格指南 174
7.3 重用:模式库 175
7.3.1 组件库 176
7.3.2 组件类型 178
7.3.3 隔离:二次封装 183
7.4 进阶:设计系统 184
7.4.1 设立原则,创建模式 186
7.4.2 原子设计 188
7.4.3 维护与文档 191
7.5 跨框架组件化 192
7.5.1 框架间互相调用:Web Components 192
7.5.2 跨平台模式库 193
7.6 小结 194
第8章 架构设计:前后端分离架构 195
8.1 前后端分离 196
8.1.1 为什么选择前后端分离 196
8.1.2 前后端分离的开发模式 197
8.1.3 前后端分离的API设计 198
8.2 API管理模式:API文档管理方式 202
8.3 前后端并行开发:Mock Server 205
8.3.1 什么是Mock Server 205
8.3.2 三种类型Mock Server的比较 207
8.3.3 Mock Server的测试:契约测试 212
8.3.4 前后端并行开发总结 217
8.4 服务于前端的后端:BFF 218
8.4.1 为什么使用BFF 218
8.4.2 前后端如何实现BFF 221
8.4.3 使用GraphQL作为BFF 223
8.5 小结 228
第9章 架构设计:微前端架构 229
9.1 微前端 230
9.1.1 微前端架构 230
9.1.2 为什么需要微前端 232
9.2 微前端的技术拆分方式 234
9.2.1 路由分发式 235
9.2.2 前端微服务化 236
9.2.3 组合式集成:微应用化 237
9.2.4 微件化 238
9.2.5 前端容器:iframe 239
9.2.6 结合Web Components构建 240
9.3 微前端的业务划分方式 241
9.3.1 按照业务拆分 242
9.3.2 按照权限拆分 243
9.3.3 按照变更的频率拆分 243
9.3.4 按照组织结构拆分 244
9.3.5 跟随后端微服务拆分 244
9.3.6 DDD与事件风暴 245
9.4 微前端的架构设计 245
9.4.1 构建基础设施 246
9.4.2 提取组件与模式库 246
9.4.3 应用通信机制 247
9.4.4 数据管理 248
9.4.5 专用的构建系统 249
9.5 微前端的架构模式 249
9.5.1 基座模式 250
9.5.2 自组织模式 251
9.6 微前端的设计理念 252
9.6.1 中心化:应用注册表 252
9.6.2 标识化应用 253
9.6.3 生命周期 253
9.6.4 高内聚,低耦合 254
9.7 “微”害架构 254
9.7.1 微架构 256
9.7.2 架构的演进 256
9.7.3 微架构带来的问题 257
9.7.4 解决方式:可拆分式微架构 259
9.8 小结 259
第10章 微前端实战 261
10.1 遗留系统:路由分发 262
10.1.1 路由分发式微前端 263
10.1.2 路由分发的测试 264
10.2 遗留系统微前端:使用iframe作为容器 266
10.3 微应用化 266
10.3.1 微应用化 267
10.3.2 架构实施 269
10.3.3 测试策略 271
10.4 前端微服务化 272
10.4.1 微服务化设计方案 273
10.4.2 通用型前端微服务化:Single-SPA 276
10.4.3 定制型前端微服务化:Mooa 279
10.4.4 前端微服务化总结 283
10.5 组件化微前端:微件化 283
10.5.1 运行时编译微件化:动态组件渲染 284
10.5.2 预编译微件化 287
10.6 面向未来:Web Components 288
10.6.1 Web Components 289
10.6.2 纯Web Components方式 291
10.6.3 结合Web Components方式 293
10.7 小结 295
第11章 架构演进:演进式架构 297
11.1 更新 298
11.1.1 依赖和框架版本升级 299
11.1.2 语言版本升级 300
11.1.3 遗留系统重搭 300
11.2 迁移 301
11.2.1 架构迁移的模式 302
11.2.2 迁移方式:微前端 303
11.2.3 迁移方式:寻找容器 303
11.3 重构 304
11.3.1 架构重构 304
11.3.2 组件提取、函数提取、样式提取 305
11.3.3 引入新技术 306
11.4 重写 307
11.4.1 重写能解决问题吗 308
11.4.2 梳理业务 309
11.4.3 沉淀新架构 310
11.5 重新架构 311
11.5.1 重搭架构 311
11.5.2 增量改写 312
11.6 小结 313
· · · · · · (收起)
读后感
用户评价
这本书的写作风格简直太对我的胃口了!作者的文笔流畅自然,一点都没有那种生硬的技术文档味儿,读起来就像是和一位经验丰富的前辈在私下交流心得体会一样。他总能用最贴近我们日常开发场景的例子来解释那些听起来很玄乎的概念,使得原本复杂的理论一下子变得清晰易懂。我记得有几处地方,作者对某个技术点进行了深入的剖析,不是简单地告诉你“怎么做”,而是告诉你“为什么这么做”,这种深层次的探究方式,极大地激发了我学习的欲望。而且,书中对于代码示例的呈现也做得非常到位,结构清晰,注释详尽,让人可以毫不费力地跟着作者的思路走。这种润物细无声的引导,远比那些枯燥的堆砌知识点的书籍要有效得多。读完一个章节,我总会有一种豁然开朗的感觉,这才是真正的高手之作。
坦白说,我是在一个朋友的强烈推荐下买的这本书,起初我还抱有一丝疑虑,毕竟市面上关于前端架构的书籍已经不少了。但当我真正接触到这本书的内容后,那种“相见恨晚”的感觉油然而生。作者在探讨技术问题时,展现出了一种极其冷静和辩证的视角。他不会盲目推崇某一种时髦的技术栈,而是会客观地分析不同架构方案的优劣势及其适用场景。这种成熟的、不偏不倚的论述方式,让我对前端架构的理解不再是“非黑即白”,而是充满了更多的可能性和权衡艺术。书中对于权衡(Trade-off)的讨论尤其深刻,这是许多初级读物往往忽略的关键点。对于我们这些在复杂项目中摸爬滚打的开发者来说,这种高阶的思考维度,才是真正能帮助我们做出正确技术决策的宝贵财富。
这本书在内容广度上的覆盖面令人印象深刻。它似乎没有放过任何一个与前端架构相关的重要环节,从最初的模块化管理,到后期的性能优化策略,再到面对日益增长的业务需求时如何设计可扩展的系统,都有着详尽的论述。尤其让我惊喜的是,作者在介绍一些前沿概念时,总能巧妙地结合历史背景进行铺垫,让读者明白这些新事物是如何从过去的痛点中演变而来的。这对于建立一个稳固的技术知识体系至关重要,它帮助我们理解技术发展的脉络,而不是仅仅停留在表面的API调用上。翻阅全书,我感觉自己像是在经历一场精心规划的技术演习,每一步都走得扎实有力,为我应对未来的技术挑战做好了充分的准备。这种“知其然,更知其所以然”的学习体验,是无价的。
哇,这本书的封面设计真的很有吸引力,那种现代感和专业感扑面而来,让人立刻想打开看看里面到底有什么真本事。我特别喜欢它在排版上的用心,字体选择和留白的处理都非常舒服,即便是长时间阅读也不会觉得眼睛累。而且,书本的装帧质量也挺高,拿在手里沉甸甸的,感觉物有所值。光是翻阅这本书的目录,就能感受到作者在内容组织上的清晰思路,从基础概念的梳理到进阶技术的探讨,层层递进,逻辑性很强。这本书给我的第一印象就是:这是一本值得收藏的硬核技术宝典。它不仅仅是一本用来快速查阅的技术手册,更像是一本能引导你系统性思考前端技术演进路径的导师。那种对知识体系的尊重和梳理,让我在还没深入阅读之前,就已经对作者的专业素养充满了信心。这本书的封面,就像是为那些对前端技术有追求的工程师准备的一张邀请函,邀请我们一起探索前端世界的广阔前景。
这本书的实战价值真的高到爆炸!它绝不仅仅是停留在理论层面的探讨,书中的许多章节都紧密围绕着大型项目中的实际难题展开,提供了大量可以立即应用到实际工作中的解决方案和设计模式。我特别喜欢其中关于团队协作和工程化流程的那部分,它清晰地阐述了如何通过架构设计来保障代码质量和团队效率的同步提升。对于我目前正在负责的一个老旧系统的重构项目来说,书中的某些章节简直就是一份救命稻草,让我找到了突破口和清晰的实施路线图。读完这本书后,我感觉自己的技术视野被极大地拓宽了,从一个单纯的“代码实现者”向一个具备全局视野的“系统设计者”转变,这对我职业发展来说是一个巨大的推动力。
值得一读,越读越香。看了两遍。
清晰易懂,提炼的不错。
关注作者公众号几年了,老实说一直不是很喜欢他的文章,因为水平比我高,因为写出来太理论太像翻译腔。这本书我觉得作为一本个人知识wiki来看品质是优秀的,但是书的结构不太好,可能是对内容定位不准吧。
值得一读,越读越香。看了两遍。
关注作者公众号几年了,老实说一直不是很喜欢他的文章,因为水平比我高,因为写出来太理论太像翻译腔。这本书我觉得作为一本个人知识wiki来看品质是优秀的,但是书的结构不太好,可能是对内容定位不准吧。