在 rails 中编译资产文件时,预处理器引擎如何运行?

how does preprocessor engine runs when asset files are compiled in rails?

假设我有一个名为 foobar.js.erb.coffee.

的文件

我很困惑在编译 rails 应用程序时如何解释这个文件。我的理解如下: 1) Coffeescript 预处理器引擎将 coffeescript 解释为 ruby(erb)。 2) ERB 预处理器引擎将 ruby 转换为 javscript.

我理解正确吗?

例如,foobar.js.erb.coffee

The extension of the file will be composed of two parts: the format (foobar.js) followed by the handler (.erb.coffee).

处理程序是模板或模板语言的预处理器。内置了许多处理程序,可以使用额外的 gem 添加更多处理程序。

转换顺序是从右到左。

在您的情况下,CoffeeScript 引擎尝试将 CoffeeScript 转换为 JavaScript(可能会发生错误,因为现有的 ERB 可能会导致 CoffeeScript 的语法无效),然后 ERB 处理程序将替换所有 Ruby 输出值应该是什么的代码。

对于这种情况,我总是把.erb放在最后。例如,main.css.scss.erbapp.js.es6.erb.