前端工程化之构建篇

64 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第5天,点击查看活动详情

image.png

应用打包

webpack是一个现代JS应用程序的静态模块打包器。当webpack处理应用程序时,它会递归地构建一个依赖关系图,其中包括应用程序所需的每个模块,然后将这些模块打包为一个或多个bundle文件

优化应用打包,简而言之就是做好webpack性能优化工作:时间层面 & 体积层面\

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

类库打包

按需封装工具函数!

对于单一类型单一功能的项目,使用rollup打包代码会更好,而rollup也是为JS类库打包而生。
其内置的ES6解析、摇树优化、作用提升等特性在打包类库时有些先天的优势。

rollup在普通情况下,必须使用ESM编码
摇树优化就是TreeShaking,可查看《TreeShaking实现原理》

单元测试

技术要点:Jest

// 安装
npm i -D @types/jest jest ts-jest

jest提供一些很好用的匹配器(13)

toBe()
检查对象是否全等某值,类似===

toBeLessThan()
检查对象是否小于某值,类似<

toBeLessThanOrEqual()
检查对象是否小于等于某值,类似<=

toBeGreaterThan()
检查对象是否大于某值,类似>

toBeGreaterThanOrEqual()
检查对象是否大于等于某值,类似>=

toBeCloseTo()
检查对象是否约等于某值,类似

toEqual()
测试两个对象的值是否相等,只对比值,不对比引用地址。该函数用在引用类型中更佳,例如数组对象

toBeUndefined()
检查对象是否为undefined

toBeNull()
检查对象是否为null

toBeTruthy()
检查对象转换为布尔后是否为true

toBeFalsy()
检查对象转换为布尔后是否为false

toMatch()
检查对象是否包括字符串或匹配正则,类似字符串的includes()match()

toContain()
检查对象是否被数组包括,类似数组的includes()

......

更多期望函数,可查看Jest预期函数