【青训营】- 第10天前端工程化2

217 阅读3分钟

实战

因为之前的好几个课程没有安排好精力投入学习,很有压力,所以听课的时候状态比较低落,注意力不集中,课上其实没有觉得这节课都多么惊喜,课后看着课件做笔记,才发现老师的课件内容简直是宝藏。好感谢讲师大大的分享,让我对软件工程化、前端工程化有了足够的理解和思考。

打造/实现一个前端工程化方案

标题
规范化建立规范:建立符合实际需求的规范;确保规范被落地执行
模块化沉淀(使用)模块:通过可复用模块提升效率和质量(工具、平台、组件、函数库等)
自动化执行将研发流程中涉及到的工作自动化完成

《整体架构图》的表格化 《研发流程和规范图》的表格化

  1. 定义开发流程和规范
  2. 打造工程脚手架
  3. 打造自动化CI/CD
研发流程和规范
定义脚手架CI/CD
【需求-设计】【研发-调试-构建】【集成-部署-运维】
研发流程和规范脚手架CI/CD
1. 规范化编码风格1. 生成工程模板1. 自动化集成,构建/检测
2. 规范化目录结构2. dev调试2. 自动化交付,保存记录和产物
3. 规范化代码提交3. 构建生产3. 自动化部署,产品部署到服务器
4. 规范化研发流程4. 规范检测

准备工作

1. 服务器

  • Docker
  • Docker Image:Github、Jenkins、Nginx

2. 开发机

  • Git
  • Node
# jenkins
docker run -u root --rm -d -p 6001:8080 -p 50000:50000 -v jenkins-datqa:/var/jenkins_home -v /var/run/docker .sock:/var/run/docker.sock jenkinsci/blueocean

# gitlab
docker run -d -p 8443:443 -p 8222:22 -p 6002:80 --name gitlab --volume $HOME/gitlab/config:/etc/gitlab --volume $HOME/gitlab/logs:/var/log/gitlab --volume $HOME/gitlab/data:/var/opt/gitlab --privileged --restart always gitlab/gitlab-ee:latest

# nginx
docker run -d --name nginx -p 80:80 nginx:latest

制定和落地规范

  1. 参考业界规范,形成自己的规范
  2. 利用prettier、lint、git hook在代码提交和CI过程中强制落地规范
npm install -D prettier
npm install -D eslint
npm install -D husky
npm install -D lint-staged

开始战斗

脚手架:项目创建

【脚手架-创建工程模板-安装依赖】

脚手架:项目创建 & 运行

npm install -g create-react-app
create-react-app qingxunying-example
cd qingxunying-example

npm start

脚手架:代码提交 & 前置检测

项目研发/调试:

【本地开发-本地调试-提交代码-前置检查-push代码到远程仓库-基于Webhook触发CI/CD】

前置检查:git hook: commit

  1. 配置Lint + 利用Githook(在communit之前执行指定函数)实现
  2. 利用GitHookk在communit之前执行相关检测逻辑
    • husky:操作Git hook钩子
    • lint-staged:针对git提交的文件进行一些操作
git commit -m "test"

CI/CD:项目集成构建和交付

【触发Jenkins-构建-准入检查-部署/通知干系人】

stateDiagram-v2

触发Jenkins --> 构建
构建 --> 准入检查
准入检查 --> 部署(ok)
准入检查 --> 通知干系人(不ok)

【SCM(源代码管理)-构建-打包-部署】

graph TD
SCM --> 构建 --> 打包 --> 部署

执行shell(.sh脚本)

cd qingxunying-example
# lint
npm run lint
# test
npm run test
# 构建
npm build
# 打包
zip -q -r qingxunying.zip build/*

深入

构架方案

NoBundle

部署方案

有趣的问题:如何部署具备多台设备的集群?

  1. 蓝绿部署策略
  2. 滚动升级策略:滚动启用新的,暂停老的,直到升级完成。
  3. 灰度策略(金丝雀):按照流量的百分比,将指定百分比的流量导入到新版本中。

总结

前端工程化方案的演进路径是什么?

image.png