编辑推荐
前端架构是一系列工具和流程的集合,旨在提升前端代码质量,并实现高效、可持续的工作流。对于大型Web项目,前端架构师和软件架构师同样不可或缺。
本书作者通过Red Hat公司真实案例分析以及以往经验积累的实用技巧,系统总结了前端架构的四个核心,详细展示了新的前端开发准则,将Web开发提升到了一个新高度。
前端架构四个核心:
● 代码——如何实现系统架构中的HTML、CSS和JavaScript
● 流程——构建高效并且防止出错的工作流所需要的工具和流程
● 测试——为网站搭建稳固基础
● 文档——规划好系统设计蓝图
前端架构师职责:
● 体系设计——清晰描绘产品和代码的最终形态
● 工作规划——制定完整开发工作流
● 监督跟进——保证项目高效率完成
内容简介
本书展示了一名成熟的前端架构师对前端开发全面而深刻的理解。作者结合自己在Red Hat公司的项目实战经历,探讨了前端架构原则和前端架构的核心内容,包括工作流程、测试流程和文档记录,以及作为前端架构师所要承担的具体开发工作,包括HTML、JavaScript和CSS等。
作者简介
【作者介绍】
Micah Godbolt,前端架构师,作家,播客播主,世界ji开源大会的培训师和演讲师。他在个人博客(https://micahgodbolt.com)中经常大力推广前端架构、Sass、视觉还原测试和基于模式的设计方法。他出生于太平洋西北地区,目前和妻子以及两个孩子定居于波特兰的郊区。
【译者介绍】
潘泰燊
毕业于广东外语外贸大学,曾就职于腾讯、百度等互联网公司,参与过腾讯QQ空间、百度地图等海量数据业务的Web开发工作,现就职于富途网络。
张鹏
硕士毕业于中山大学,曾就职于百度、腾讯等知名互联网公司,参与过基于LNMP架构的亿级别互联网应用的设计与实现,目前从事NodeJS与前端开发。
许金泉
毕业于深圳大学,毕业后加入百度FEX,曾主导UEditor、百度国际化浏览器等前端开发工作,现就职于腾讯云。
【审校介绍】
李弦
华为2012实验室UCD交互设计师,Monash University交互设计硕士,前新东方英语教师,广东外语外贸大学英语专业八级。
目录
前言 xi
第一部分 引言
第 1 章 前端架构原则 7
第 2 章 Alpha 项目 11
2.1 慢而有力的开端 11
2.2 全副武装 12
第 3 章 前端架构的核心 15
3.1 围绕四个核心工作 15
3.2 四个核心的含义 16
第二部分 代码核心
第 4 章 HTML 19
4.1 过去处理标记的方法 19
4.1.1 程序式标记:自动化程度 100%,可控程度 0% 19
4.1.2 静态标记:自动化程度 0%,可控程度 100% 20
4.2 平衡可控性和自动化 21
4.3 这一切背后的设计系统 22
4.4 模块化 CSS 理论的多面性 22
4.4.1 OOCSS 方法 23
4.4.2 SMACSS 方法 23
4.4.3 BEM 方法 24
4.5 选择适合的方案 25
第 5 章 CSS 27
5.1 特性之争与继承之痛 28
5.2 一种现代的、模块化的方法 30
5.3 其他有助益的原则 32
5.3.1 单一职责原则 32
5.3.2 单一样式来源 33
5.3.3 组件修饰符 34
5.4 小结 35
第 6 章 JavaScript 37
6.1 选择框架 37
6.2 维护整洁的 JavaScript 代码 38
6.2.1 保持代码整洁 38
6.2.2 创造可复用的函数 38
6.3 小结 40
第 7 章 Red Hat 代码 41
7.1 过多的依赖 41
7.2 严重的位置依赖问题 42
7.3 设计分解 42
7.4 组件分类 43
7.5 BB 鸟规则 44
7.6 编写你自己的规则 44
7.7 每个标签指定唯一的选择器 46
7.7.1 单一责任原则 46
7.7.2 样式只有单一的来源 47
7.7.3 可选的修饰符 47
7.7.4 可选的上下文 50
7.8 语义化的网格 53
第三部分 流程核心
第 8 章 工作流 57
8.1 过去的开发工作流 57
8.2 现代的开发工作流 58
8.2.1 需求 58
8.2.2 原型设计 58
8.2.3 程序开发 58
8.3 前端工作流 59
8.3.1 必要的工具 59
8.3.2 本地部署 59
8.3.3 编写用户故事 60
8.4 开发 61
8.5 发布 62
8.6 提交编译后的资源 62
8.7 持续集成的服务器 63
8.7.1 标签分支 64
8.7.2 究竟为什么要这么做 64
8.8 发布渠道 64
第 9 章 任务处理器 67
9.1 在任务处理器中完成一切 68
9.2 在项目中使用任务处理器 69
9.3 有明显的优胜者吗 71
第 10 章 Red Hat 流程 73
10.1 征服最后一英里 73
10.2 模式驱动的设计系统 75
第四部分 测试核心
第 11 章 单元测试 87
11.1 单元 87
11.1.1 更多重用 88
11.1.2 更好的测试 88
11.2 测试驱动的开发 88
11.3 一个测试驱动的例子 89
11.4 测试覆盖率要多大才足够 90
11.4.1 解决分歧点 90
11.4.2 从测试覆盖率开始 90
第 12 章 性能测试 91
12.1 制定性能预算 91
12.1.1 竞争基线 92
12.1.2 平均基准 92
12.2 原始指标 93
12.2.1 页面大小 93
12.2.2 HTTP 请求次数 94
12.3 计时度量 94
12.4 混合度量标准 95
12.4.1 PageSpeed 分数 95
12.4.2 Speed Index 指标 95
12.5 设置性能测试 95
12.5.1 Grunt PageSpeed 插件 96
12.5.2 Grunt Perfbuget 插件 96
12.6 小结 97
第 13 章 视觉还原测试 99
13.1 常见的质疑 99
13.1.1 不了解情况的开发者 100
13.1.2 不一致的设计 100
13.1.3 举棋不定的决策者 100
13.2 一个经过测试的解决方案 101
13.3 视觉还原测试的多面性 101
第 14 章 Red Hat 测试方法 103
14.1 实践视觉还原测试 103
14.1.1 测试工具集 103
14.1.2 设置 Grunt 104
14.1.3 测试文件 104
14.1.4 对比 105
14.1.5 运行全部测试用例 106
14.1.6 如何应对测试失败 107
14.1.7 从失败到成功 107
14.1.8 修改代码以适应需求 108
14.1.9 将基准图片放在组件目录里 108
14.1.10 独立运行每个组件的测试集 109
14.1.11 测试的可扩展性 110
14.2 小结 111
第五部分 文档核心
第 15 章 样式文档 117
15.1 配置 Hologram 117
15.1.1 Hologram 的文档注释块 119
15.1.2 Hologram 编译流程 120
15.1.3 Hologram 小结 121
15.2 SassDoc 121
15.2.1 安装 SassDoc 121
15.2.2 使用 SassDoc 122
15.2.3 探索 SassDoc 123
15.2.4 深入了解 SassDoc 124
15.2.5 内部依赖 125
15.3 小结 127
第 16 章 图形库 129
16.1 何为 Pattern Lab 129
16.2 运行 Pattern Lab 131
16.3 首页模板 133
16.4 首变量 134
16.5 原子 135
16.6 发挥原子的作用 135
第 17 章 Red Hat 文档 137
17.1 阶段 1:静态的样式文档 137
17.2 阶段 2:重写 Pattern Lab 139
17.3 阶段 3:分拆模式库和样式文档 142
17.4 阶段 4:创建统一的渲染引擎 143
17.5 阶段 5:自动创建新模式 144
第 18 章 总结 147
作者介绍 149
封面介绍 149
《前端架构设计》 内容概要 本书是一本深入探讨现代前端架构设计理念、原则、模式与实践的专业著作。它旨在为前端开发者、技术负责人、架构师以及对前端技术体系化构建感兴趣的读者提供一份全面而系统的指南。本书并非对现有前端框架或工具的简单罗列,而是着眼于更深层次的思考——如何在复杂多变的业务需求和技术环境中,搭建出稳定、可维护、高性能、易扩展的前端系统。 核心主题与章节概述 全书围绕“构建健壮、高效、面向未来的前端系统”这一核心目标展开,涵盖了从宏观的架构思维到微观的具体实践。 第一部分:前端架构的基石与演进 第一章:前端演进与架构的必然性 追溯前端技术从简单的静态页面到如今的复杂应用的发展历程,分析其演进背后的驱动力,如用户体验的提升、业务复杂度的增加、跨平台需求的涌现等。 阐述为何在复杂前端项目中,缺乏清晰的架构设计会导致代码混乱、维护困难、性能瓶颈频发、开发效率低下等问题。 引入“架构”的概念,强调其在项目生命周期中的重要性,以及在早期引入良好架构的价值。 第二章:架构设计的核心原则 高内聚、低耦合: 深入剖析这两个经典软件工程原则在前端语境下的具体体现,例如模块化、组件化、服务化等。 关注点分离(SoC): 如何在前端将UI、业务逻辑、数据请求、状态管理等不同关注点进行有效分离,使代码结构更清晰。 可预测性与可测试性: 讨论如何设计出易于理解、行为可预测的系统,并为自动化测试奠定基础。 性能与可伸缩性: 探讨在架构层面如何考虑加载性能、运行时性能以及未来业务增长带来的扩展性需求。 可维护性与可读性: 强调代码的规范性、文档的重要性,以及如何通过良好的架构设计降低理解和修改成本。 一致性与统一性: 在大型项目或团队协作中,如何通过架构保持技术选型、代码风格、开发模式的一致性。 第二部分:前端架构的核心模式与实践 第三章:模块化与组件化架构 模块化: 探讨ES Modules、CommonJS等模块化规范,以及如何在项目中构建清晰的模块边界,实现代码的按需加载与复用。 组件化: 深入讲解组件化设计的理念,包括组件的定义、职责、通信方式(props, events, context API, state management patterns)等。 原子设计(Atomic Design)等组件化方法论: 介绍如何从原子、分子、组织、模板到页面的层级构建可复用、可组合的UI组件库。 设计模式在组件化中的应用: 如组合优于继承、容器组件与展示组件分离等。 第四章:状态管理架构 本地状态与全局状态: 区分不同维度的状态,并讨论其管理策略。 状态管理模式: 详细介绍Flux、Redux、Vuex、MobX等主流状态管理模式的核心思想、优缺点及其适用场景。 React Context API与Hook: 在不引入大型状态管理库的情况下,如何利用React内置特性管理状态。 高级状态管理技巧: 如Selector模式、memoization、异步状态处理、副作用管理等。 状态管理的性能优化: 避免不必要的重渲染,选择合适的状态管理方案。 第五章:数据请求与API交互架构 数据请求的抽象与封装: 如何将HTTP请求逻辑集中化,封装成统一的服务层。 RESTful API设计原则回顾(从前端视角): 理解API的结构和设计对前端开发的影响。 GraphQL在前端的应用: 介绍GraphQL的优势,如何处理客户端查询、减少过度获取(over-fetching)和欠度获取(under-fetching)问题。 请求缓存与离线支持: 讨论HTTP缓存、内存缓存、Service Worker等技术在提升性能和实现离线访问中的作用。 API版本管理与错误处理: 建立健壮的API交互机制。 第六章:路由与导航架构 声明式路由与命令式路由: 区分不同路由模式,以及它们在SPA中的应用。 嵌套路由、动态路由、路由守卫: 讲解如何构建复杂的导航结构,并实现权限控制、页面加载逻辑等。 路由懒加载(Code Splitting): 通过路由懒加载优化首屏加载性能。 路由状态管理: 如何在复杂应用中管理路由状态,实现URL与应用状态的同步。 第七章:工程化与构建系统 构建工具的角色与演进: 从Grunt、Gulp到Webpack、Rollup、Vite等,理解不同构建工具的核心能力。 模块打包与依赖管理: 深入解析Webpack等工具的工作原理,如loader、plugin、chunk、bundle等概念。 代码转换与预处理: Babel、TypeScript、Sass/Less等的作用。 性能优化: 代码压缩、Tree Shaking、Scope Hoisting、资源优化(图片、字体)等。 开发体验优化: Hot Module Replacement (HMR)、Dev Server、Source Map等。 CI/CD与自动化构建: 将构建流程集成到持续集成与持续部署流程中。 第三部分:高级主题与未来展望 第八章:性能优化策略与架构考量 首屏加载优化: 关键渲染路径、DOMContentLoaded、Load事件、预加载、预渲染等。 运行时性能优化: 虚拟列表、事件委托、节流与防抖、Web Workers、性能监控与分析工具的使用。 内存管理与垃圾回收: 前端内存泄漏的常见原因及避免方法。 浏览器渲染原理与架构决策: 理解重排(Reflow)和重绘(Repaint),以及它们对架构设计的影响。 第九章:可维护性、可扩展性与团队协作 代码规范与风格指南: ESLint、Prettier等工具的配置与团队协作。 文档的重要性: JSDoc、Markdown等编写规范。 代码审查(Code Review)机制: 如何通过Code Review提升代码质量和知识共享。 版本控制策略: Git Flow、GitHub Flow等。 微前端架构: 介绍微前端的概念、优势、挑战及实现模式,如何将大型前端应用拆分成独立可部署的小型应用。 第十章:安全性与可访问性(Accessibility, A11y) 前端安全基础: XSS、CSRF等常见安全漏洞的防范。 数据安全: Sensitive Data Handling、HTTPS。 可访问性设计原则: WCAG指南,如何设计能够被残障人士使用的Web应用。 ARIA(Accessible Rich Internet Applications)的使用。 第十一章:测试与质量保障 单元测试、集成测试、端到端测试: Jest、Mocha、Cypress、Playwright等工具的使用。 测试驱动开发(TDD)与行为驱动开发(BDD)在前端的应用。 自动化测试策略: 如何构建全面的自动化测试体系。 第十二章:前端架构的未来趋势 Server-Side Rendering (SSR) / Static Site Generation (SSG) / Incremental Static Regeneration (ISR): 探讨同构应用、预渲染等技术如何平衡SEO、性能和开发体验。 Web Components: 及其在跨框架组件化中的潜力。 低代码/无代码平台对前端架构的影响。 WebAssembly(Wasm)的引入。 AI在前端开发中的应用展望。 本书特色 体系化: 并非零散知识点的堆砌,而是从宏观到微观,层层递进,构建完整的知识体系。 实践导向: 结合大量实际项目中的挑战与解决方案,提供可操作的指导。 深入浅出: 复杂的技术概念用清晰易懂的语言解释,配以图示和代码示例。 前瞻性: 关注前端技术发展的最新趋势,帮助读者构建面向未来的系统。 通用性: 理论与实践适用于主流前端框架(React, Vue, Angular等),强调底层原理与设计思想,而非特定框架的API。 目标读者 有一定前端开发经验,希望提升技术深度和广度的开发者。 需要负责或参与前端项目架构设计的技术负责人、架构师。 对如何构建稳定、高性能、可维护的前端系统感兴趣的任何技术人员。 需要理解前端技术演进和未来发展方向的团队管理者。 如何阅读本书 本书可以从头到尾按章节顺序阅读,以建立完整的认知体系。也可以根据自身的实际需求,选择感兴趣的章节进行深入学习。每一章节都包含核心概念、原理讲解、实际应用案例以及思考题,鼓励读者主动实践,将理论知识转化为解决实际问题的能力。 结语 前端技术的飞速发展,对开发者提出了更高的要求。本书希望成为您在前端架构设计道路上可靠的伙伴,帮助您拨开技术的迷雾,构建出真正优秀、经得起时间考验的前端系统。