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

时间:2016-07-03 03:35:07

标签: javascript ecmascript-6 require babeljs

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

2 个答案:

答案 0 :(得分:10)

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

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

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

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

答案 1 :(得分:0)

尝试通过相应的方法替换在运算代码中的require。例如:对我来说,通过window.react替换require('react')将起作用