React 的工程化流程

前端代码开发简易流程

-前端项目项目开发项目管理项目部署
前端开发1.开发工具
2.创建项目
3.Vue CLI 配置
4.环境配置
5.UI 框架
6.页面布局
7.单页应用
8.多页应用
9.模板解析
10.编码技巧
11.Mock 数据
12.代码优化
13.构建部署
2.project(前端项目) ----> 2.1 env(本地环境) ----> 2.2 skill(技术选型) ----> 2.3 config(项目配置)
| | | |
| 2.1.1 node 2.2.1 cli(脚手架) 2.3.1 package.json
| | |
| 2.1.2 npm(包管理器) 2.2.2 react(全家桶)
| | |
| 2.1.3 vscode(编辑器) 2.2.3 ui
| |
| 2.2.4 mock
|
3.code(项目开发) ----> 3.1 devlopment(代码开发) ----> 3.2 debugger(代码调试)
| | |
| 3.1.1 eslint(规范) 3.2.1 devtool(谷歌浏览器)
| | |
| 3.1.2 optimize(优化) 3.2.2 vue tool
| | |
| 3.1.3 page(/单页应用) 3.2.3 postman
| | |
| 3.1.4 module(模版) 3.2.4 vscode
|
4.store(项目管理) ----> 4.1 version(版本控制)----> 4.2 remote(远程存储)
| | |
| 4.1.1 git(版本控制) 4.2.1 gitlab
|
5.deploy(项目部署) ----> 5.1 env(项目环境) ----> 5.2 auto(自动部署) ----> 5.3 way(部署方式)
| | | |
| 5.1.1 dev/sit/prod(环境) 5.2.1 genkins 5.3.1 nginx

1.开发工具

早期前端写原生 js,只需要编辑器方便写代码,svn 管控代码,chrome 调试代码,一些库或插件以 cdn 的形式引入到项目中;随着前端工程化的普及,前端开发以 node 为基础,通过脚手架、npm包、相关命令,创建和开发项目
事项版本说明其他是否必须备注
1.安装 node.js>= 8.9开发环境支持前端工程化依赖 node 环境node -v
2.安装 git-代码管理提交代码用
3.安装 VSCode-编辑器推荐一些默认配置,以及常用插件
4.安装 谷歌浏览器最近两年调试代码熟悉 chrome 代码调试
5.升级 npm最新包管理器熟悉相关命令npm install -g npm@latest

2.创建项目

早期前端创建项目,只需要新建一个文件夹,然后新建 html 将 css、 js 引入,后来有了工程化开发方式,通过脚手架及相关命令,拉取仓库模板,组合相关配置,安装相关依赖,可以很轻松初始化配置标准项目

vue 脚手架

  • 安装 react 脚手架
  • 使用命令创建 react 应用

3.webpack 配置

内置的 webpack 无法满足开发需求,例如需要对图片做一些配置,需要对打包做一些配置
🏷️ 问题一:本地开发环境请求服务器接口跨域的问题
利用webpack中proxy配置本地代理解决跨域问题

4.环境配置

- 开发环境(开发阶段,本地开发版本,一般会使用一些调试工具或额外的辅助功能) - 测试环境(测试阶段,上线前版本,除了一些 bug 的修复,基本不会和上线版本有很大差别) - 生产环境(上线阶段,正式对外发布的版本,一般会进行优化,关掉错误报告)

5.UI 框架

前端代码开发,会重复开发某些功能(如日历组件),把这些重复的功能封装起来,统一管理,使用时直接调用会大大提高开发效率,这些公共的组件放在一起形成了我们现在看到的 ui 框架
  • antdesign 的使用
  • antdesignPro 的使用
🏷️ 问题一:打包文件中有大量未使用过的 UI 组件
配置按需加载,页面使用组件时单个引入使用

🏷️ 问题 二:如何优雅的只在当前页面中覆盖ui库中组件的样式

🏷️ 问题 三:打包之后文件、图片、背景图资源不存在或者路径错误的问题

6.页面布局

将页面中组件归类,页面清晰

🏷️ 问题 一:一个文件的代码很多,既存在应用数据的读取和处理,又存在数据的显示,而且每个组件还不能复用
数据的请求和数据的展示都在一个组件进行,要实现组件的复用,我们就需要将展示组件和容器组件分离出来

7.单页应用

前端工程化项目后,默认搭建的项目就是单页应用

8.多页应用

有时候需要在项目中配置多入口,满足不同的业务需求,如 pc 端扫码展示 h5 页面
🏷️ 问题 一:打包后的入口文件加载比较慢,经过分析发现是入口文件体积比较大,需要优化入口文件体积
可以配置多入口来分流文件

9.模板解析

有些页面布局及结构固定,只是内容文字不同,这里可以将文字内容部分抽离为变量,和一般页面不同的是,这里的变量是配置的变量,不是从后端请求的数据,当打包项目后,这个页面内容就固定了。
🏷️ 问题 一:html 页面有些变量在不同的环境会有不同的值,这些变量是在 webpack 中不同环境中配置好的,打包后会从不同环境中取值
可以在html页面配置一个通用模板来解析这些变量

10.编码技巧

不同的人写的代码风格不一致,给其他开发人员造成了理解困难
🏷️ 问题一:在一个项目中会发现同一个功能的工具类方法,会有很多种写法,逐渐的项目里就累积了很多重复的工具类方法(防抖、节流、深拷贝...),其他开发接手需要从头看这些方法的用法
使用 lodash 函数库替代自己写的方法、日期相关处理推荐使用moment.js

11.Mock 数据

后端接口不阻塞前端开发,前端可以根据接口文档,使用相关工具或配置实现接口功能,待后端完成接口,切换地址即可替换真实接口
🏷️ 问题一:某些需求比较抽象复杂,前端界面比较统一(toB项目),前端静态页面很快就写好了,需要等后端好久才能提供接口,然后边联调边进行逻辑部分开发,延长了开发周期
前端写好静态页面后,可以在后端不提供接口的情况下,用接口文档自己mock数据,完成后面的逻辑部分开发,待后端完成接口后前端与之联调,加快开发进度

12.webpack 优化

例如:由于 vue 默认是单页应用,如果不做优化,会随着项目的复杂,打包入口文件会越来越大,影响页面性能;本地构建比较慢,影响开发效率
🏷️ 问题一:开启gzip压缩代码
这时前端需要在本地模拟线上发布环境,配置启动 nginx,访问本地的打包文件,验证通过后进行发布

13.构建部署

早期网页部署直接是通过 ftp 将本地的 html 代码传输到后端服务器,然后在页面就可以打开网页,随着前端工程越来越复杂,需要提前准备的工作也越来越多(安全问题、权限问题、回滚操作、错误日志...)
🏷️ 问题一:在某个重要的环境,紧急修改了某个问题,由于某种原因需要直接发布到这个环境,跳过了前面的环境验证,结果运维发布了页面出现了问题,访问不了。
这时前端需要在本地模拟线上发布环境,配置启动 nginx,访问本地的打包文件,验证通过后进行发布

🏷️ 问题二:每一次更新都需要清除浏览器缓存才能看到效果
部署时,生成项目版本号存于项目某个文件中,当页面打开时一直请求这个文件,隔一段时间与浏览器本地存储的版本号做对比,有差异就更新页面
通过以上对 react 项目开发的流程,我们可以大概了解到实际开发中所进行的环节,以及相关环节下需要做的事情,对全面理解 vue 的前端开发做好铺垫。