2013-05-26 21 views
1

我在Ruby on Rails的第5章中,當R-o-R檢測到並堵塞所有的css和js文件時,我遇到了「Asset pipeline」。Ruby on Rails資產管道 - 如何僅在特定頁面上加載某些資產?

確實,瀏覽器將不得不減少請求,但同時,瀏覽器可能需要處理更多的代碼而不是它應該的?

例如,我在圖庫頁面中使用了滑塊jquery插件,因爲RoR將插件與其他所有js文件合併爲1個javascript.js,插件將包含在關於頁面,主頁等等中。

我可以爲分隔的頁面導入分離的文件嗎?如何?

感謝

+1

我知道這是一個重要的討論,這些都是合法的問題。但是這種開放式的辯論並不適合Stack Overflow的Q&A格式。這些問題往往會被版主關閉。如果你想把它帶到Google+上的Rails社區或Rails子版本,你可能會得到更有用的迴應。 – depa

+1

謝謝@depa –

回答

3

一個做的每一頁的文件,方法是告訴資產管道生成額外的文件,然後手動加載它們。在第一部分,告訴ROR生成一個特定的文件,你會調整自己的config/application.rb文件,並添加:

config.assets.precompile += %w(my_special_file1.js my_special_file2.js) 

添加要創建該列表的所有文件。像對待application.js文件那樣對待每個文件。

然後,在您的頁面中,您只需使用javascript_include_tag加載所需的文件。

儘管關於特定jQuery插件的示例可能不會從這種方法中看到很多好處,但作爲一般策略,如果您想在不同版本的站點上包含不同的代碼集,這將非常有用。例如,可能是管理網站與用戶網站,或者移動網站或常規瀏覽器網站。

親/問題是一個更大的話題,因爲depa提到了辯論。但請注意,JavaScript + CSS文件通常很小,gzip友好,並且資產管道,緩存友好。總之,除非你有非常明確的需求,否則你可能不需要優化它。

+0

我能想到的一個例子是,當我調整一個插件對兩個站點的工作方式不同時。如果一個插件的2個版本連接在一起,會有碰撞...超級真棒!非常感謝 –

相關問題