【问题标题】:Rails 3: RJS vs JavaScriptRails 3:RJS 与 JavaScript
【发布时间】:2010-07-31 12:27:07
【问题描述】:

我最近开始学习基于 RoR3 beta/RC 的 Ruby on Rails。我之前一直在使用其他框架(如 Django)开发应用程序,其中的 JavaScript 完全是我自己编写的。

在使用 RoR 开发应用程序时,我对两种可能的 JavaScript 实现方式感到困惑:“纯”一种(编写 JavaScript 并将其放在 <script> 标签中)和编写 RJS 文件。

应该使用哪种方法以及何时使用?如果是 RJS,我该如何实现特定的操作,例如 onChange

【问题讨论】:

    标签: javascript ruby-on-rails-3 rjs


    【解决方案1】:

    在 Rails 中,您应该将这两种方法用于不同的任务。我也是。当我想执行 ajax 请求时,我使用 RJS,因为它简化了请求,并允许在 .rjs 文件中用更少的代码编写更强大、更灵活的响应。例如,可以在其中使用局部变量并访问 ruby​​ 变量。当我想让页面更加动态时,我会使用普通的 javascript,包括 javascript_include_tag

    UPD。 这种方法同样适用于 rails 3。它可以与 JQuery 和 HAML 一起使用。 Rails 3 中的 UJS 甚至简化了它。如果您更喜欢 Jquery 而不是 Prototype 以及像 create.js.haml 这样的正确文件命名,那么您唯一应该做的就是使用 jquery-ujs。 例如,可以通过这种方法在 AJAX 请求中使用server-side validation

    【讨论】:

      【解决方案2】:

      在 rails 3 中,正确的做法是纯 JS。 RJS 太严格了,您必须使用 Prototype 或以某种方式破解才能将其与 jQuery 一起使用。 Rails 3 还提倡不显眼的 javascript。在 AJAX 请求中,您应该返回嵌入 ERB 的纯 Javascript,而不是使用 RJS。

      不幸的是,由于此更改需要对使用 RJS 的旧项目进行大量返工,因此有些人会放弃它。

      RJS 实际上在 rails 3 中已被贬值,您需要一个插件才能使用它,所以如果您现在开始并且幸运地已经在 rails 3 上开始,请使用 rails 3 方式。

      这是新的 UJS 方式的一个很好的例子: http://railscasts.com/episodes/205-unobtrusive-javascript

      祝你好运

      【讨论】:

      • 这是最好的答案。不应再使用 RJS,最接近的替代方法是渲染 .js.erb 文件。如果客户端发出 AJAX 请求(如果使用 jQuery,则键入“脚本”),那么服务器操作将,例如,render partial: '/whatever/partial'。部分文件为PROJECT_ROOT/app/views/whatever/_partial.js.erb
      猜你喜欢
      • 2011-01-27
      • 2011-06-01
      • 1970-01-01
      • 2010-10-02
      • 2023-03-12
      • 1970-01-01
      • 2012-04-26
      • 2011-11-06
      • 1970-01-01
      相关资源
      最近更新 更多