有,我用兩種方式:
對於細小的,瑣碎的腳本,只是平添幾分養眼的,我經常有他們的內聯模板,他們修改(就像你已經證明) ,因爲我更容易跟蹤這種方式。
對於任何一個以上的兩個小行我保持低調,但加載它使用content_for
我的應用程序佈局看起來像這樣(在HAML):
= javascript_include_tag 'jquery.144.min','rails','jquery.tools','application'
= yield :scripts
的重要組成部分,是yield :scripts
。然後,在一個網頁,我需要一些javascript我做的:
- content_for :scripts do
= javascript_include_tag 'photo_form'
這將加載在標題中的JavaScript,但只有當給定的模板中。 content_for
使用相應的名稱將內容發送到yield
方法。
你可以堅持一個這樣的產量塊 - 我還有一個就在結束標籤之前。 Yield/content_for真的很方便。
注意,正如tadman在評論中指出的那樣,任何不必在頭部加載的東西都應該在頁面的最後加載。
最後一件事是知道的,如果你有更復雜的東西,你也可以用你的模板和應用程序視圖之間的實例變量。例如,我在應用程序佈局中有一個菜單欄。所以,有時候我只想在某些頁面上觸發一個特定於上下文的按鈕或附加的按鈕行。
在我的應用程序佈局我叫偏這使得菜單,菜單的代碼如下所示:
#menubar (normal menu stuff)
- if @special_menu
#special_menu
這樣,那麼在任何模板,你可以這樣做:
- @special_menu = true
...併爲該頁面顯示給定的菜單。你也可以在控制器動作中做到這一點,我有一個控制器,我添加了一個之前的過濾器,將其中一個菜單標誌設置爲true。對於任何可能需要有條件地包含的JavaScript複雜集合,您都可以做同樣的事情。
大多數的這些想法我觀看這部railscast有:http://railscasts.com/episodes/30-pretty-page-title
你應該看一看!
當你說「非常快」時,你可能會誇大其詞。 20-30KB的JavaScript是很多,但它不是「大」,因爲它可以被髮送到約3KB的瀏覽器,並且如果你的服務器配置正確,它將在請求之間被緩存。只有像jQuery-UI或Google Maps這樣的大型圖書館應該關注你,而不是在沒有使用它們的頁面上加載這些圖書館可以提供幫助。 – tadman 2011-04-08 15:20:41