我们可以在asp.net捆绑中使用什么样的文件

时间:2014-09-23 11:05:18

标签: c# asp.net bundling-and-minification

我想知道是否可以像捆绑

一样添加ascx文件
  bundles.Add(new ScriptBundle("~/bundles/First").Include(
                    "~/Script/js.ascx"));

我想知道,因为假设我必须在产品发布后再捆绑添加一个文件,然后我必须再次构建。

2 个答案:

答案 0 :(得分:2)

不,我们不能在捆绑包中包含ascx文件我们只使用js和css文件进行捆绑...这里有一个小解释为什么我们使用捆绑包

随着Web应用程序变得越来越复杂,它所依赖的外部脚本的数量也会显着增加。从jQuery和一些应用程序库开始,比如 Backbone.js(及其依赖项,Underscore),然后从基础知识和一些表单验证脚本等UI框架中插入插件 - 更不用说应用程序的代码本身! - 并且您可以轻松发现您的应用程序有许多外部文件,每个文件都必须在每次刷新页面时加载。

为了解决这个问题,开发人员经常使用名为“bundlers”的工具,它将脚本文件或样式表 - 连接在一起成为一个文件,从而减少了在Internet上发送多个文件的I / O开销许多人还执行一个称为“缩小”的过程,从而删除非必要的空格,并将变量名称更改为尽可能短,从而产生一个不可读但高效的代码片段。

ASP MVC提供了两个定制的类,用于捆绑 ScriptBundle用于JavaScript文件,StyleBundle用于CSS。这两个类都提供内置缩小功能,从而进一步降低了总有效负载。您需要为每个捆绑包指定唯一的路径。

var myBundle = new ScriptBundle("~/bundles/js");

使用此捆绑包,您只需使用其方法添加新文件(或整个目录!):

myBundle.IncludeDirectory("~/js/vendor/");
myBundle.Include("~/js/app.js");

完成每个捆绑包后,将其添加到作为参数传入的集合中

bundles.Add(myBundle);

继续此模式,直到您配置了所有您想要的包。

答案 1 :(得分:1)

我无法回答具体问题(没有尝试过),但要解决问题":

  

我想知道,因为假设我必须在产品发布后再捆绑添加一个文件,然后我必须再次构建。

根据docs on bundling,您可以选择包含文件甚至目录和通配符:

所以:

BundleCollection bundles = BundleTable.Bundles;

bundles.Add((new ScriptBundle("~/bundle/custom")
     .IncludeDirectory("~/Scripts/edsf/", "ed*")));

意思是:

  • 我定位文件夹/Scripts/edsf
  • 我希望在所述目录中以"ed"开头的所有脚本都在脚本包中,例如:
    • edsf.js
    • edfoo.js

如果我将新文件edbar.js添加到/Scripts/edsf目录,它将自动捆绑,您将看到版本字符串更新。

无需建立......

... H个