工程化实践


2020-04-23 上次更新时间:4/28/2022, 2:19:43 PM 0

为了面对日益复杂的业务场景和代码逻辑,前端工程化势在必行。工程化的程度越高,在工作中因人的个体差异性导致的缺陷或者短板就会越少,项目质量可以得到更有效的保障。

# 1.模块化

模块化可以对复杂逻辑进行有效分割,每个模块更关注自身的功能,模块内部的数据和实现是私有的,通过向外部暴露一些接口来实现各模块间的通信。

# JS模块化

目前主流的模块规范有:AMDCMDCommonJSES6-module《JS模块化介绍》

# CSS模块化

CSS模块化主要依赖LESSSASSStylus等预处理器实现,我们可以使用变量、运算、函数,@import指令可以轻松合并文件。除了使用预处理器,还可以使用:

  • postcss
  • CSS in JS
  • CSS Modules

但各种预处理器和工具并不能完全解决全局作用域的问题,需要结合namespace的思想去命名。目前流行的命名规范:BEM

# 2.组件化

当项目变得越来越复杂的时候,抽离出公共的逻辑和组件,显得特别重要,这也是项目性能优化重要的一部分。

ReactVueAngular等框架的流行推动了 Web 组件化的进程。它们都是数据驱动型(MVVM),不同于DOM操作是碎片的命令式,它允许将两个组件通过声明式编程建立内在联系。

《从零开始搭建UI组件库》

# 3.规范化

规范化是保障项目质量的一个重要环节,可以很好地降低团队中个体的差异性。

# 代码规范

# 流程规范

当团队在开发时,通常会使用版本控制系统来管理项目,常用的有svn和git,如何合并代码、如何发布版本都需要相应的流程规范,这可以让我们规避很多问题,比如合并代码后出现代码丢失,又或者将别人未经测试的代码发布出去等等。以下几种都是基于git的协作开发模式:

# 文档规范

高质量的项目文档可以提高团队协作效率,便于后期优化维护。

  • JSDoc:根据.js文件中的注释信息,生成API文档。
  • Docz:基于MDX的高效、零配置的文档生成工具,目前仅支持React。
  • Storybook:集组件开发、查看、测试的文档工具,支持React、RN、Vue、Angular、Polymer等很多框架,非常强大。
  • react-styleguidist:和Storybook类似,生成React组件开发环境的文档服务,基于webpack支持HRM。

# 4.自动化

自动化包含构建测试发布三大方面。

# 自动构建

构建一般包括这几个步骤:

  • 代码转换:允许使用更高级的JavaScript语法,比如ES6、TypeScript等等,这对代码的开发和可维护性来说是非常有好处的。
  • 模块合并:按模块化开发的代码需要进行打包合并。
  • 文件优化:常见的有代码压缩和Code Splitting,使用ES6 module的模块化机制的还可以考虑构建工具的Tree Shaking功能,进一步减少代码体积。
  • 自动刷新:在开发过程中支持file watch和HMR都是可以很好地提升开发效率。

# 打包构建工具:

  • webpack:JavaScript 应用程序的静态模块打包工具
  • gulp:基于流(stream)的自动化构建工具
  • grunt:JavaScript 世界的构建工具
  • Parcel:极速零配置Web应用打包工具
  • Rollupjs: JavaScript 模块打包器

# 自动测试

前端测试可以分为单元测试和集成测试。可以使用一下几种工具达到自动测试:

# 自动部署

自动部署,可以写一个自动化脚本,也可以借助工具实现。

# 自动部署工具

参考文章

上次更新时间: 4/28/2022, 2:19:43 PM