1. Babel 是转译工具(Compiler)
-
Babel 是一个独立的 JavaScript 编译器。
-
作用:把新版本的JS语法(ES6+)转成老版本(比如ES5)。
-
Babel本身只管代码内容怎么变 ,不管怎么读取文件、也不管怎么打包输出。
2. Loader 是加载器(在打包工具里的)
比如在webpack里:
-
Loader的作用是 告诉webpack:
👉 当你遇到
.js
、.vue
、.ts
这类文件,应该用谁去处理它。 -
Loader只是一个中间人 ,调用babel来干活。
3. 它们之间的关系一眼看懂图👇:
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处理 |
是个编译器 | 是个桥梁、插件 |