从外部加载MVC JS包

时间:2013-11-27 16:14:38

标签: asp.net-mvc bundling-and-minification system.web.optimization

我的MVC 5项目中有一个小型JS库,我想让外部用户加载到他们的应用程序中。目前我正在捆绑它:

bundles.Add(new ScriptBundle("~/clientApi")
    .IncludeDirectory("~/Api/clientapps/", "*.js"));

然后,我可以通过路径/clientApi上的浏览器访问捆绑的库。

但是,它总是缩小,即使我已经设置了我的web.config debug = true,并且我自己的应用程序中的其他捆绑包也包含在非缩小版中。

如何将捆绑中的文件作为非缩小捆绑文件提供?

2 个答案:

答案 0 :(得分:1)

如果您直接访问/clientApi,那么它将是捆绑/缩小版本。

debug=true选项会在您自己的 .cshtml文件中影响您的脚本引用。当debug=true时,对单个脚本文件的引用将呈现给客户端(因此客户端根本不使用/clientApi)。

debug=false时,对/clientApi(带有版本查询字符串)的引用将呈现给客户端,因此它们会获得捆绑/缩小版本...如果您将该链接提供给这些外部用户,那就是要呈现的内容。

该路径不关心它是否是调试。它不像/clientApi要捆绑但不会缩小文件,具体取决于您的编译设置...它只是您的应用将呈现捆绑/缩小的路径或单个脚本路径。

如果您想在外部应用程序中进行调试/测试,那么他们只需使用单独的脚本路径。

即使您在测试完成后确实为这些外部应用程序提供了/clientApi引用,并且它们已准备好使用捆绑/缩小版本,但它并未解释您将如何处理版本控制。如果您更新脚本,他们将如何知道停止缓存?

答案 1 :(得分:0)

实际上,如果禁用Bundles

的转换,则可以不受限制地提供捆绑包
protected void Application_Start() {
    BundleTable.EnableOptimizations = true; // Force bundling to occur

    // If the compilation node in web.config indicates debugging mode is enabled
    // then clear all transforms. I.e. disable Js and CSS minification.
    if (HttpContext.Current.IsDebuggingEnabled) {
        BundleTable.Bundles.ToList().ForEach(b => b.Transforms.Clear());
    }
}