2

単純な jQuery ウィジェットのライブラリを含む ASP.NET MVC 4 アプリケーションがあります。ここで、他の Web アプリケーションがそのライブラリを使用できるようにしたいと考えています。すべてのウィジェット ファイルをクライアント ページにファイルごとに挿入する代わりに、それらすべてを 1 つの要求でバンドルとしてロードすることをお勧めします。Microsoft ASP.NET Web 最適化フレームワークを使用してそのバンドルを実行できることを知っている人はいますか? 言い換えれば、「jquery-library-1.0.0.js」ファイルを準備して、他のアプリケーションがそれをロードできるようにしたいということです。

私が見つけることができるのは、MVC アプリケーション内でそれを使用する方法だけであり、静的な名前でバンドルを準備する方法については何もありません。

4

3 に答える 3

6

いくつかの調査の後、IBundleTransform インターフェイスを使用して、これを行う方法を見つけました。これにより、バンドル コンテンツにアクセスできるようになり、必要な場所でディスクにダンプし、ライブラリを使用する他のアプリケーションで後で使用するだけで済みます。

public class ScriptsBundleTransform : IBundleTransform
{
    public string ScriptsPath { get; set; }
    public string Version { get; set; }
    public string Minified { get; set; }
    public string Full { get; set; }

    public ScriptsBundleTransform()
    {
    }

    public ScriptsBundleTransform(string path, string version, string minified, string full)
    {
        ScriptsPath = path;
        Version = version;
        Minified = minified;
        Full = full;
    }

    public void Process(BundleContext context, BundleResponse response)
    {
        string scriptsRoot = context.HttpContext.Server.MapPath(Path.Combine(ScriptsPath, Version));

        if (!Directory.Exists(scriptsRoot))
            Directory.CreateDirectory(scriptsRoot);

        //  if minified file name specified...
        if (!string.IsNullOrEmpty(Minified))
        {
            using (TextWriter writer = File.CreateText(Path.Combine(scriptsRoot, Minified)))
            {
                writer.Write(response.Content);
            }
        }

        //  if full file name specified...
        if (!string.IsNullOrEmpty(Full))
        {
            using (Stream writer = File.OpenWrite(Path.Combine(scriptsRoot, Full)))
            {
                foreach (var file in response.Files)
                {
                    file.VirtualFile.Open().CopyTo(writer);
                }
            }
        }
    }
}

その後、バンドル構成でこのトランスフォーマーをディスクにダンプするバンドルに追加する必要があります。

            widgets.Transforms.Add(new ScriptsBundleTransform()
            {
                Version = "1.0.0",
                ScriptsPath = "~/Scripts",
                Minified = "jquery.library.min.js",
                Full = "jquery.library.js"
            });

ライブラリ内のウィジェットが変更されても、ダンプ ファイルは自動的に再生成され、このプロセスを手動で制御する必要はありません。

于 2012-12-03T17:16:52.163 に答える
0

バンドルとミニファイは、Asp.Net4.5の新機能です。

詳細については、 http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minificationを参照して ください。

したがって、Asp.Net 4.5を使用している場合は、すぐに使用できるバンドルとミニファイが可能です。(アプリケーションが構築されているAsp.Netのバージョンを指定していません)

于 2012-12-03T15:43:47.743 に答える
0

バンドルと縮小をスタンドアロン ユーティリティとして使用できるかどうかはわかりませんが、次のいずれかを試すことができます。

  1. プロジェクトで既にバンドルと縮小を使用していて、ブラウザーでページを起動した後に出力 JavaScript ファイルが必要な場合は、ファイルの URL に移動してダウンロードするだけです。

また

  1. Springboard ( https://github.com/soulwire/Springboard ) や Grunt ( http://gruntjs.com ) などのユーティリティを調べることができますが、これらはどちらも Windows で動作するようにするには少し余分な作業が必要です。依存関係。
于 2012-12-03T15:54:48.423 に答える