今天是我参与「第五届青训营 」伴学笔记创作活动的第 17 天.
跨职能研发流程
- 整体上遵循:需求分析=>方案设计=→>开发=→>测试=>验收=→>发布流程
- 这只是主流程,并不适用于所有场景(例如: Hotfix、npm发包),重在理解各职能分工; 产品:决定做什么、验收方案、验证方案有效性;研发:开发、自测、承担部分运维职能等;测试:质量检测把关;
- 大量节点与“开发”无关;
- 复杂功能开发流程会复杂许多(集中在开发节点)。
- 实际场景中可能出现无数状况(风险管理):需求变更;上下游依赖发生问题(比如需求延期);疫情、天灾、人祸等不可抗力因素;
前端工程化
结合上述流程,前端在这个过程中需要做什么事情呢?简单梳理下来,至少有:
- 初始化项目;
- 功能开发;
- 集成&测试;
- 发布;
- 线上监控;
初始化项目
假如是已有仓库,初始化过程很简单,不外乎git clone/git rebase(or merge)两个命令。假如是新项目,那么你需要做很多技术选型:
- 代码组织: polyrepo vs monorepo
- 决定采用设计技术栈(React or Vue? Node or Java?AntD or ArcoDesign? CSR or SSR?),要做许多技术决策;
- 搭建工程化环境:构建工具、Lint工作流(ESLintlStyleLintPrettierIlLint-Staged/huscky)、UT工具、CICD 等;
- 资源部署:物理服务器、云服务器、faas、CDN(托管静态资源)等; 工欲善其事,必先利其器!这些逻辑,通常会被沉淀为脚手架工具(vue-cliCRA等),下次更迅速创建项目。
功能开发
- 工具效率
- 确保不犯错
- 安全性
集成和测试
Code Review,重在准入规则:经过谁、多少人的 approve后,可以合入代码;配合CR,通常还可以设置许多自动检测的准入条件(所谓的CI):
- 构建命令必须成功;
- Lint必须通过;
- 单测必须通过;单测覆盖率不能降低,且整体覆盖率必须大于阈值(或增量代码的覆盖率大于阈值);
- E2E测试必须通过;
- 性能diff 检查;
- 各类代码安全检查;
线上发布
- 小流量部署
- 灰度部署
- 秒级回滚