将 RequireJS 与 Rails 3.1 应用程序一起使用
问题
如果您已将 RequireJS 与 Rails 3 (esp 3.1) 应用程序一起使用,那么它对您来说效果如何?有什么配置技巧或其他需要注意的问题吗?
背景
我正在考虑在 Rails 3.1 中的基于 Sprockets 的资产管道上使用 RequireJS,特别是针对 JavaScript 代码。我做出这个选择有两个动机:
- 我想利用 RequireJS 的模块管理来管理我的 JS 客户端代码。
- 我想要一个预编译系统,可以将我的 JS 库代码跟踪到其他上下文中。令我惊讶的是,Asset Pipeline 预编译器是 Rails 的内置部分,而不是 Sprockets 本身的一部分。
感谢所有反馈,谢谢!
Question
If you've used RequireJS with a Rails 3 (esp 3.1) app, how is that working for you? Any configuration tricks or other gotchas that I need to watch out for?
Background
I'm contemplating using RequireJS over the Sprockets-based Asset Pipeline in Rails 3.1, specifically for JavaScript code. I have two motivators for this choice:
- I want to leverage RequireJS' module management for my JS client-side code.
- I'd like a precompilation system that can follow my JS library code into other contexts. To my surprise, the Asset Pipeline precompiler is a baked-in part of Rails, not a part of Sprockets itself.
All feedback appreciated, thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
对于后代,我在这里讨论这个问题:
RequireJS 提供了 的实现异步模块定义 API。 RequireJS' 为什么选择 AMD?页面列出了为什么要使用它。
Sprockets 和 Rails 3 Asset Pipeline 允许简单构建 JavaScript/CoffeeScript 代码,但不提供任何真正的模块支持。例如,Sprockets 中没有任何命名空间控制。
jQuery(从 1.7 开始)、Underscore、Dojo 和许多其他主要库都实现了 AMD 支持。其他几个主要的 JS 库似乎在近期的 horizion 上支持 AMD(例如 Backbone.js)。
创建一个集成 RequireJS 的 Rails 应用程序当然是可能的。为了简化这个过程,我在 github 上创建了 requirejs-rails gem,并进行了简单的配置以及通过 r.js 对基于 AMD 的代码进行资产管道感知预编译。当前版本可通过以下方式获得:
gem install requirejs-rails
For posterity, here's where I've come to on this question:
RequireJS provides an implementation of the Asynchronous Module Definition API. RequireJS' Why AMD? page lays out the case as to why you'd want to use this.
Sprockets and the Rails 3 Asset Pipeline allow for simple structuring of JavaScript/CoffeeScript code, but don't provide any true module support. For example, there's no namespace control whatsoever in Sprockets.
jQuery (as of 1.7), Underscore, Dojo and numerous other major libraries have implemented AMD support. Several other major JS libraries seem to have AMD support on the near-term horizion (e.g. Backbone.js).
It's certainly possible to create a Rails app that integrates RequireJS. To simplify that process, I've created the requirejs-rails gem on github, with straightforward configuration and Asset Pipeline-aware precompilation for AMD-based code via r.js. The current release is available via:
gem install requirejs-rails