Rails资产管道与ES6模块和浏览



我正在尝试用rails资产管道实现一些比我希望的更难的东西。

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

我已经为资产管道找到了ES6模块转发器扩展,它运行良好,但这只是将其转换为CommonJS格式。我仍然需要将这一点融入浏览器理解的JS中。为此,我正在考虑使用Browserify,但我的问题在于将这两个结合起来。

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

有什么办法解决这个问题吗?

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

我的建议是使用browserfy rails gem。对于ES6,您将使用transform,如以下所示:https://github.com/thlorenz/es6ify

几个月后更新:我仍然建议使用相同的路径,但如果你能退出资产管道,我强烈建议你直接去webpack或浏览。资产管道有一些好处,但根据我的经验,试图让JavaScript成为一流的公民是痛苦的,(对我来说)利大于弊。

最新更新