【问题标题】:Babel transpiles 'import' to 'require', but 'require isn't useable in ecma5Babel 将 'import' 转换为 'require',但 'require 在 ecma5 中不可用
【发布时间】:2016-11-05 02:39:08
【问题描述】:

据我了解,使用 Babel 允许您通过转译在 ecma5 环境中使用 ecma6 javascript。但是,当我使用“导入”时,“导入”被转换为“要求”。 'require' 不是 ecma5 并且需要库 'require.js'。因此你不能在没有额外依赖的情况下使用'import/export',对吗?

【问题讨论】:

    标签: javascript ecmascript-6 require babeljs


    【解决方案1】:

    尝试用对应的方法替换转译代码中的require。例如:对我来说,用 window.react 替换 require('react') 就可以了

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

      • 我对将带有 require 语句和模块的文件捆绑到单个文件中感兴趣。我们目前使用 gulp-babel 和 gulp。我不确定 gulp 需要什么额外的包来执行此操作。我遇到了 gulp-browserify 但它似乎已被弃用,这是最好的选择还是我应该与 gulp 一起使用其他设置?
      猜你喜欢
      • 1970-01-01
      • 2018-08-13
      • 1970-01-01
      • 2022-11-17
      • 2020-12-04
      • 2020-05-15
      • 2016-12-19
      • 2016-08-20
      • 2011-04-17
      相关资源
      最近更新 更多