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が最後であることを確認できれば、その最後のスクリプトタグも必要ありません。
これらは、RequireJSをmain.jsにバンドルするための手順です。 <head>
タグは1行にまとめることができます。これは、匿名定義の問題には対処していません。
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が機能する必要があります データなし-main (baseUrlを設定する必要がありました)
require.config({
baseUrl: "scripts"
});
これは古い質問ですが、RequireJS.NET NuGetパッケージの一部であるRequireJS.NET Compressor(ASP.NETバンドルではなくYUIコンプレッサーを使用します-少なくとも現時点では)を確認できます。
参照:
コンプレッサー- http://requirejsnet.veritech.io/compressor.html
一般的なドキュメント- http://requirejsnet.veritech.io/
Githubプロジェクト- https://github.com/vtfuture/RequireJSDotNet
これが許容できるソリューションかどうかはわかりませんが、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