2013-02-09 81 views
3

我是相當新的MVC,我注意到加載js文件,我寫和試圖加載很多不一致。MVC 4 - 哪裏加載JS腳本

開始,這裏就是我有我的網站設置:

_Layout.cshtml (main page) 
Index.cshtml 
_MainMenu.cshtml (partial view) 

我使我的MainMenu在佈局的身體。所有的jquery腳本都被加載到佈局的頁腳中(我閱讀的地方更喜歡)。

當我渲染視圖時,我在視圖頂部加載了與該內容相關的任何特定腳本。

什麼是加載JavaScript文件(無論是從谷歌的CDN文件或包含在我的項目中的文件)的最佳途徑?我是否應該將所有這些內容加載到佈局頁面的標題中,或者只是在使用它們時加載它們?有人可以解釋最佳做法,並在mvc應用程序中管理/加載/使用JavaScript文件。

謝謝您的輸入!

回答

10

如果您使用的是Modernizr,請將其加載到頭部。在body的底部加載其他腳本(包括jquery)(除非另有說明 - 某些腳本將需要爲head)。理想情況下,你的_Layout.cshtml看起來像:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <!-- head stuff --> 
    @Scripts.Render("~/bundles/modernizr") 
</head> 
<body> 
    <!-- your entire body --> 
    @Scripts.Render("~/bundles/jquery") 
    @RenderSection("scripts", required: false) 
</body> 
</html> 

這樣,將載入您的jQuery包,然後一個部分,在那裏你可以加載自定義腳本每頁,根據需要,像(在其他一些.cshtml文件):

@section Scripts { 
    @Scripts.Render("~/bundles/myNiceBundle") 
} 

所以它會把你的自定義腳本放在jQuery下。

Obligatory reason for putting scripts at bottom of page

引起腳本的問題是,它們阻斷並行下載。 HTTP/1.1規範建議瀏覽器每個主機名並行下載兩個並行組件不得多於 。如果您從多個主機名中提供 圖像,則可以並行執行兩個以上的下載併發生 。然而,當腳本正在下載時,瀏覽器將不會啓動任何其他下載,即使是在不同的主機名上。

+0

感謝這個很好的解釋Mike – mvcNewbie 2013-02-09 19:29:00