我有 ASP.NET MVC 4 应用程序,其中包含一些简单的 jQuery 小部件库。现在我想允许其他 Web 应用程序使用该库。与其在客户端页面上逐个文件插入每个小部件文件,不如在一个请求时将它们全部加载为一个包。有谁知道是否可以使用 Microsoft ASP.NET Web 优化框架来做那个捆绑包?换句话说,我想准备一些“jquery-library-1.0.0.js”文件并允许其他应用程序加载它。
我能找到的只是如何在 MVC 应用程序中使用它,而没有关于如何准备带有静态名称的包。
我有 ASP.NET MVC 4 应用程序,其中包含一些简单的 jQuery 小部件库。现在我想允许其他 Web 应用程序使用该库。与其在客户端页面上逐个文件插入每个小部件文件,不如在一个请求时将它们全部加载为一个包。有谁知道是否可以使用 Microsoft ASP.NET Web 优化框架来做那个捆绑包?换句话说,我想准备一些“jquery-library-1.0.0.js”文件并允许其他应用程序加载它。
我能找到的只是如何在 MVC 应用程序中使用它,而没有关于如何准备带有静态名称的包。
经过一些研究,我找到了如何做到这一点的方法 - 使用 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"
});
即使库中的任何小部件将被更改,转储文件也会自动重新生成,我没有手动控制这个过程。
捆绑和缩小是 Asp.Net 4.5 的新功能
您可以在此处找到更多详细信息: http ://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification
因此,如果您拥有 Asp.Net 4.5 - 您拥有开箱即用的捆绑和缩小功能。(您尚未指定构建应用程序的 Asp.Net 版本)
我不确定您是否可以将捆绑和缩小用作独立实用程序,但您可以尝试以下方法之一:
或者