2016-05-16 264 views
2

在我們現有的Web應用程序,我們已經做到了在.cshtml頁面的起點:MVC在哪裏把我們的cshtml文件的JS引用?

@using Carwale.UI.PresentationLogic; 
@model Carwale.Entity.ViewModels.HomeModel 
@{ 
    ViewBag.CustomJS = "~/Views/StaticPartials/HomeScripts.cshtml"; 
    ViewBag.CustomCSS = "~/Views/StaticPartials/HomeCss.cshtml"; 
} 

而且我們"~/Views/StaticPartials/HomeScripts.cshtml",我們有:

@model Company.Entity.ViewModels.HomeModel 
<script>var landingPage = true;</script> 
<script type="text/javascript" src="@(!string.IsNullOrWhiteSpace(ViewBag.staticUrl) ? "http://st.com" + ViewBag.stagingPath : "")/js/home.js?201605021628098010"></script> 

我得到渲染阻擋從各種性能javascript建議網站。

我能以某種方式改進嗎? 我讀到,這應該在頁面底部的一些javascript部分,以提高頁面加載時間。

+0

你需要進一步的幫助嗎? –

回答

1

我建議你使用MVC內的部分。 Here是另一篇解釋章節使用的文章。

下面是一個例子:

如果你有一個主佈局文件,用於定義網站的所有主要佈局,做到以下幾點。將它放在主佈局的主體標籤中。

@RenderSection("scripts", false) 

然後,在從該主佈局文件「繼承」的每一頁/視圖那裏,你可以使用此部分可以添加你的Javascript引用如下:

@section scripts{ 
    Scripts.Render("~/Scripts/YourCustomFolder/SomeJSFile.js") 
} 
+0

我把這個代碼放在哪裏?在cshtml的底部? – maverick

+0

這是正確的。 –

+0

@sahil你是否設法讓它工作? –

1

當瀏覽器擊中腳本標記,他們將停止頁面呈現,直到腳本被下載,解析並執行。

最佳做法是在關閉正文標記之前包含腳本引用。這允許瀏覽器儘快下載並開始渲染頁面標記,而無需等待腳本。

1

對我來說,最好的地方添加所有JavaScript幾乎在HTML文件的末尾。就在我關閉body標籤之前,我插入了所有Javascipt引用和Javascript自定義代碼。我首先想看到我的HTML代碼被加載,然後在這之後看到Javascript相關的東西。加載JavaScript可能需要一段時間,所以最好是最後加載到頁面上:

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
      <meta charset="utf-8" /> 
      <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 
      <meta name="viewport" content="width=device-width, initial-scale=1" /> 
      <title>@ViewBag.MetaTitle</title> 
      @Styles.Render("~/bundles/css") 
    </head> 
    <body> 
      @RenderBody() 
      @Scripts.Render("~/bundles/js") 
      @RenderSection("scripts", false) 
    </body> 
</html> 

我通常參考第一添加到JavaScript庫:

@Scripts.Render("~/bundles/js") 

然後我加我的所有自定義JavaScript代碼後,我已引用這些庫:

@RenderSection("scripts", false) 

凡在你的.cshtml網頁你「注入」您的自定義JavaScript代碼可能並不重要。我通常先加我所有的HTML代碼,然後在我的觀點的底部我將添加像這樣我的Javascript代碼:

<h1>Test Page</h1> 
<p>Test page paragraph</p> 

@section scripts { 
    <script> 
    </script> 
} 

我希望這有助於。

相關問題