我需要做什么才能在 Rails JS View 中使用 CoffeeScript?例如:
def index
format.js { render :layout => false }
end
我需要做什么才能让 Rails 使用 index.js.coffee
?
最佳答案
Johnny 的回答是正确的。如果您查看 pull request链接到 CoffeeBeans页面,你有 dhh 说
Once we have a fast, clean implementation, it's welcome in core. 3.2 is a more likely target, though.
我在 Railsconf 上与 Sam Stephenson 和 Josh Peek 简短地讨论了这个问题,因为这是一个缺失的功能,人们在我的 CoffeeScript 演讲后问过我这个问题。毕竟,Rails 3.1 非常努力地将 CoffeeScript 作为默认设置;有些地方必须使用纯 JS,这似乎很奇怪。 Sam 的 react 是这效率不高,因为您必须在每个页面请求时启动 CoffeeScript 编译器,即使在生产环境中也是如此。那是因为像这样的代码
<%= coffee_script_tag do %>
alert "coffee script is #{verb}!"
<% end %>
创建一个 ERB 插值(不是 CoffeeScript 插值——不幸的是两者使用相同的语法),可能会在每个请求上产生不同的 CoffeeScript 代码字符串。并且没有办法从 coffee_script_tag
实现中判断给定的代码是否每次都相同(即是否有 ERB 插值)。
现在,CoffeeScript 编译器非常快,但是编译成 JavaScript 仍然会为每个请求增加一些额外的时间。因此,Rails 团队对鼓励这种做法犹豫不决。
为了提高效率,并避免 ERB 插值和 CoffeeScript 插值之间的歧义,您应该将 CoffeeScript 保存在某个地方(也许作为 .coffee
文件与您的 View 位于同一目录中)并手动将其编译为 JavaScript。
关于ruby-on-rails - 我可以在 render.js 上执行的 View 中使用 CoffeeScript 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6225174/