2
  • RequireJSによって、複数のjsファイルが1つのmain.jsファイルに結合されるようになっている場合、それはASP.NETのスクリプトバンドル機能と本質的に同じですか?
  • バンドルに加えてRequireJSを使用することの唯一の利点は、RequireJS構成に従って特定のスクリプトをロードできることでしょうか?

私はバンドリングとRequireJSの両方に非常に慣れていませんが、いくつか読んだ後、バンドリングは複数のjsファイルをロードするための複数のリクエストを処理しているようです。バンドルでRequireJSを使用することに関して、他に見逃している可能性のあるものはありますか?

4

2 に答える 2

2

MVC 4を使用する場合は、バンドルを使用することをお勧めします。

バンドルを使用すると、デバッグ中か本番環境かによって、ブラウザーでレンダリングされる一連のスクリプトを定義できます。

デバッグ中であるかどうかを検出するには、web.configファイルで次の設定を変更する必要があります

<compilation debug="true">
  • デバッグしている場合、バンドルエンジンはすべてのスクリプトを個別のタグとしてレンダリングします。

  • デバッグしていない場合、バンドルエンジンは1つのタグのみをレンダリングし、現在のバンドルによって参照されるすべてのスクリプトが個別のJSファイルにマージされます

また、バンドルは、レンダリングする必要のあるスクリプトファイルを検出するために規則を使用します

簡単な例

たとえば、JQueryの場合

JQueryスクリプトファイルは次のようになります。

  • jquery-1.8.2.js

  • jquery-1.8.2.min.js

バンドルを宣言するときは、次のようにします。

        bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                    "~/Scripts/jquery-{version}.js"));

ファイル名のバージョンや.min部分を指定していないことに注意してください。これは、これらがバンドルエンジンが正しいファイルを選択するために考慮に入れる特別なトークンであるためです。

指定されたパスを使用してバンドルを参照する場合は常に、バンドルエンジンがそれらを処理し、正しいスクリプトファイルを選択します。次に例を示します。

  • デバッグする場合、jquery-1.8.2.jsファイルがレンダリングされます

  • デバッグしていない場合、jquery-1.8.2.min.jsがレンダリングされます

この例では、バンドルの名前は次のとおり~/bundles/jqueryです。ページでは次のように参照します。

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

バンドルにさらに多くのスクリプトがある場合、同じルールがそれらすべてに適用されます。

複雑な例

このバンドル登録を検討してください

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
            "~/Scripts/jquery.unobtrusive*",
            "~/Scripts/jquery.validate*"));
  • デバッグする場合、これはレンダリングされたHTMLになります

    <script src="/Scripts/jquery.unobtrusive-ajax.js"></script>
    <script src="/Scripts/jquery.validate.js"></script>
    <script src="/Scripts/jquery.validate.unobtrusive.js"></script>
    
  • デバッグしていない場合、これはレンダリングされます:

    <script src="/bundles/jqueryval?v=6Fqs6ZHMM_nFyDgv5mxz89PzsVLAnRNKOhqrK-mI5yU1"></script>
    

    そして、そのリンクにはマージされたすべてのスクリプトファイルが含まれるため、すべてのスクリプトが1回のヒットでブラウザによってダウンロードされるため、ページの読み込みが速くなります。

詳細については、ASP.NET4.5の新機能を参照してください。

于 2012-10-25T19:42:11.597 に答える
2

RequireJSは適切であり、JavaScriptの重いUIを実装するプロジェクトに必要だと言う人もいるかもしれません。

  1. 最初のポイントとして、RequireJSはAsp.netMVCバンドルと同じようには機能しません。デフォルトでは、スクリプトは引き続き個別にロードされます。バンドルを使用すると、MVCでスクリプトを組み合わせる方法を制御できます。RequireJSを使用すると、コードの個々のモジュールを、別のモジュール内の依存関係として宣言したり、独自の依存関係を宣言したりできるように記述できます。基本的に、JS内のすべてのJS構造を処理することになります。
  2. RequireJSは、単なるバンドルメカニズム以上のものを提供します。JavaScriptを使用してUIを構築している場合は、RequireJSを使用した方がよいでしょう。いくつかのjQueryウィジェットが必要な場合は、Asp.netMVCバンドルが最も簡単に設定できます。

複数のリクエストは必ずしも悪いことではありません。最も重要なのは、選択したソリューションがプロジェクトの成長に合わせて拡張できることです。

于 2012-10-26T16:58:06.143 に答える