第一次看到的时候感觉有点鸡汤,但静下心来仔细想想却不无道理,以 Vite 来举例子,我在看它代码的时候,印象很深的一个点就是各种开源模块信手拈来,恰到好处的解决了需求,这种能力是一定需要大量的开源模块阅读量的。
Vite magic-string
比如 Vite 中大量运用 magic-string 这个库做一些字符串的魔术替换,这个库的目的就是在一些轻量级替换源代码的场景中替代 AST 这种过于庞大的解决方案。
var MagicString = require('magic-string')
var s = new MagicString('problems = 99')
// 替换 problems -> answer
s.overwrite(0, 8, 'answer')
s.toString() // 'answer = 99'
// 生成 sourcemap
var map = s.generateMap({
source: 'source.js',
file: 'converted.js.map',
includeContent: true
})
Vite fast-glob
再比如用 fast-glob 去实现 Vite 中好用的 Glob Import 批量导入语法优品拍拍
好,现在我们知道有 fast-glob
这么好用的库了,顺带读一读文档看看它的用法,那么之后我们在自己的工作中,写诸如脚手架的工具时,就可以用这个库对外提供一些好用的批量导入 API,这就成为了我们自己知识体系中的一部分。