围绕一个项目,前端应该至少具备以下基础设施:

  • 环境
  • 制定规范
  • 项目脚手架(工程化)
  • git:分支管理/一键发布/版本控制
  • 日志
  • 监控

    环境

    至少三个环境:
    本地开发环境、测试环境、线上环境;
    其中,测试环境与线上环境要求基本一致(无非是数据相对mock);

  • 本地开发环境 => 前后端分离;

  • 测试环境 => mock数据;
  • 线上环境 => 对接线上;

制定规范

这里的规范不只是前端自己的规范(包括git分支管理规范、代码开发规范、路由设计规范,埋点上报等),也包含了前后端沟通的一些规范(包括接口url规范、状态码返回规范等);

项目脚手架(工程化)

一般来讲,大多数公司都会有一套成型的开发体系,尤其在项目开发这方面,我们尽量不要重复的去搭东西,可以基于公司的成型方案甚至社区成熟的方案去进行二次配置,即可满足需求。

  • eslint => 统一开发规范;
  • git门神 => 控制代码提交时的审查
  • 集成单元测试 => 保障核心代码或方法库不会随迭代而出现问题
  • 配置工程化代码环境

    • 开发环境 => 追求强力、友好的开发赋能;

      • webpack配置项 => 需要具有强大的、具有实时重新加载(live reloading)或热模块替换(hot module replacement)能力的 source map 和 localhost server
    • 生产环境=> 追求更小、更轻量的bundle

      • webpack配置项 => 更小的 bundle,更轻量的 source map,以及更优化的资源,以改善加载时间
  • 底层能力(请求api、环境能力、storage能力、埋点能力等)/ 业务能力(Login、URL等) / 物料支持(组件库、js库) 等的封装

git:分支管理/一键发布和管理/版本控制

  • 多人协作项目,必须要追求git规范性。可以参考 git flow 来实现git分支的规范管理;
  • 一键发布和管理(可以通过jenken、 git CI/CD脚本集成来实现);
  • 版本控制(如何平稳回退版本?)

日志

这里的日志,可不仅仅是控制台中的打印;
举个🌰,项目里往往会集成埋点上报、错误上报,上报的内容作为一个模块的日志进行储存,在需要的时候(比如做用户行为分析、错误报警的时候)将它取出来。
那么日志的存储和管理就显得很重要了;
一般来讲,我们用运维的服务器去进行日志的储存(因为日志主要属于运维所需)

监控

如果尚有余力(剩余资源),那么就可以考虑做一些线上监控方案给项目提供更强有力的保障。