2017-08-03 73 views
1

我有一個與Jekyll合併成一個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 }}

有沒有辦法像這樣做? Wihtout wherefirst子句?

+0

如何定義'site.css'? – marcanuy

+0

@marcanuy我在原始問題中添加了一些關於site.css的信息。這只是一個集合。 –

+0

爲什麼你使用集合而不是直接將它們添加到css文件夾? – marcanuy

回答

2

對於例外情況,我會使用if語句而不是遍歷文件。

但是,在使用此解決方案時,我會考慮緩存。如果一個頁面使用'superlargecombined.css',而另一個頁面使用'superlargecombinedcsswithoutonepart.css',則客戶端需要(全部)下載它們。這不是一個優化。如果你保持你的css文件分離,他們可以被緩存,並將被下載一次,獨立於你的頁面css配置。雖然(儘量減少請求)總是需要連在一起的東西是一個很好的解決方案,但請注意,對於HTTP2來說,減少請求的需求將大大減少。

希望這會有所幫助!

+1

你在那裏做得很好。例外只需要一個CSS,而不是全部。所以這是一個非常小的文件。但是,主頁仍然使用superlargecombined.css,所以非常小的頁面仍然需要下載額外的數據,因爲99%的時間用戶將通過主頁面。 –

相關問題