开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第5天,点击查看活动详情
应用打包
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预期函数