javascript - 在Rails中使用ES6语法和Javascript压缩的直接,受支持的稳定方法是什么?

标签 javascript ruby-on-rails webpack ecmascript-6 babeljs

我试图在我的javascript文件中,在rails项目中使用es6语法。出于性能原因,我还需要缩小javascript文件(我的,以及rails-ujs等库包含的)。
当我第一次生成项目并在本地运行时,它运行得很好。但是,这是因为developmentproduction的环境配置不同。在development配置中,没有缩小。在production配置中,uglifier用于缩小javascript。
一旦我试图部署到生产环境中,uglifier和execjs就开始抛出各种语法错误,例如不识别const关键字或不识别箭头函数的>运算符中的=>
在花了几个小时寻找解决方案后,我求助于简单地禁用丑恶,以便我可以成功部署。不过,现在我的网站已经投入生产和工作,我想让这个优化工作。
我熟悉babel和webpack,我在其他项目中使用过它们(以及一些自定义脚本)来生成浏览器就绪的es5代码(对于internet explorer)和浏览器就绪的es6代码(对于每个其他浏览器)。如果我不使用rails,这对我来说是微不足道的。
但是,由于我使用的是rails,我需要在rails资产管道的上下文中找出如何做到这一点。令人惊讶的是,似乎没有任何标准的方法来做到这一点,尽管ES6已经4岁了,而且每个现代浏览器都支持它。微软edge在这方面远远领先于rails,这真的很奇怪。
以下是我看到的一些建议,以及它们的问题。
https://github.com/babel/ruby-babel-transpiler
没有说明如何在rails资产管道中使用它的文档。
https://www.rubydoc.info/gems/uglifier
默认情况下包含在rails中,但不支持es6语法。
提到“实验性的ES6语法支持”,但它不起作用,即使您启用了“和谐模式”。
它使用“实验”这个词,我正试图在一个生产应用程序中使用它。到目前为止,任何严肃的javascript工具都应该对es6有稳定的支持。
https://github.com/fnando/babel-schmooze-sprockets
不清楚的文档,包括很多关于必须对所有导入执行异常的非标准操作的警告,比如call.default()
https://nandovieira.com/using-es2015-with-asset-pipeline-on-ruby-on-rails
提到必须使用“预发行版”的链轮。我试图在一个生产应用程序中使用它,我并不认为我期望能够在稳定版本的库中使用它是不合理的。这篇文章已经3年了,但我找不到更新的版本。
How do I use ES6 (ES2015) in a ruby on rails app?
有一些建议,但没有一个是自成体系的解决方案,这已经有3年的历史了。我希望现在有一个具体的,稳定的方法来做?
https://revs.runtime-revolution.com/want-to-use-es6-with-rails-right-now-webpack-to-the-rescue-ebefb2004e9e
如果我必须在rails资产管道之外完成所有的es6支持,这几乎就是我要做的。当然,有一种方法可以做到这一点,而无需跳出rails并手动编译javascript代码?
https://github.com/babel/minify
还在测试阶段。我想把它用在制作网站上。

最佳答案

你需要使用这个:https://github.com/rails/webpacker
我还将升级到几天前发布的rails 6.0,它将对es6有更好的支持和集成。https://weblog.rubyonrails.org/2019/8/15/Rails-6-0-final-release/

关于javascript - 在Rails中使用ES6语法和Javascript压缩的直接,受支持的稳定方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57599902/

相关文章:

javascript - 如何配置 webpack 不输出精简代码?

node.js - 在编译时将基于包名称的变量传递给 webpack 源

javascript - 分散的无序列表

javascript - 异常中心如何工作?

javascript - 跳转播放音频

ruby-on-rails - Devise 是否允许我们将跨 FB、Twitter、Google 的登录整合为单个用户

sql - 优化 ruby​​ on rails SQL 查询

ruby-on-rails - 我如何在 ReactJS 中使用嵌套表单?

javascript - Jest( react 测试工具)错误 - 解析错误 : Line 1: Illegal import declaration

vue.js - 安装了vue loader unmet dependancy但仍然报错