vẻ rất giống với câu hỏi này: Linking JavaScript Libraries in User Controls
tôi sẽ repost câu trả lời của tôi cho câu hỏi đó ở đây.
Tôi chắc chắn sẽ khuyên bạn không nên đặt chúng bên trong partials cho chính xác lý do bạn đề cập. Có khả năng cao là một lượt xem có thể kéo theo hai phần chia tách mà cả hai đều có tham chiếu đến cùng một tệp js. Bạn cũng đã đạt được hiệu suất của tải js trước khi tải phần còn lại của html.
Tôi không biết cách thực hành tốt nhất nhưng tôi chọn bao gồm bất kỳ tệp js phổ biến nào trong trang chủ và sau đó xác định một ContentPlaceHolder riêng cho một số tệp js bổ sung dành riêng cho một số lượt xem cụ thể hoặc nhỏ.
Đây là trang cái mẫu - nó khá tự giải thích.
<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>
<head runat="server">
... BLAH ...
<asp:ContentPlaceHolder ID="AdditionalHead" runat="server" />
... BLAH ...
<%= Html.CSSBlock("/styles/site.css") %>
<%= Html.CSSBlock("/styles/ie6.css", 6) %>
<%= Html.CSSBlock("/styles/ie7.css", 7) %>
<asp:ContentPlaceHolder ID="AdditionalCSS" runat="server" />
</head>
<body>
... BLAH ...
<%= Html.JSBlock("/scripts/jquery-1.3.2.js", "/scripts/jquery-1.3.2.min.js") %>
<%= Html.JSBlock("/scripts/global.js", "/scripts/global.min.js") %>
<asp:ContentPlaceHolder ID="AdditionalJS" runat="server" />
</body>
Html.CSSBlock & Html.JSBlock rõ ràng phần mở rộng của riêng tôi nhưng một lần nữa, họ tự giải thích trong những gì họ làm.
Sau đó, trong tiếng nói một cái nhìn SignUp.aspx tôi sẽ phải
<asp:Content ID="signUpContent" ContentPlaceHolderID="AdditionalJS" runat="server">
<%= Html.JSBlock("/scripts/pages/account.signup.js", "/scripts/pages/account.signup.min.js") %>
</asp:Content>
HTHs, Charles
Ps. Dưới đây là một câu hỏi theo dõi tôi hỏi về rút gọn và concatenating file js: Concatenate & Minify JS on the fly OR at build time - ASP.NET MVC
EDIT: Theo yêu cầu về câu trả lời khác của tôi, thực hiện của tôi .JSBlock (a, b) theo yêu cầu
public static MvcHtmlString JSBlock(this HtmlHelper html, string fileName)
{
return html.JSBlock(fileName, string.Empty);
}
public static MvcHtmlString JSBlock(this HtmlHelper html, string fileName, string releaseFileName)
{
if (string.IsNullOrEmpty(fileName))
throw new ArgumentNullException("fileName");
string jsTag = string.Format("<script type=\"text/javascript\" src=\"{0}\"></script>",
html.MEDebugReleaseString(fileName, releaseFileName));
return MvcHtmlString.Create(jsTag);
}
Và sau đó, nơi sự kỳ diệu sẽ xảy ra ...
public static MvcHtmlString MEDebugReleaseString(this HtmlHelper html, string debugString, string releaseString)
{
string toReturn = debugString;
#if DEBUG
#else
if (!string.IsNullOrEmpty(releaseString))
toReturn = releaseString;
#endif
return MvcHtmlString.Create(toReturn);
}
Cách tốt nhất là thực sự có javascript bao gồm ở cuối trang html, để tăng hiệu suất của trình duyệt trong khi hiển thị trang. –
Tôi chưa bao giờ nghe về điều này ... Bạn có thể đưa ra một số nguồn để sao lưu tuyên bố này không? – Peter
2Eduardo Scoz - Chính xác –