什么';在Rails中使用ES6语法和Javascript简化是一种简单、受支持、稳定的方式吗?
我正在一个Rails项目中尝试在Javascript文件中使用ES6语法。出于性能方面的原因,我还需要缩小Javascript文件(我的,以及像什么';在Rails中使用ES6语法和Javascript简化是一种简单、受支持、稳定的方式吗?,javascript,ruby-on-rails,webpack,ecmascript-6,babeljs,Javascript,Ruby On Rails,Webpack,Ecmascript 6,Babeljs,我正在一个Rails项目中尝试在Javascript文件中使用ES6语法。出于性能方面的原因,我还需要缩小Javascript文件(我的,以及像rails-ujs这样的库所包含的文件) 当我第一次生成项目并在本地运行时,它运行得很好。但是,这是因为开发与生产的环境配置不同。在开发配置中,没有缩小。在production配置中,Uglifier用于缩小Javascript 一旦我尝试部署到生产环境中,Uglifier和ExecJS就开始抛出各种语法错误,比如不识别const关键字,或者不识别箭头函
rails-ujs
这样的库所包含的文件)
当我第一次生成项目并在本地运行时,它运行得很好。但是,这是因为开发
与生产
的环境配置不同。在开发
配置中,没有缩小。在production
配置中,Uglifier用于缩小Javascript
一旦我尝试部署到生产环境中,Uglifier和ExecJS就开始抛出各种语法错误,比如不识别const
关键字,或者不识别箭头函数的=>
操作符中的
在花了几个小时寻找修复程序后,我求助于简单地禁用Uglifier,以便能够成功部署。然而,现在我的网站正在生产和工作,我想让这个优化工作
我熟悉Babel和Webpack,我在其他项目中使用过它们(以及一些自定义脚本),以生成浏览器就绪的ES5代码(用于Internet Explorer)和浏览器就绪的ES6代码(用于其他所有浏览器)。如果我没有使用Rails,这对我来说将是微不足道的问题
但是,因为我使用的是Rails,所以我需要在Rails资产管道的上下文中找出如何做到这一点。令人惊讶的是,尽管ES6已经有4年的历史,并且受到所有现代浏览器的支持,但似乎并没有任何标准的方法来做到这一点。微软Edge在这一点上远远领先于Rails,这真的很奇怪
以下是我看到的一些建议,以及其中的问题
-
- 没有说明如何在Rails资产管道中使用它的文档
-
- 默认情况下包含在Rails中,但不支持ES6语法
- 提到“实验性ES6语法支持”,但它不起作用,即使启用“和谐模式”
- 它使用了“实验”这个词,我正试图在一个生产应用程序中使用它。任何严肃的Javascript工具现在都应该对ES6有稳定的支持
-
- 文档不清楚,包括很多关于必须在所有导入上执行奇怪的非标准操作的警告,如调用
.default()
- 文档不清楚,包括很多关于必须在所有导入上执行奇怪的非标准操作的警告,如调用
-
- 提到必须使用链轮的“预释放版本”。我正试图在一个生产应用程序中使用它,我不认为我不合理,因为我希望能够用稳定版本的库来实现这一点。这篇文章已经3年了,但我找不到更新的版本了
-
- 有一些建议,但没有一个是自成体系的解决方案,这已经快3年了。我希望现在有一个具体的,稳定的方法来做这件事
-
- 如果我必须在Rails资产管道之外完成所有ES6支持,那么我会这么做。当然,有一种方法可以做到这一点,而无需跳出Rails并手动编译Javascript代码
-
- 仍处于测试阶段。我正试着把它用于生产现场
config.assets.JS_compressor=Uglifier.new(harmony:true)
和另一种语法,你只需在一个地方执行{harmony:true}
。这两种语法都没有任何明显的效果。