Skip to main content

概念

什么是工程化

编程项目经常重复的相关性操作,通过自动化完成,都可以称之为工程化。

因为本人从事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
  • 代码测试
  • 代码打包