rails最佳实践在哪里放置不引人注目的JavaScript

nat*_*vda 31 javascript ruby jquery ruby-on-rails unobtrusive-javascript

我的rails应用程序(全部是2.3.5)使用内联javascript,rjs,prototype和jquery的混合.让我们称之为学习或成长的痛苦.最近我越来越迷恋不引人注目的javascript.它使你的html干净,就像css清理它一样.

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

现在我有一个非常大的应用程序,我正在考虑如何构建我的js.我喜欢某种方式,我的脚本仍然靠近视图,所以我在想类似的东西

orders.html.erb
orders.js
Run Code Online (Sandbox Code Playgroud)

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

我看过耶胡达·卡茨一些职位,关于这个问题非常这里这里,他铲球这个问题.它将遍历您的js文件,并仅加载与您的视图相关的文件.但唉,我找不到当前的实现.

所以我的问题:

  • 你如何最好地构建你不引人注目的JavaScript; 管理你的代码,你如何确保从HTML中明显看出应该做什么.我想好的班级名字很长:)
  • 你如何安排你的文件,加载它们?一些?你是否使用content_for :scriptjavascript_include_tag在你的视图中加载相关的脚本.要么 ... ?
  • 你编写非常通用的函数(如删除),带参数(添加额外的属性?),还是编写非常具体的函数(DRY?).我知道在Rails 3中有一个标准集,并且那里的一切都不引人注目.但是如何从Rails 2.3.5开始呢?

简而言之:在rails中执行不显眼的javascript的最佳做法是什么?:)

Sam*_*ron 10

我认为没有一个最好的做法,但我会告诉你我做了什么.

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

  2. 我使用资产打包器并为我的所有常用功能定义一个大胖集合,为管理员功能定义另一个胖集合.往返服务器的成本太高了.我基本上将第一页上的所有j加载到一个blob中(通常)

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

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

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


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