# 《前端工程化》 读书笔记
此书将前端工程化解读为一系列规范和流程的集合,目标是解决前端开发及前后端协作过程中的痛难点,涵盖项目的起始、开发、测试及部署环节。
前端需求和逻辑的不断加重是催生前端工程化的环境因素,前端相关技术、规范和工具的发展是其得以实施的必要前提。
工程化方案的核心目标之一就似乎在保证质量的前提下,尽可能提高产品的开发速度,减少低级的逻辑错误,提供稳定的部署。
前端工程化是整体 wbe 工作流中间的一个子集方案,是持续集成方案中的一环。
# 前端的技能栈
硬技能
对于 js/html/css ,掌握其语法和特性是最基本的,但这些只是应用能力,最终考量的仍是计算机体系的理论知识。数据结构、算法、软件工程等基础知识仍决定着一个前端工程师的上限。
软技能
良好的用户体验,包括内容的快速展现、操作的流畅度、减少设备的耗电量等,即提高产品的性能。
扩展知识 web 服务器端知识,了解 web 应用从前到后的工作流程和整体架构模型,有助于编写更合理的客户端逻辑,及定位问题。了解网络协议等。
# 工程化
# 初始:脚手架
脚手架:功能是创建项目初始文件,本质是方案的封装,其执行环境局限于本地。
对于业务开发人员,前端工程方案和工具就是个黑盒,他们不需要了解其中复杂原理,只需要知道如何配置、如何使用即可。
合理的前端工程体系是平缓的学习曲线,不应当强制要求业务开发人员学习各种细节。
# 第一步:构建
推荐工具:webpack。构建的核心是资源的管理。
- ES规范的实现
- CSS 的弱编程能力
- 资源定位问题
- 资源压缩问题
- 模块依赖的分析与压缩打包
- hash 指纹:应对浏览器缓存策略
# 第二步:本地开发服务器
- mock 服务:提供异步数据,模拟跨域场景
- 动态构建,浏览器自动刷新
# 第三步:静态资源和动态资源的分离部署
spa 单页面应用
- 可离线使用
- 后端只提供数据接口
- 前后端分别部署、维护
# 模块化
模块化属于架构层面的概念,工程化与模块化的关系类似车间与零件,工程化中构建体系的功能之一就是支持模块化规范并将散列的模块构建为利于部署的整合文件。
- 避免命名冲突
- 依赖管理
- 性能优化
- 提高复用性
- 提高可维护性
# 前端模块化方案
commonjs
ES6 Module 语言层面的规范。