概念
什么是工程化
编程项目经常重复的相关性操作,通过自动化完成,都可以称之为工程化。
因为本人从事web工作居多,所以尽量采用前端项目作为列举
个人理解的工程化应分为几个部分:
代码规范
- 对代码具体编写细节上的约束,大到文件类型分类规则,小到缩进多少空格是否添加分号等(js对Eslint、Tslint)
- 对代码进行格式(js的prettier,py的pep8)、
git规范
- 统一commit规范 (Angular、Atom 。。。)
- 统一的git配置(换行符等)
- changlog 自动生成
测试
打包部署
打包工具处理(webpack、rollup等)
docker
前端工程化
long long ago,js只能运行在浏览器之下,受沙盒安全策略的限制,基本无法对操作系统或者文件系统做任何定制,那时我们没有什么工程化,没有什么打包,撸起袖子一个index.html就可以开干,系统一点的会引入一些模板工具,pug(jade)、ejs等带引入机制的引擎,然后对项目目录做一个基本的自我约束,此时一个项目就搭建完成。
一切的一切在nodejs
出来之后发生了巨变,nodejs
的出现意味着前端工程师能用自己熟悉的js
语言对操作系统和文件系统进行深入的定制和修改,自此才出现了前端工程化,用js
来完全管理项目,将重复的工作打包,常用的功能打包。
常用的工程化工具有:
- webpack
- rollup
- esbuid
- vite
- Augulan
- gulp
可能每个人对前端工程化的定义都不同,本人觉得能自动完成重复工作的工具,都能归纳前段工程化中。
我理解的前端工程化
个人觉得前段工程化是一个非常广义的定义,不同编程语言或者说不同类型的项目,在不同阶段都有各自不同的定义。
前端项目:
- 规范化的版本管理(集中式或者分布式的git)
- 规范化的 commit
- 规范化的 change log
- 规范化的 release
- 代码测试
- 代码打包