提问人:nathanvda 提问时间:5/23/2010 最后编辑:Sam Saffronnathanvda 更新时间:9/30/2014 访问量:3151
Rails 最佳实践:在哪里放置不显眼的 JavaScript
rails best practices where to place unobtrusive javascript
问:
我的 Rails 应用程序(所有 2.3.5)完全混合使用了内联 JavaScript、RJS、prototype 和 jQuery。我们称之为学习或成长的烦恼。最近,我越来越迷恋不显眼的javascript。它使你的html变得干净,就像css清理它一样。
但是我看到的大多数例子都是小例子,他们把所有的javascript(jquery)都放在application.js中
现在我有一个相当大的应用程序,我正在考虑构建我的 js 的方法。我喜欢我的脚本仍然接近视图,所以我在想类似
orders.html.erb
orders.js
其中 orders.js 包含特定于该视图的不显眼的 JavaScript。但也许这只是我太保守了:)
我在这里和这里阅读了耶胡达·卡茨(Yehuda Katz)关于这个问题的一些帖子,他在那里解决了这个问题。它将遍历你的js文件,只加载那些与你的视图相关的文件。但是,唉,我找不到当前的实现。
所以我的问题:
- 你如何最好地构建你的不显眼的 JavaScript;管理你的代码,你如何确保从HTML中可以清楚地看出某些东西应该做什么。我想好的班级名称有很长的路要走:)
- 你如何安排你的文件,把它们全部加载进去?就几个?您是否使用 或 在您的视图中加载相关脚本。或。。。?
content_for :script
javascript_include_tag
- 你是编写非常通用的函数(如删除),带有参数(添加额外的属性?),还是编写非常具体的函数(DRY?)。我知道在 Rails 3 中有一个标准集,那里的一切都不显眼。但是如何在 Rails 2.3.5 中开始呢?
简而言之:在 Rails 中执行不显眼的 javascript 的最佳实践是什么?:)
答:
我不认为有一种最佳实践,但我会让你知道我是做什么的。
我有一系列的js文件,每个文件在目录中都有自己的用途。一些例子可以是等等。
public/javascripts/
utility.js
chat.js
shopping_basket.js
我使用资产打包器,并为我的所有通用功能定义了一个大型脂肪集合,并为仅管理员功能定义了另一个。往返服务器的成本太高了。我基本上将所有 js 都包含在第一页加载中,缩小到一个 blob 中(一般来说)
我允许在页面中内联基本钩子,并保持它们非常短。
$(document).ready
我的 js 文件需要访问的数据与页面内联呈现。(通常在 DOM 中,有时作为 vars - 例如。
var xyz = 100
)我通常会在关闭 javascript 的情况下开发我的控制器(并确保一切正常),然后我打开它并在需要时撒上一些。
if request.xhr?
请记住,Rail 3.1 引入了内置的最佳实践,请参阅: http://guides.rubyonrails.org/asset_pipeline.html - 就我个人而言,我在使用新管道时遇到了性能和配置问题,但许多其他人都取得了巨大的成功。
评论
我最近记录了我如何在 Ruby on Rails 中管理 javascript。我基本上将内容分解为许多小的、细粒度的文件,每个文件都有一个适当的命名空间,然后将它们全部合并到一个文件中,以便使用 asset_packager 进行生产。
评论
我在尝试解决同一问题时发现了这篇文章,但现有的解决方案都没有让我觉得是正确的。我在这里写下了我的方法。我喜欢 Rails 的配置约定,所以我想要相同的方法来包含仅适用于特定操作页面的 Javascript。如果不出意外,这至少是添加到您的选择中的另一种方法。
评论
上一个:不显眼的敲除
评论