1

我正在尝试在我的 Rails 应用程序中采用Jammit 。

文档中提供的默认配置会抓取所有 js 文件,包括查看特定的 javascript:

embed_assets: on

javascripts:
  workspace:
    - public/javascripts/vendor/jquery.js
    - public/javascripts/lib/*.js
    - public/javascripts/views/**/*.js
    - app/views/workspace/*.jst

stylesheets:
  common:
    - public/stylesheets/reset.css
    - public/stylesheets/widgets/*.css
  workspace:
    - public/stylesheets/pages/workspace.css
  empty:
    - public/stylesheets/pages/empty.css

让我们考虑一个视图特定的 javascript 应该只在特定视图上执行的情况:

$(function(){
  alert("View specific message here!");
}

我怎样才能避免这种影响?

问候, 阿列克谢·扎哈罗夫

4

2 回答 2

3

我的偏好是将“view-specific-javascript”包装在一个函数中。然后根据您实际加载的页面调用该函数。通过这种方式,您的所有 JavaScript 都可以被浏览器缓存为单个文件,并且您可以执行您需要的 JS 部分。

因此,我会<script>在特定html.erb模板中添加一个标签,该标签会在页面加载时调用您的视图特定功能。

希望有帮助...

于 2010-08-19T15:53:41.623 回答
0

我正在挖掘这一点以指出 jashkenas 方法的替代方法,即将行为仅链接到特定标签。

$(function() {
  $('#my-view-object').someBehaviour();
}

那么,有什么问题呢?主要区别在于 JS 代码倾向于链接到某些对象,而不是页面。如果你重新组织你的视图,你也必须改变你的 JS。另一个问题是 JS 需要位于页面底部才能最大限度地利用浏览器。如果您将脚本条目放在视图中,那么它们很可能最终会遍布页面的 html 标记并减慢渲染速度。

BR, -- 何塞

于 2012-04-22T14:00:47.140 回答