Skip to content

构建

应用打包

时间成本、空间成本

构建策略

  • 减少打包时间:缩减范围、缓存副本、定向搜索、提前构建、并行构建、可视结构
  • 减少打包体积:分割代码、树摇优化、动态垫片、按需加载、作用提升、压缩资源

具体描述

  1. 缩减范围:缩小对文件的搜索范围,避免不必要的转译
  2. 缓存副本:再次编译使只编译修改过的文件
  3. 定向搜索:定向指定所需文件路径
  4. 提前构建:将第三方依赖提前打包 ( 预构建 ) ,每次只构建业务代码
  5. 并行构建:多进程构建,释放 CPU 多核并发优势
  6. 可视结构:分析打包文件结构,可视化输出,找出构建体积过大原因
  7. 分割代码:分割各个模块代码,提取相同代码,减少重复代码的出现频率
  8. 树摇优化:删除项目中未被引用的代码,只支持 ESM
  9. 动态垫片:通过垫片服务根据 UA 返回当前浏览器代码垫片,无需将繁重的代码垫片打包进去
  10. 按需加载:将路由页面 / 触发性功能单独打包为一个文件,使用时才加载,减轻首屏渲染的负担
  11. 作用提升:分析模块间依赖关系,把打包好的模块合并到一个函数中,减少函数声明与内存消耗
  12. 压缩资源:压缩 HTML 、CSS 、JS 代码,压缩字体、图像、音频、视频,更有效减少打包体积

类库打包

Rollup。

合并 dts 声明插件 rollup-plugin-dts 。

单元测试

测试代码块的可行性通常使用单元测试。

单元测试指检查与验证软件中的最小可测试单元。

单元测试特性

  1. 必要性:编译时定位错误,弥补 JavaScript 缺少类型检查的特性
  2. 准确性:通过多方面验证代码可行程度,减少错误发生率
  3. 自动型:预先编写测试用例,测试用例由脚本自动运行
  4. 回归性:避免代码出现回归化,可随时随地运行测试用例

Vitest

Jest 年久失修,Vitest 速度更快、原生支持 TypeScript、完美兼容 Jest 。

代码覆盖测试

代码覆盖测试指程序源码被测试的比例与程度的所的比例。

代码覆盖测试生成的指标为代码覆盖率,它作为一个指导性指标,可在一定程度上反应测试的完备程度,是软件质量度量的重要手段。

100% 覆盖率的代码并不意味着没有 Bug ,代码覆盖率作为质量目标没有任何意义,应把它作为一种发现未被测试覆盖的代码的检查手段。

代码覆盖测试更注重测试过程,而测试结果只是测试过程的一个表现。

参数说明:

参数说明描述
%Stmts语句覆盖率是否每个语句都执行
%Branch分支覆盖率是否每个条件都执行
%Funcs函数覆盖率是否每个函数都调用
%Lines行覆盖率是否每行代码都执行