【问题标题】:rails best practices where to place unobtrusive javascriptrails 最佳实践在哪里放置不显眼的 javascript
【发布时间】:2011-02-22 21:46:15
【问题描述】:

我的 Rails 应用程序(所有 2.3.5)完全混合使用内联 javascript、rjs、原型和 jquery。让我们称之为学习或成长的痛苦。最近我越来越迷恋不显眼的 javascript。它让你的 html 变得干净,就像 css 清理它一样。

但是我看到的大多数例子都是小例子,他们把所有的javascript(jquery)都放在了application.js中

现在我有一个相当大的应用程序,我正在想办法构建我的 js。我喜欢我的脚本仍然靠近视图,所以我在想类似的东西

orders.html.erb
orders.js

orders.js 包含特定于该视图的不显眼的 javascript。但也许这只是我太保守了:)

我已经阅读了 Yehuda Katz 关于这个问题 herehere 的一些帖子,他在其中解决了这个问题。它将通过您的 js 文件并仅加载与您的视图相关的那些。但可惜我找不到当前的实现。

所以我的问题:

  • 如何最好地构建不显眼的 javascript;管理您的代码,您如何确保从 html 中可以明显看出应该做什么。我想好的类名有很长的路要走:)
  • 你如何安排你的文件,把它们都加载进去?一些?您是否在视图中使用content_for :scriptjavascript_include_tag 来加载相关脚本。还是……?
  • 您是编写非常通用的函数(如删除)、带有参数(添加额外的属性?),还是编写非常具体的函数(DRY?)。我知道在 Rails 3 中有一个标准集,那里的一切都不显眼。但是如何从 Rails 2.3.5 开始呢?

简而言之:在 Rails 中执行不显眼的 javascript 的最佳实践是什么? :)

【问题讨论】:

    标签: javascript jquery ruby-on-rails ruby unobtrusive-javascript


    【解决方案1】:

    我在尝试解决同样的问题时发现了这篇文章,但没有一个现有的解决方案让我觉得是正确的。我写了我的方法here. 我喜欢 Rails 的配置约定,所以我想要同样的方法来包含仅适用于特定操作页面的 Javascript。如果不出意外,这至少是另一种添加选项的方法。

    【讨论】:

    • 我真的很喜欢你的建议,它非常接近我真正想要的。我现在要做的是在每个控制器的文件中分离 js,然后放入一个大的组合 js,因为加载速度更快(1 个大 js 而不是大量单独的文件)。
    【解决方案2】:

    我认为没有一种最佳做法,但我会告诉你我的工作。

    1. 我在public/javascripts/ 目录中有一系列 js 文件,每个文件都有自己的用途。一些例子可能是utility.jschat.jsshopping_basket.js等等。

    2. 我使用asset packager 并为我的所有通用功能定义了一个大的胖集合,另一个用于管理员功能。往返服务器的成本太高了。我基本上将第一页加载中的所有 js 都包含在一个 blob 中(通常)

    3. 我允许在页面中内联基本的 $(document).ready 钩子,并保持它们非常短。

    4. 我的 js 文件需要访问的数据与页面内联呈现。 (通常在 DOM 中,有时作为 vars - 例如var xyz = 100

    5. 我通常会在关闭 javascript 的情况下开发我的控制器(并确保一切正常),然后我打开它并在需要的地方撒上一些 if request.xhr?


    请记住,Rail 3.1 引入了一个内置的最佳实践,请参阅:http://guides.rubyonrails.org/asset_pipeline.html - 就个人而言,我在新管道中遇到了性能和配置问题,但是许多其他管道都取得了巨大的成功。

    【讨论】:

    • 这很有趣。完全的。我仍然对其他人要说的话感兴趣。
    【解决方案3】:

    我最近记录了我的 managing javascript in Ruby on Rails。我基本上把事情分解成许多小的、细粒度的文件,每个文件都有一个适当的命名空间,然后使用asset_packager将它们全部合并到一个用于生产的文件中。

    【讨论】:

    • 我喜欢你如何为你的视图自动加载一个与你的控制器同名的 .js 文件。至少这似乎是一个好的开始:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-03
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 2013-12-23
    相关资源
    最近更新 更多