我目前使用的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插件是否允許聲明類型間依賴關係?如果不是,處理這個問題的最好方法是什麼?
有關asset-pipeline插件的全部觀點是將一個縮小文件中的所有js文件和一個縮小文件中的所有css文件組合在一起。因爲,您將整個js/css的東西放在一個文件中(全部),沒有理由,根本就不聲明依賴關係,因爲所有東西都被傳遞給客戶端。可以在資源插件中定義依賴關係的原因是,因爲它沒有一次提供所有js/css的東西,而是以每頁爲基礎進行......這在執行資產管道時顯然不是必需的。 –
這聽起來不對,因爲你可以在不同的頁面上包含不同的JS文件,每個頁面都有不同的依賴關係。除此之外,爲所有頁面中的每個頁面添加了CSS和JS,這似乎是一個糟糕的主意:爲什麼我需要CSS或JS用於除我所在頁面以外的任何頁面?它只會減慢頁面加載速度。 – Kiwi
當然,你可以在不同的頁面中包含不同的js文件,但是如果你這樣做,資源管道在資源插件上沒有任何好處。性能點的反面是正確的:只有一個js文件被加載了第一個請求,因爲瀏覽器緩存,後續頁面根本不會加載任何js。此外,首先只需要一個http請求,而不是每個頁面的大量請求(瀏覽器只能在並行中進行有限數量的查詢)。這是HTTP-header與-payload的比率,這裏就是這個比例。 –