25

问题

如果您在 Rails 3 (esp 3.1) 应用程序中使用过 RequireJS,那对您有什么帮助?我需要注意的任何配置技巧或其他问题?

背景

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

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

感谢所有反馈,谢谢!

4

1 回答 1

48

对于后代,这就是我谈到这个问题的地方:

  • RequireJS 提供了异步模块定义API 的实现。RequireJS'为什么选择 AMD?页面列出了您为什么要使用它的案例。

  • Sprockets 和 Rails 3 Asset Pipeline 允许对 JavaScript/CoffeeScript 代码进行简单的结构化,但不提供任何真正的模块支持。例如,在 Sprockets 中没有任何命名空间控制。

  • jQuery(从 1.7 开始)、Underscore、Dojo 和许多其他主要库都实现了 AMD 支持。其他几个主要的 JS 库似乎在近期水平上支持 AMD(例如 Backbone.js)。

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

gem install requirejs-rails

于 2011-12-05T23:09:59.290 回答