ASP.NET MVC プロジェクトで RequireJS/AMD のようなモジュラー JavaScript をバンドルおよび縮小するための優れたソリューションを経験したり、知っている人はいますか?
RequireJS オプティマイザーを使用する最善の方法はありますか (おそらくビルド後のアクションでしょうか?)、または ASP.NET MVC に適した方法はありますか?
ASP.NET MVC プロジェクトで RequireJS/AMD のようなモジュラー JavaScript をバンドルおよび縮小するための優れたソリューションを経験したり、知っている人はいますか?
RequireJS オプティマイザーを使用する最善の方法はありますか (おそらくビルド後のアクションでしょうか?)、または ASP.NET MVC に適した方法はありますか?
匿名の定義を使用した場合に発生する問題だと思います。すべての定義を含む結合/バンドルされたスクリプトファイルが必要な場合は、それらに名前を付ける必要があります。
例えば。
define("someModule", ["jquery", "ko"], function($,ko) { ... });
それ以外の
define(["jquery", "ko"], function($,ko) { ... });
モジュール名としてファイル名を使用すると、それらを非同期でロード(バンドルされていない)およびプリロード(バンドルされている)することができます。そうすれば、必要なものを変更することなく、デバッグモードとリリースモードで作業できます。
匿名定義を処理するかどうかを知るためのRequireJSオプティマイザーの経験はありません。
アップデート:
私は最近これをしなければならず、私が遭遇した問題の1つは、require.jsをロードするスクリプトタグのdata-main属性でした。main.jsファイルはバンドルされたモジュールに依存しているため、main.jsの前に、require.jsの後にロードする必要があります。そのため、data-mainを破棄し、最後にそのファイル(バンドル解除)をロードする必要がありました。
から
<script src="../JS/require-v2.1.2.js" type="text/javascript" data-main="main.js"></script>
に
<script src="../JS/require-v2.1.2.js" type="text/javascript"></script>
<%: System.Web.Optimization.Scripts.Render("~/bundles/signup") %>
<script src="main.js" type="text/javascript"></script>
私は調べていませんが、バンドル構成でmain.jsが最後であることを確認できれば、その最後のスクリプトタグも必要ありません。
これらは、main.js にバンドルされている RequireJS を取得する手順です。タグは 1 行まで記述できます<head>
。これは、匿名定義の問題には対応していません。
HTML
<head runat="server">
<title></title>
<%: System.Web.Optimization.Scripts.Render("~/bundles/scripts") %>
</head>
BundleConfig.cs
using System.Web;
using System.Web.Optimization;
public class BundleConfig
{
// For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/bundles/scripts").Include(
"~/scripts/libs/require.js",
"~/scripts/main.js"));
}
}
main.js はdata-main なしで動作する必要があります (baseUrl を設定する必要がありました)
require.config({
baseUrl: "scripts"
});
これが受け入れられる解決策であるかどうかはわかりませんが、Visual Studio 2012 には、ネイティブの縮小とバンドルをサポートする NuGet パッケージ (Microsoft.Web.Optimization) があります。2010年に発売されるかどうかはわかりません
application_start の 1 行のコードです。
Microsoft.Web.Optimization.BundleTable.Bundles.EnableDefaultBundles();
http://msdn.microsoft.com/en-us/vs11trainingcourse_aspnetandvisualstudio_topic5