【问题标题】:Jekyll: How to include specific file from collection?Jekyll:如何从集合中包含特定文件?
【发布时间】:2017-08-04 18:22:18
【问题描述】:

我有一组 css 文件,我用 Jekyll 将它们合并为一个。这很容易:

{% for file in site.css %}
{{ file }}
{% endfor %}

但是,有一种特殊情况,我只想包含其中一个文件。 pages.css 文件。

site.css 是一个集合,所以我只是将我所有的 css 文件放在一个名为 _css 的文件夹中,并在 _config.yml 中添加:

collections:
  css:
    output: false

我只能使用{{ site.css | where:"title", "Pages" | first }} 包含_css/pages.css 文件。但我想知道是否有更好的方法。类似{{ site.css/pages.css }}

有没有办法做到这一点?没有wherefirst 子句?

【问题讨论】:

  • site.css 是如何定义的?
  • @marcanuy 我在原始问题中添加了一些有关 site.css 的信息。这只是一个集合。
  • 为什么使用集合而不是直接将它们添加到css文件夹中?
  • @marcanuy 这样我就可以轻松地将它们组合成一个大的 css 文件,然后添加到实际网页中。

标签: jekyll liquid


【解决方案1】:

对于例外情况,我会使用 if 语句而不是循环文件。

但是,我会在使用此解决方案时考虑缓存。如果一个页面使用“superlargecombined.css”而另一个页面使用“superlargecombinedcsswithoutonepart.css”,则客户端需要(完全)下载它们。那不是优化。如果您将 css 文件分开,它们可以被缓存并下载一次,与您的页面 css 配置无关。将总是需要粘在一起的东西组合起来是一个很好的解决方案(以最大限度地减少请求),但请注意,使用 HTTP2 时,最大限度地减少请求的需求将大大减少。

希望这会有所帮助!

【讨论】:

  • 你说得很好。例外只需要一个 css,而不是全部。所以这是一个非常小的文件。但是,主页仍然使用 superlargecombined.css,因此非常小的一个仍然是需要下载的额外数据,因为 99% 的时间用户会通过主页。
猜你喜欢
  • 1970-01-01
  • 2016-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-17
  • 1970-01-01
  • 2011-05-17
  • 2012-09-22
相关资源
最近更新 更多