3

私は MVC にかなり慣れていませんが、作成して読み込もうとした js ファイルの読み込みに多くの矛盾があることに気付きました。

まず、私のウェブサイトの設定方法は次のとおりです。

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

MainMenu を Layout の本体にレンダリングします。すべての jquery スクリプトは、レイアウトのフッターに読み込まれます (どこかで読みました)。

ビューをレンダリングするときは、そのコンテンツに関連する特定のスクリプトをビューの上部に読み込みます。

javascript ファイルをロードする最良の方法は何ですか (Google の cdn ファイルか、プロジェクトに含まれるファイルか)。それらをすべてレイアウト ページのヘッダーにロードする必要がありますか?それとも、使用するときにロードするだけですか? ベスト プラクティスと、mvc アプリケーションでの JavaScript ファイルの管理/読み込み/使用について説明してください。

ご意見ありがとうございます。

4

1 に答える 1

10

Modernizrを使用している場合は、それをヘッドにロードします。jquery を含む他のスクリプトを の一番下にロードしますbody(特に指定しない限り、一部のスクリプトは にする必要があります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>

.cshtmlこれにより、jQuery バンドルが読み込まれ、必要に応じて (他のファイルで) 次のように、ページごとにカスタム スクリプトを読み込むことができるセクションが読み込まれます。

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

そのため、カスタム スクリプトは jQuery の下に配置されます。

ページの下部にスクリプトを配置する義務がある理由:

スクリプトによって引き起こされる問題は、並列ダウンロードがブロックされることです。HTTP/1.1 仕様では、ブラウザがホスト名ごとに並行して 2 つまでのコンポーネントをダウンロードすることが推奨されています。複数のホスト名からイメージを提供する場合、2 つ以上のダウンロードが並行して発生する可能性があります。ただし、スクリプトのダウンロード中は、ホスト名が異なっていても、ブラウザーは他のダウンロードを開始しません。

于 2013-02-09T03:36:30.653 に答える