Babel 与 webpack 加载器

Babel vs. a webpack loader

我对两者的经验都有限,但是,根据我对他们所做工作的理解,我有一个基本问题。 webpack 加载器似乎正在将源代码从一种形式转换为另一种形式。另一方面,Babel(是一个转译器)将新的 JavaScript 代码转换为旧的 JavaScript 代码(在所有浏览器上运行)。

两者似乎做的事情非常相似。为什么我们不能只使用 "converts new JavaScript code into old JavaScript code" 的 webpack 加载器而不是在管道中使用 Babel?

Babel 并非特定于 webpack。
webpack 加载器通常只是转译器的包装器。 Webpack 需要一个加载器来检测转译器的输入和输出,就像 babel-loader 对 Babel 所做的那样。
Webpack 需要加载器,因为没有标准的 API 转译器:有些有 JavaScript API,有些使用 stdin/stdout,有些写入文件...

你的理解几乎是正确的,除了加载器和转译器的用例。加载器是 Webpack 生态系统中的通用术语,而转译器是加载器的一个示例(例如 babel-loader 是一个加载器,其职责是转译您的 JavaScript 代码)。

Why can't we just use a Webpack loader that "converts new JavaScript code into old JavaScript code " instead of using Babel in the pipeline?

Because there's no loader that transpiles your JavaScript code that comes with Webpack. Here's a list of loaders. The Webpack team maintains some of them.