1、babel 的原理:
- parse: 把代码 code 变成 AST
- traverse: 遍历 AST 进行修改
- generate: 把 AST 变成代码 code2
即:code => 1 => ast => 2 => ast2 => 3 => code2。AST 能明确告诉你每个单词,比如: let 的意思。
2、babel/core 把 import 变成 require 函数,把 export 变成 exports 对象。(本质:ESModule 变成 CommonJS 规则)
github例子
3、loader,webpack 自带打包器只支持 js 文件,当我们想加载其他格式的文件就需要对应的 loader,loader 的原理就是把文件内容包装成能运行的 js。
加载 css 需要用到 [ style-loader \ css-loader \ sass-loader 或 less-loader ]。sass-loader、less-loader 是把less,scss预处理语言转译为css语言,css-loader 把 css 代码变成 export default str 格式的 js 代码,style-loader 把代码挂载到 head 的 style 标签里面, style-loader 并不是转译,而是插入代码,因此 css-loader 的几个加载loader顺序是固定的,webpack按照从右到左编译。
简易css-loader实现