工程化 面试题
共 87 道 工程化 面试题。答案默认折叠,便于先自行作答。 1. webpack 中的 Loader ,链式调用顺序会影响编译结果吗? 难度:2 · 类型:QA 题目要点 Webpack Loader 是一个按流水线执行的源码转换系统,Loader 的链式顺序直接决定源码被处理的阶段;配置顺序为从左到右,但执行顺序为从右到左,每个 Loader 都处理前一个 Loader 的输出,因此顺序错误会导致语义阶段错乱甚至编译失败;通常应遵循“靠近源码的 Loader 放右侧,靠近运行时的 Loader 放左侧”的原则,同时 Loader 还存在 pitch 与 normal 两阶段执行机制,使顺序对最终编译结果具有决定性影响。 参考答案 会,而且这是 Webpack Loader 机制中非常关键且经常被误解的一点: Loader 的链式调用顺序不仅会影响编译结果,而且很多语法是否能正确工作,完全取决于 Loader 的执行顺序。 理解这个问题的关键在于:Loader 本质是一个“源码转换流水线(transform pipeline)”。 一、Loader 本质:源码的逐步转换 在 Webpack 中 hookup 的 Loader,并不是同时运行的,它们会对模块源码进行一层一层的转换: 原始源码 → loaderA → loaderB → loaderC → 最终 JS 模块 每个 Loader: 接收上一个 Loader 的输出 返回新的源码字符串(或 AST 转换结果) 交给下一个 Loader 因此: ...