babel和loader的关系
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处理 |
是个编译器 | 是个桥梁、插件 |