ruby-on-rails - 我可以在 render.js 上执行的 View 中使用 CoffeeScript 吗?

标签 ruby-on-rails ruby coffeescript

我需要做什么才能在 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/

相关文章:

ruby-on-rails - 使用searchkick设置高级搜索,处理与多个模型的关联(Rails)

mysql - Rails 如何检查 sql 查询生成的内容

ruby - 如何在停止时杀死 ruby​​ Thor 中的所有进程?

ruby-on-rails - Heroku Assets 预编译问题

ruby-on-rails - ruby rails : Functional Testing: POST does not send raw XML data

ruby - 为什么我的单衬 block 不起作用?

ruby-on-rails - 为 Rails 中的邮件将外部 CSS 转换为内联 CSS

javascript - Coffeescript 的主干上下文问题

javascript - Highcharts 颜色不显示

coffeescript - 在document.ready上运行CoffeeScript类