【问题标题】:what's the reason behind the default require_tree in asset pipeline?资产管道中默认 require_tree 背后的原因是什么?
【发布时间】:2011-09-20 08:28:21
【问题描述】:

在 Rails 3.1 中使用资产管道时,它会创建一个默认的application.js

//= require jquery
//= require jquery_ujs
//= require_tree .

但是我什么时候需要包含我所有的 javascript?在大多数情况下,我们为不同的控制器/视图使用不同的 javascrips?

【问题讨论】:

  • 我几乎从未尝试过如此细致地拆分我的 JavaScript;确保每一页都有必要的精确文件是不值得的。缩小的 gzip 压缩 JavaScript 大小非常小。
  • 但是css呢? CSS没有命名空间(不像javascript),require_tree .不是容易产生冲突吗?
  • 我几乎从来没有遇到过实质性的 CSS 冲突,但我想这可能是个问题,当然——但在这一点上,您不需要默认行为,因此删除默认配置似乎是合理的.记住——Rails 是固执己见的,并不是每个人都有相同的看法 :)
  • 你的建议是合理的。谢谢
  • CSS 没有命名空间,但可以在模板中将 body id 设置为控制器名称,然后使用“#controller_name element”规则确保该元素仅在选定页面中具有该样式,对不起,如果我含糊其辞。

标签: ruby-on-rails ruby asset-pipeline


【解决方案1】:

require_tree . 将导致您拥有一个文件(在本例中为 application.js),其中包含文件夹中的所有脚本。事实上,浏览器只会从您的 Web 服务器中提取该文件一次(除非您执行 Ctrl + R 刷新或文件缓存属性发生更改),这确实使应用程序在后续请求中表现得更快。

当然,除非您的应用程序包含非常多样且庞大的脚本,并且典型用户不会经常移动,因为他不需要其中的大部分。这显然不是很常见的情况。

了解更多详细信息。看这里 http://guides.rubyonrails.org/asset_pipeline.html

【讨论】:

  • "require_tree . 将导致您拥有一个文件(在本例中为 application.js),其中包含文件夹中的所有脚本。"什么文件夹?
  • @MarkKramer,你的 application.js 所在的文件夹
  • require_tree 是否特殊,因为它必须是唯一的并且只调用一次来创建主 JS 文件?还是仅仅意味着“在此路径的文件树中包含所有 JS”,这意味着您可以在 application.js 文件中的多个单独路径上调用它?
【解决方案2】:

浏览器加载一次application.js,然后从缓存中获取它。

【讨论】:

    【解决方案3】:

    //= 要求树。加载javascript目录中的每个文件或子文件夹文件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-18
      • 2011-06-20
      • 1970-01-01
      • 2010-10-03
      • 1970-01-01
      • 2018-08-31
      • 2020-01-26
      • 2016-03-31
      相关资源
      最近更新 更多