浅学前端开发流程 | 青训营笔记

208 阅读4分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 19 天

一、本堂课重点内容:

本堂课的知识要点有哪些?

  • 引言
  • 前端工程化
    • 初始化项目
    • 功能开发
    • 集成&测试
    • 上线发布
    • 线上监控
  • 小结

二、详细知识点介绍:

引言

当下开发流程框架不拘泥于固定的格式,而是取决于场景的适配而灵活调整:

  • 需求复杂度
  • 团队规模
  • 基础设施建设

以能否提升交付效率以及质量为主要目标。

在团队协作的过程中,不断发现问题,纠正问题,迭代改善,优化流程是开发流程中的一部分。

整体上遵循:需求分析=>方案设计=>开发=>测试=>验收=>发布的基本流程

职能分工:

  • 产品:做什么?怎么做?验收方案,验证有效性;
  • 研发:开发,自测,承担部分运维等;
  • 测试:质量检测。

风险管理:

  • 需求变更
  • 上下游依赖关系
  • 各种不可抗力因素
  • ...

前端工程化

前端的主要工作:

  • 参与方案评审&讨论
  • 初始化项目
  • 功能开发
  • 集成&测试
  • 发布
  • 线上监控

初始化项目

已有仓库的项目: git clone / git rebase(or merge)

新项目:

  • 代码组织:polyrepo vs monorepo
  • 技术栈的选择:(React or Vue & Node or Java & AntD or ArcoDesign & CSR or SSR)
  • 构建工程化环境:构建工具,Lint工作流(ESLint/StyleLint/Prettier/Lint-staged/husky),UT工具,CI/CD等
  • 资源部署:物理服务器,云服务器,faas,CDN(托管静态资源)等

为便于后续开发,将该部分逻辑沉淀为脚手架工具(vue-cli/CRA等)

功能开发

分支模型

  • Feature Based Development

image.png

基于特征的开发工作流程 — 或GitFlow— 是软件工程的经典方法。开发单个功能是基于功能的工作流的主要重点。它与基于主干的工作流的主要区别之一是,它从不将代码更改推送到主分支。

  • Trunk Based Development

image.png

Trunk based Development,又叫 主干开发 ,是一套代码分支管理策略,开发人员之间通过约定向被指定为 主干 的分支提交代码,以此抵抗因为长期存在的多分支导致的开发压力。此举可 避免分支合并的困扰,保证随时拥有可发布的版本 。

效率工具:

  • IDE效率:恰当的配置&插件环境,提升团队协作效率
  • 单测效率:按需单测、单测覆盖率
  • 构建效率:按需构建、构建逻辑优化、构建缓存

避免出错:

  • 接入Typescript、ESLint、StyleLint、Prettier、Lint-staged、commitLint等,解决代码风格,类型安全问题
  • UT(jest/vitest等)保障代码运行效果

以上工具具备一定上手难度,甚至吹毛求疵,但是可以利于长期维护

安全保障:

  • 如何避免混入有问题的npm模块?
  • 如何确保产物不出现敏感信息(如GitHub token)?

集成&测试

Code Review

设置规则:经手主体?approve流程以及频次?merge方案?

CI: 配合Code Review,设置自动检测的准入条件

  • 构建命令必须OK
  • 单测必须OK;单测覆盖率不可降低,整体覆盖率大于阈值(or 增量代码的覆盖率大于阈值)
  • E2E测试必须OK
  • 性能diff检查
  • 代码安全检查

上线发布

小流量部署

设置独立的发布环境(集成联调环境),请求流量命中特定规则(如特定header),转发流量到该环境,用于开发预览、功能测试等

灰度部署

设置独立的发布环境(集成联调环境),请求流量命中特定规则(如特定用户组、特定地理位置、特定机房),转发流量到该灰度环境,用于上线前的功能验证、开发实验等

秒级回滚

即便已经上线,也要提供一套稳定方案,可以秒级回滚到上一个版本

线上监控

监控目标

  • 性能
  • 异常
  • 业务指标

可参考: 学习前端监控 SDK 开发 | 青训营笔记 - 掘金

小结

前端工程化,是由团队技术栈、项目复杂度、开发流程等要素设计、构建而来,旨在提升团队协作开发效率。

重点涵盖:

  • 需求的准入准出:定义做什么、工作目标;开发完成后的持续监测,结果导向,对结果负责。
  • 从左到右的开发规范:项目开发过程中利用相应工具保障开发规范,保证对过程负责。

三、引用参考: