将 RequireJS 与 Rails 3.1 应用程序一起使用

发布于 2024-12-12 01:59:39 字数 413 浏览 1 评论 0原文

问题

如果您已将 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

迷迭香的记忆 2024-12-19 01:59:39

对于后代,我在这里讨论这个问题:

  • 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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文