33

ASP.NET MVC プロジェクトで RequireJS/AMD のようなモジュラー JavaScript をバンドルおよび縮小するための優れたソリューションを経験したり、知っている人はいますか?

RequireJS オプティマイザーを使用する最善の方法はありますか (おそらくビルド後のアクションでしょうか?)、または ASP.NET MVC に適した方法はありますか?

4

3 に答える 3

13

匿名の定義を使用した場合に発生する問題だと思います。すべての定義を含む結合/バンドルされたスクリプトファイルが必要な場合は、それらに名前を付ける必要があります。

例えば。

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が最後であることを確認できれば、その最後のスクリプトタグも必要ありません。

于 2012-11-13T21:59:47.160 に答える
2

これらは、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"
});
于 2014-03-22T00:54:56.613 に答える
0

これが受け入れられる解決策であるかどうかはわかりませんが、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

于 2012-07-20T20:38:53.890 に答える