如何在 RequireJS 项目中集成 ES6 模块语法

4
我正在寻找一种在当前RequireJS项目中使用ES6模块(import/export)语法的方法。 我可以直接在最近的浏览器中运行我的项目,无需构建或Babel转换。 我仅在生产环境中使用r.js和Babel来构建我的项目。
我们想要开始构建ES6模块并将其与requireJS一起使用。 有没有办法做到这一点?
注:RequireJS不会加载用ES6编写的依赖项。
1个回答

4
是的,RequireJS应该兼容Babel的es2015-modules-umd插件。因此,在支持模块的现代浏览器中,在开发过程中应该能够在文件中使用importexport,然后在生产环境中使用r.js和带有该插件的Babel。

问题在于RequireJS无法加载用ES6编写的依赖项,即使在现代浏览器中也是如此。 - Acidnuk
1
@Acidnuk:当 RequireJS 看到它时,它不再是 ES6(至少不是 import/export 部分)。这就是为什么在那个阶段需要 Babel 参与的原因,将 import/export 转换为 require/define 调用。 - T.J. Crowder
是的,它实际上正在生产中。但是在开发期间,我的应用程序将无法工作,对吗? - Acidnuk
@Acidnuk:这就是我说“……使用支持模块的现代浏览器……”的原因。例如,最近版本的Chrome支持;我认为最新的Safari也支持(实际上,Safari在他们的预发布分支中率先实现了这一点)。您可以使用<script type="module" src="main.js"></script>引导,然后main.js可以使用import { foo } from "./foo.js";等语句。所以这是开发阶段。然后,在测试和生产中,您可以通过Babel运行它,可能使用Require等工具来构建一个组合的、被压缩的文件,et voila。 - T.J. Crowder
1
好的,我明白了。如果我的初始问题不够准确,请原谅。这意味着我无法通过requireJS获取es6模块。例如: define (["myES6Module.js"], function () {}); - Acidnuk
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接