在Asp.Net MVC中完成捆绑和缩小的方式是通过运行时的动态处理。当你创建一个bundle时,它可以被注入任何Asp.Net页面。如果您处于调试模式,捆绑器将以完整格式发送捆绑包中的每个项目,以便于调试。如果您处于发行模式,捆绑器会自动将捆绑中的单个文件的内容解析为单个内存文件流,然后将其缩小。没有必要在项目中明确地包含css/javascript文件的完整版本和缩小版本。然而,由于每ASP.Net Documentation:
捆扎框架如下几种常见的约定,如:
- 选择“.min”文件发布时“FileX.min.js”和“FileX.js “存在。
- 选择非“.min”版本进行调试。
- 忽略仅由IntelliSense使用的“-vsdoc”文件(如jquery-1.7.1-vsdoc.js)。
基本上,如果你有两个完整和精缩版,那么框架将喜欢使用的预精缩版在涅槃文件本身。
在发布模式下加载页面时,捆绑和缩小的效果表现为整个捆绑包的单个css或js文件流,通过对服务器的单个调用表示,例如, http://localhost/MvcBM_time/bundles/AllMyScripts?v=r0sLDicvP58AIXN_mc3QdyVvVj5euZNzdsa2N1PKvb81
。
实际上,将创建一个与捆绑包名称相匹配的唯一路由(本例中为AllMyScripts
)。查询字符串v
有一个值标记,它是用于缓存的唯一标识符。只要包不变,ASP.NET应用程序就会使用此令牌请求AllMyScripts
包。如果包中的任何文件发生更改,ASP.NET优化框架将生成一个新的令牌,以确保浏览器对该包的请求将获得最新的捆绑包。
至于包含来自多个目录的文件,最简单的方法是使用通配符模式匹配。 Include
方法中指定的虚拟路径和IncludeDirectory
方法中的搜索模式可以接受一个*
通配符作为最后一个路径段中的前缀或后缀。搜索字符串不区分大小写。 IncludeDirectory
方法可以选择搜索子目录。
我知道所有这一切。如果它们存在,我只想让捆绑器使用我的.min文件,但我希望它们位于主文件夹的另一个目录中。 – Dismissile
是的,正如我在最后所说的那样,'IncludeDirectory'方法有搜索子目录的选项。例如'bundles.Add(new StyleBundle(“〜/ allStyles”)。IncludeDirectory(“〜/ Styles”,“* .css”,true));'将所有内容添加到'/ Styles'目录中,它的子目录 – Claies
我想那种得到我想要的。 – Dismissile