Babel 是一个独立的 JavaScript 编译器。
作用:把新版本的JS语法(ES6+)转成老版本(比如ES5)。
Babel本身只管代码内容怎么变,不管怎么读取文件、也不管怎么打包输出。
比如在webpack里:
Loader的作用是告诉webpack:
当你遇到.js
、.vue
、.ts
这类文件,应该用谁去处理它。
Loader只是一个中间人,调用babel来干活。
webpack(打包器)
|
遇到 .js 文件
|
调用 babel-loader(Loader)
|
babel-loader 调用 Babel(Compiler)
|
Babel 把新JS → 老JS
|
返回给 webpack 继续打包
比如webpack配置里写:
module.exports = {
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env']
}
}
}
]
}
};
这里:
test: /\.js$/
→ 匹配 .js
文件
use: 'babel-loader'
→ 用 babel-loader 来处理
babel-loader
内部再调用 Babel,根据配置转译
Babel | Loader (比如babel-loader) |
---|---|
真正负责转代码 | 负责让webpack认识这些代码、并交给babel处理 |
是个编译器 | 是个桥梁、插件 |