最近、ASP.NETMVCアプリケーションで自動ビルド最適化を使用してRequrieJSをセットアップする演習を行いました。サイモンのような役立つブログ記事がたくさんあり、参考になります。ASP.NETの観点から、マルチページASP.NETアプリケーション用にRequireJSオプティマイザーを構成するという点で私が見つけた最も有用なものの1つは、RequireJSをASP.NETMVCでうまく動作させることでした。
すでにそこにあるすばらしい情報を使用して、GitHubに独自のASP.NETMVCRequireJSの例を掲載しました。含まれているものの多くは、すでにそこにある例に似ていますが、部分的なビューの問題に対処するために、複数ページには依存関係が必要です。私は少し異なるアプローチを取りました。
_Layout.cshtml
既存の例との最も顕著な違いは、構成データをRequrieJSに渡すためのメソッドと、参照ページ固有のrequire依存関係を公開するカスタムRequireViewPageの作成です。
したがって、_Layout.cshtmlは、次のようになります。
<head>
...
@RenderModuleConfig()
<script type="text/javascript" src="@Url.Script("vendor/require.js")" data-main="main"></script>
</head>
<body>
...
ビューとパーシャル
ビュー(および私の場合はノックアウトビューモデル)を接続するために、次のように_Layout.cshtmlの下部に追加のスクリプトフラグメントが追加されました。
...
@RenderSection("scripts", required: false)
<script type="text/javascript">require(['main'], function () { require(['lib/knockout/knockout.require']); });</script>
</body>
これにより、ビューの依存関係について、メインモジュールがロードされていることが保証されます(メインの依存関係がで定義されていると仮定するmain.js
と、ビュー固有の依存関係をデータ属性を介して接続できます。
<div data-require="@MainModule"> ... </div>
<div data-require="@Module("address")"> ... </div>
<div data-require="view\home\index\model"> ... </div>
デザインと選択の完全な説明については、GitHubのREADMEを参照してください。