😶‍🌫️ 浅谈我对于前端工程化的理解

147 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第6天,点击查看活动详情

什么是前端工程化?

工程化即系统化、模块化、规范化,旨在提高前端系统的生产效率。

解决了什么问题?

工程化解决的问题是,如何去提高编码、测试、维护阶段的生产效率。

前端工程化的实践

构建编译

比如打包工具:

最早的gulp,也叫做任务运行器(task runner)。就是对单个文件使用对应的编译规则,但也正是因此,导致难以进行全局优化。

到后面的webpack,根据不同的依赖文件,形成依赖图,并且基于此我们可以进行优化,比如做treeshaking等。

再到vite,采用了no bundle的形式,这个形式也是因为浏览器支持esm而推出的,解决了项目过大时,webpack开发环境打包速度之慢。

格式化

提到了打包工具的编译构建,同时还有在我们编写代码时候的一系列lint,格式化工具。

比如eslint对于js代码的格式化、tsc对于ts类型的检查、stylelint对于css文件的检查

CI/CD

持续集成,提交你的分支之后,你的代码通过流水线检查,并且构建,目的是让产品可以快速迭代,同时还能保持高质量,保证团队开发人员提交代码的质量,减轻了软件发布时的压力;

持续部署,结合代码托管平台使用,将不同tag的主分支快速发布到生产环境。对于前后端,测试,运维人员都能实现敏捷迭代,快速回滚。

代码管理

multirepo(一个项目一个仓库) vs monorepo(多个项目一个仓库)

monorepo解决问题:

1.实现了多个项目间的代码复用。

2.项目基建成本的降低,比如:无需多个项目多个CI等发布流程,使用同一套lint规范等等。

3.解决了多项目间的调试,比如a项目依赖b项目,若是monorepo架构,省去了npm link的操作。

4.解决了依赖管理问题,进行多项目间的公共依赖提取。

WIP...

总结:

前端工程化就是处理前端代码的一系列工具链集合,这些工具会对你的代码进行一系列处理。比如编译构建、ci/cd、代码托管、静态分析、格式化等。