我的 Rails 应用程序(所有 2.3.5)使用了内联 javascript、rjs、原型(prototype)和 jquery 的总组合。让我们称之为学习或成长的烦恼。最近我越来越迷恋不显眼的javascript。它使您的 html 变得干净,就像 css 清理它一样。
但是我看到的大多数例子都是小例子,他们把所有的javascript(jquery)都放在application.js里面
现在我有一个相当大的应用程序,我正在想办法构建我的 js。我以某种方式喜欢我的脚本仍然接近 View ,所以我在想类似的事情
orders.html.erb
orders.js
其中 orders.js 包含特定于该 View 的不显眼的 javascript。但也许那只是我太保守了:)
我读过 Yehuda Katz 关于这个问题的一些帖子 here和 here ,他解决了这个问题。它将遍历您的 js 文件并仅加载与您的 View 相关的文件。但可惜我找不到当前的实现。
所以我的问题:
- 您如何最好地构建您的不显眼的 javascript;管理您的代码,您如何确保从 html 中可以清楚地看出应该做什么。我想好的类(class)名称大有帮助:)
- 你如何安排你的文件,将它们全部加载进去?一些?您是否在 View 中使用
content_for :script
或javascript_include_tag
来加载相关脚本。或者……? - 您是编写非常通用的函数(如删除)、带参数(添加额外属性?),还是编写非常具体的函数(DRY?)。我知道在 Rails 3 中有一个标准集,那里的一切都不引人注目。但是如何在 Rails 2.3.5 中启动呢?
简而言之:在 Rails 中执行不显眼的 JavaScript 的最佳实践是什么? :)
最佳答案
我认为没有一种最佳做法,但我会让你知道我做了什么。
我在
public/javascripts/
中有一系列 js 文件,每个文件都有自己的用途。目录。一些示例可能是utility.js
chat.js
shopping_basket.js
等等。我使用 asset packager并为我所有的通用功能定义一个大的 fat 集合,为仅管理功能定义另一个。往返服务器的成本太高了。我基本上将所有 js 包含在第一个页面加载中并缩小到一个 blob 中(通常)
我允许基本
$(document).ready
在页面中内联 Hook ,并使它们非常短。我的 js 文件需要访问的数据与页面内嵌呈现。 (通常在 DOM 中,有时作为变量 - 例如
var xyz = 100
)我通常会在关闭 javascript 的情况下开发我的 Controller (并确保它一切正常),然后我打开它并撒上一些
if request.xhr?
在需要的地方。
请记住,Rail 3.1 引入了内置的最佳实践,请参阅:http://guides.rubyonrails.org/asset_pipeline.html - 就我个人而言,我在使用新管道时遇到过性能和配置问题,但是许多其他管道都取得了巨大的成功。
关于javascript - rails 最佳实践在哪里放置不显眼的 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2891523/