【问题标题】:MVC 4 - Where to load JS ScriptsMVC 4 - 在哪里加载 JS 脚本
【发布时间】:2013-02-09 03:27:06
【问题描述】:

我是 MVC 的新手,我注意到在加载我编写并尝试加载的 js 文件时存在很多不一致。

首先,我的网站设置如下:

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

我在 Layout 的主体中呈现我的 MainMenu。所有 jquery 脚本都加载在布局的页脚中(我在某个地方读到了更可取的)。

当我渲染视图时,我会在视图顶部加载与该内容相关的任何特定脚本。

加载 javascript 文件(无论是来自 google 的 cdn 文件还是我的项目中包含的文件)的最佳方式是什么?我应该将它们全部加载到我的布局页面的标题中,还是在我使用它们时加载它们?有人可以解释一下在 mvc 应用程序中的最佳实践和管理/加载/使用 javascript 文件吗?

感谢您的意见!

【问题讨论】:

    标签: javascript jquery asp.net-mvc


    【解决方案1】:

    如果您使用的是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 规范建议浏览器不再下载 每个主机名并行超过两个组件。如果您提供图片 从多个主机名,您可以获得两个以上的下载 在平行下。但是,在下载脚本时,浏览器不会 开始任何其他下载,即使在不同的主机名上。

    【讨论】:

    • 感谢迈克的精彩解释
    猜你喜欢
    • 1970-01-01
    • 2017-11-17
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多