一切都是为了提高生产率,前端工程化内容总结

前端工程化

文章结构

为什么要前端工程化

提高编码、测试、维护阶段的生产效率。实现高效开发,有效协同,质量可控。

如何进行前端工程化

工程化,即系统化、模块化、规范化的一个过程。

前端工程化就是根据具体的业务特点,将前端的开发流程、技术、工具、经验等规范化、标准化就是前端工程化。它的目的是让前端开发能够“自成体系”,最大程度地提高前端工程师的开发效率,降低技术选型、前后端联调等带来的协调沟通成本。

下面我们来从模块化、组件化、规范化、自动化,来了解如何进行前端工程化。

模块化

简单来说,模块化就是将一个大文件拆分成相互依赖的小文件,再进行统一的拼装和加载。只有这样,才有多人协作的可能。

JS 模块化

现在ES6已经在语言层面上规定了模块系统,完全可以取代现有的CommonJS和AMD规范,而且使用起来相当简洁,并且有静态加载的特性。

CSS 模块化

资源模块化

Webpack的强大之处不仅仅在于它统一了JS的各种模块系统,取代了Browserify、RequireJS、SeaJS的工作。更重要的是它的万能模块加载理念,即所有的资源都可以且也应该模块化。

Webpack可以将样式文件和图片等静态资源视为模块进行打包。配合loader加载器,对资源进行处理。

组件化

组件化是基于模块化的,因为组件的单位可以有模板,样式加逻辑。

将你所能看见到的视图(UI)进行合理拆分得到的单元,并能让它达到可复用程度,可称之为组件。

遵循结构、表现和行为分离的原则,我把组件分为JS框架和UI框架。

JS框架

三分天下的Vue(118359)、React(114932)、Angular(59241)。(ps:数字为 Github Star 的数量)

UI框架

UI框架有很多,下面统计了21个常见的UI框架,其中Semantic Ui,Ant design,Element,iView,Vuetify,Vux,Framework 7 ,Mint UI 的Github Star过了10k。

UI框架的Github Star

规范化

为了更好的落实开发,我们要制定一些规范。

编码规范

其中编码规范最好采取ESLint和StyleLint等强制措施,配置git hooks可以实现Lint不过不能提交代码等机制,因为人是靠不住的。

接口规范

接口规范包括协议规范,域名规范,版本控制规范,API路径规范,API命名规范,请求参数规范,列表请求特殊规范,返回数据规范,接口文档规范,接口管理工具。

开发流程规范

项目的生命周期分为启动、实施、收尾三个过程。照产品开发流程,我把项目开发分为5个阶段。

项目启动阶段 => 需求阶段 => 设计阶段 => 开发阶段 => 测试阶段 => 上线

版本控制

目录结构

层次清晰的目录结构,就是为了达到以下两点:

协作工具

常用的协作工具:

性能优化

性能优化的常见指标:

自动化

自动化可以大大提高我们的开发效率,从重复的工作中解放出来。

构建工具

构建就是把源代码转换成发布到线上的可执行 JavaScrip、CSS、HTML 代码。构建工具的主要功能就是实现自动化处理,例如对代码进行检查、预编译、合并、压缩;生成雪碧图、sourceMap、版本管理;运行单元测试、监控等,当然有的工具还提供模块化、组件化的开发流程功能。

网上各类的构建工具非常多,有家喻户晓的 Grunt、Gulp、Webpack,也有各大公司团队开源的构建工具,这里通过 Github 的 Star 数量来简单的对比下各个工具的流行度(数据时间为2018-11-08):

构建工具的 Star

如果把工具按类型分可以分为这三类:

测试系统

自动化测试是是一个塔型体系。静态检查是必须的,作为团队规范存在,覆盖全部代码。UT是局部覆盖的,关注基础功能。E2E是可选的,关注主流程和回归测试。

自动化测试体系

静态检查 - Eslint
Unit Test (单元测试) - KarmaJasmineMochaChaiJestAVA
End to End Test (端到端测试) - ProtractorNightwatch(Angular)、 Selenium(browser)

监控系统

前端的监控系统要解决的问题是如何从用户的角度判断系统的可用性。只有用户端的可用才是真正的可用。

如果监控没有覆盖到终端,那么很可能会造成严重的幸存偏误。比如某个接口从后端的角度来看成功率接近百分之百,但事实上多数用户的请求都失败了,因为请求没有正确发到后端。

监控系统的功能分类:

对页面错误和性能的监控是必要的,随着团队规模的不同,监控系统接入的难度不同。

其中,效率最低、准确性最差的是手动添加监控代码。这种我们放弃。

自动添加监控代码包括:

错误、性能监控脚本能够自动化添加到线上页面 错误、性能监控能够自动化获取 监控代码部署后,就通过各种手段展现、通知责任人,查看优化前后效果对比等。

统计系统

统计系统和监控系统的区别在于,监控关注的是实时数据,统计关注的是全量数据,监控是为了提高团队的故障响应能力,统计是为产品与业务分析提供基础。

统计系统的功能分类:

性能统计
访问量统计
用户行为统计

持续集成

实践前端工程化

接下来就要上点私货了。

技术选型

技术选型原则:

基于技术选型的原则,我的技术选型如下:

项目配置

详细教程


写文不容易,且看且珍惜。觉得文章不错就扫码支持一下呗~

打赏二维码

参考链接