12

我正在尝试使用 Rails 资产管道实现一些东西,但事实证明这比我希望的要难。

为了清晰地构建应用程序,我计划为 javascript 使用模块系统。为此,我想使用 CommonJS 模块,但我想使用新的 ES6 语法来编写它们以实现未来的兼容性。

我找到了资产管道的 ES6 模块转译器扩展,效果很好,但这只会将其转换为 CommonJS 格式。我仍然需要将它放入浏览器可以理解的 JS 中。为此,我正在考虑使用 Browserify,但我的问题在于将这两者结合起来。

模块转译器以每个文件为基础工作,但 browserify 通过检查所有需要的文件来工作。问题是browserify不能使用原始文件,因为它们不是CommonJS格式,它们是ES6,所以它需要转译版本,但因为这发生在管道中,我不能将browserify指向文件。

有没有办法解决这个问题?

4

2 回答 2

7

您可能想尝试Seth Vincent 的方法,他使用 package.json 和 npm 脚本来运行所有 JavaScript 任务,并且仅在资产管道中使用 bundle.js。然后,您可以从您的 Rakefile 中执行 npm 任务。我喜欢他的方法,因为它为 JS 任务打开了现代 JS 工具链。

于 2014-04-02T12:01:40.363 回答
5

我的建议是使用browserify-rails gem。对于 ES6,你会使用transform这样的一个:https ://github.com/thlorenz/es6ify

几个月后更新:我仍然推荐相同的路径,但如果您可以脱离资产管道,我强烈建议您直接使用 webpack 或 browserify。资产管道有一些好处,但根据我的经验,试图让 JavaScript 成为一等公民是痛苦的,而且好处大于坏处(对我来说)。

于 2014-04-03T22:05:00.943 回答