前端工程化学习与理解,哪些在前端团队上需要做的(4年+经验总结)

462 阅读3分钟

之前被问什么是工程化,有点迷糊,后虚心请教:“工程化就像建房子一样,比如要先有基地,要怎么建,都有一个标准、规划性的东西......比如现在eslint编码规范要求或者是开发模块规范,在之前前端都是没有这种划分的的。。。。。。巴拉巴拉”,恍然大悟呀。于是去学习了下,整理了下目前能做的实在点。

用一张图来表示:

image.png

一、开发

1. 组件库-业务组件化

组件库,小团队一般直接用andt或者是element,大公司会有专门的公司内部组件库。对于项目而言,需要做的是提取出业务化的组件。

2. 模块化-按照模块划分文件夹

在开发过程中,应按照功能模块划分文件夹,而不是以菜单作为文件,举个简单的例子,

场景: test菜单页和user菜单页,有公共组件,但是它不是全局的只有在A模块内。

不合理❌:

  └── compontents📂
        └── A模块公用组件
        └── ...
  └── pages
    └── test
        ├── test.tsx
        └── compontent
    └── user
        ├── user.tsx
        └── compontent

按照菜单划分:把它写在compontents📂全局组件上是不合适的,因为那个组件可能需要请求数据,这时候就要把业务请求写在全局的公共组件文件夹里(或者是说再从pages里面引进请求),这就没有公用组件的意义了,并且非常奇怪。

合理✔:

  └── compontents📂
  └── pages
    └── A模块
       └── A模块公用组件
       └── test
           ├── compontent
           └── test.tsx
       └── user
           ├── compontent
           └── user.tsx

按照模块划分:全局的就全局组件,模块内的组件共用模块化内的组件,页面内的组件作为页面内的组件,做到组件和业务隔离,引用关系也很明了。

3. 技术选型

技术选型大到技术栈,再到脚手架,小到依赖包等。

个人认为主要有以下几个点:

  1. 能否满足现项目的需求,也是必须的。
  2. 选用的技术栈(组件库UI、脚手架等)是否还有在维护,文档是否齐全,市面上是否有成功的案例参考,或是start的数量,npm包下载量都是可以参考的,对于不明确的地方试下demo,确保项目开发过程中不会出现发现有些功能做不了了。
  3. 团队现有技术的储备,团队人员的技术也是参考范围之一,以及学习成本还有开发成本。

二、构建

  1. 静态资源等文件压缩
  2. 代码分割
  3. 构建优化

三、发布部署

  1. 持续部署-自动化 Jenkins
  2. nginx
  3. docker-容器化
  4. 静态资源部署策略

四、规范

1、git规范

commit提交规范
  1. 尽量小颗粒度提交代码,即多commit
  2. 根据编写的代码给commit增加提交类型前缀:
前缀说明
feat新功能或模块时候用
fix解决bug时候
style只修改样式,无修改逻辑
docs只修改文档时候
refactor重构时候
merge合并代码时候
revert回退回滚版本时候

版本分支命名规范化:

分支说明必要
master主分支作为给用户提供的分支同步线上,不能在该分支上做直接开发
develop作为开发分支,包含开发的最新功能,用于合并,不能在该分支上做直接开发否,视项目而定
feature用于新版本迭代,功能在此开发
hotfix紧急bug解决

例如,新版本迭代分支:feature/v1.20;运营提了一个线上用户bug需要紧急修复分支:hotfix/v3.10

代码审核code review:Gerrit

需不需要?视情况而定,这个我们团队在使用过程中并没有感觉很大的好处。

2、项目开发编码规范

//todo

有些地方需要遵守特定规范,有些地方需要做标准的规划设计流程,在这些“约束”条件下怎么方便怎么来,这种工程化才真正以利于个人和团队的协作开发。