使用RequireJS与Rails 3.1应用程序

时间:2011-10-27 19:43:16

标签: ruby-on-rails-3.1 sprockets requirejs

问题

如果您已将RequireJS与Rails 3(特别是3.1)应用程序一起使用,那么这对您有何帮助?我需要注意的任何配置技巧或其他陷阱?

背景

我正在考虑在Rails 3.1中使用基于Sprockets的资产管道的RequireJS,特别是JavaScript代码。我有两个选择的动力:

  • 我想利用RequireJS的模块管理来获取我的JS客户端代码。
  • 我想要一个可以将我的JS库代码跟踪到其他上下文的预编译系统。令我惊讶的是,Asset Pipeline预编译器是Rails的一个部分,而不是Sprockets本身的一部分。

感谢所有反馈,谢谢!

1 个答案:

答案 0 :(得分:48)

对于后人来说,这是我在这个问题上的所在:

  • RequireJS提供Asynchronous Module Definition API的实现。 RequireJS'Why AMD? page列出了为什么要使用它的情况。

  • Sprockets和Rails 3 Asset Pipeline允许简单地构造JavaScript / CoffeeScript代码,但不提供任何真正的模块支持。例如,Sprockets中没有名称空间控件。

  • jQuery(截至1.7),Underscore,Dojo和众多其他主要库已实施AMD支持。其他几个主要的JS库似乎在短期内支持AMD(例如Backbone.js)。

当然可以创建一个集成RequireJS的Rails应用程序。为简化该过程,我创建了requirejs-rails gem on github,通过r.js为基于AMD的代码提供了简单的配置和基于资产管道的预编译。当前版本可通过以下方式获得:

gem install requirejs-rails