2014-07-16 25 views
11

我目前使用的Grails的resources plugin和我有這樣一個定義的很多模塊:如何使用Grails asset-pipeline插件對JS和CSS進行分組?

bootstrap { 
    resource url:'js/libs/bootstrap/bootstrap.min.js' 
    resource url:'css/libs/bootstrap/bootstrap-responsive.css' 
    resource url:'css/libs/bootstrap/bootstrap-glyphicons.css' 
    resource url:'css/libs/bootstrap/bootstrap.min.css' 
} 

這是非常方便,因爲它組Javascript和CSS文件合併成一個單一的概念引導模塊。

我期待到現在asset-pipeline plugin,並且看起來文件只能require同一類型,這意味着我現在有依賴性的兩棵樹(CSS & JS),而不是一個,這是其他文件問題,因爲存在相互依賴關係,例如,bootstrap.js依賴於bootstrap.css。

asset-pipeline插件是否允許聲明類型間依賴關係?如果不是,處理這個問題的最好方法是什麼?

+0

有關asset-pipeline插件的全部觀點是將一個縮小文件中的所有js文件和一個縮小文件中的所有css文件組合在一起。因爲,您將整個js/css的東西放在一個文件中(全部),沒有理由,根本就不聲明依賴關係,因爲所有東西都被傳遞給客戶端。可以在資源插件中定義依賴關係的原因是,因爲它沒有一次提供所有js/css的東西,而是以每頁爲基礎進行......這在執行資產管道時顯然不是必需的。 –

+0

這聽起來不對,因爲你可以在不同的頁面上包含不同的JS文件,每個頁面都有不同的依賴關係。除此之外,爲所有頁面中的每個頁面添加了CSS和JS,這似乎是一個糟糕的主意:爲什麼我需要CSS或JS用於除我所在頁面以外的任何頁面?它只會減慢頁面加載速度。 – Kiwi

+3

當然,你可以在不同的頁面中包含不同的js文件,但是如果你這樣做,資源管道在資源插件上沒有任何好處。性能點的反面是正確的:只有一個js文件被加載了第一個請求,因爲瀏覽器緩存,後續頁面根本不會加載任何js。此外,首先只需要一個http請求,而不是每個頁面的大量請求(瀏覽器只能在並行中進行有限數量的查詢)。這是HTTP-header與-payload的比率,這裏就是這個比例。 –

回答

0

我不認爲這是一個問題。單獨組織JSCSS文件(即使它們都屬於相同的軟件包/產品,例如Bootstrap)是一件好事,如果JS無法引用CSS,請更改URI。

在我看來,如果你想使用Bootstrap和Grails,試試twitter-boostrap。

簽出我的博客文章,註冊Bootstrap CSS templating in Grails,如果你想要一個例子,結賬我使用Twitter Bootstrap here的項目。