31

我的 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 关于这个问题的一些帖子,他在那里解决了这个问题。它将通过您的 js 文件并仅加载与您的视图相关的那些。但可惜我找不到当前的实现。

所以我的问题:

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

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

4

3 回答 3

10

我认为没有一种最佳做法,但我会让你知道我在做什么。

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

  2. 我使用资产打包器并为我所有的通用功能定义了一个大的胖集合,另一个用于管理员功能。往返服务器的成本太高了。我基本上将第一页加载中的所有 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 - 就个人而言,我在新管道中遇到了性能和配置问题,但是许多其他人有取得了巨大的成功。

于 2010-05-23T13:29:47.903 回答
3

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

于 2010-05-29T13:16:08.260 回答
1

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

于 2010-10-18T14:24:46.617 回答