Babel将'import'转换为'require',但'require'在ecma5中不可用

Bra*_*ods 10 javascript require ecmascript-6 babeljs

我的理解是使用Babel允许您通过转换在ecma5环境中使用ecma6 javascript.但是,当我使用'import'时,'import'被转换为'require'.'require'不是ecma5,需要库'require.js'.因此,如果没有其他依赖关系,则无法使用"导入/导出",这是正确的吗?

Den*_*nov 13

是的,Babel仅用于翻译新语言功能以与现代JavaScript引擎兼容.Babel不编译为require.js模块导入语法.而是使用Node.js使用的CommonJS模块语法.因此,您可以直接运行代码,而无需在Node.js中进一步构建依赖项.

由于它一次对单个文件进行操作并且是直接转换,因此它不会决定如何将这些其他文件的源代码包含到当前文件中.

也就是说,如果您打算在浏览器中使用它,您将需要一个支持CommonJS模块语句的构建系统或捆绑器:

  • 有关许多典型构建配置的列表,请参阅https://babeljs.io/docs/setup/#installation
  • Browserify和Webpack是Javacript生态系统中最受欢迎的两个
  • 这些系统通过在引用'require'的地方注入文件来"捆绑"你的javascript代码,因此通常会生成一个输出js文件,你可以在ecma5中运行

  • 我对将带有 require 语句和模块的文件捆绑到单个文件中很感兴趣。我们目前使用 gulp-babel 和 gulp。我不确定 gulp 需要什么额外的包来做到这一点。我遇到了 gulp-browserify,但它似乎已被弃用,这是最好的选择还是我应该与 gulp 一起使用的其他设置? (2认同)