gpt4 book ai didi

javascript - ASP.NET bundle 和缩小并从其他 Web 应用程序使用它

转载 作者:行者123 更新时间:2023-11-29 16:17:12 25 4
gpt4 key购买 nike

我有 ASP.NET MVC 4 应用程序,其中包含一些简单的 jQuery 小部件库。现在我想允许其他 Web 应用程序使用该库。与其在客户端页面上按文件插入每个小部件文件,不如在一个请求中将它们全部作为一个包加载。有谁知道是否可以使用 Microsoft ASP.NET Web 优化框架来执行该 bundle ?换句话说,我想准备一些“jquery-library-1.0.0.js”文件并允许其他应用程序加载它。

我能找到的只是如何在 MVC 应用程序中使用它,而没有关于如何使用静态名称准备 bundle 。

最佳答案

经过一些研究,我找到了如何做到这一点的方法——使用 IBundleTransform 接口(interface)。它允许访问包内容,我只需要将它转储到磁盘上我想要的地方,然后将它用于任何其他想要使用该库的应用程序。

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"
});

即使库中的任何小部件被更改,转储文件也会自动重新生成,我没有手动控制这个过程。

关于javascript - ASP.NET bundle 和缩小并从其他 Web 应用程序使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13685768/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com