向 DynamicFolderBundle 添加额外的订购包?
Posted
技术标签:
【中文标题】向 DynamicFolderBundle 添加额外的订购包?【英文标题】:Add additional ordered bundles to a DynamicFolderBundle? 【发布时间】:2015-12-05 02:54:12 【问题描述】:我有一个DynamicFoldewrBundle
:
bundles.Add(new DynamicFolderBundle("userScripts", "*.js", true, new JsMinify()));
所以如果我跑:
http://optimization.localtest.me/files/templates/designs/HelloTreble/userScripts
...它将呈现所有捆绑并缩小在HelloTreble
文件夹中的javascript文件。
好的。
问题:
但是我怎样才能将 custom ordered 包添加到DynamicFolderBundle
?
我试过了:
bundles.Add(new DynamicFolderBundle("userScripts", "*.js",new JsMinify())
.Include("~/Scripts/A.js").Include("~/Scripts/B.js"))
哪个有效。
但输出是:
第一:A.JS 第二个:B.js 第三:[所有HelloTreble
的js文件,缩小]
(当然在一个文件中)
但我真正追求的是:
第一:[所有HelloTreble
的js文件,缩小]
第二个:A.js
第三:B.js
(当然在一个文件中)
【问题讨论】:
可以尝试实现自己自定义的IBundleOrderer
,并在创建DynamicFolderBundle
时设置:var userScripts = new DynamicFolderBundle("userScripts", "*.js",new JsMinify()) .Include("~/Scripts/A.js").Include("~/Scripts/B.js"); userScripts.Orderer = new MyBundlerOrderer(); bundles.Add(userScripts);
@RoyiNamir 我刚刚检查了我的代码 mvc v5.2.3,我的脚本顺序与您正在寻找的相同。 A.js,B.js,然后是缩小的脚本。
【参考方案1】:
你可以实现IBundleOrderer
这样的接口
public class MyBundleOrderer : IBundleOrderer
public IEnumerable<BundleFile> OrderFiles(BundleContext context, IEnumerable<BundleFile> files)
var list = new List<BundleFile>(files);
list.Reverse();
return list;
然后将其附加到您的DynamicFolderBundle
喜欢
var myDynamicBundle = new DynamicFolderBundle("userScripts", "*.js",true,new JsMinify())
.Include("~/Scripts/bootstrap.js")
.Include("~/Scripts/respond.js");
myDynamicBundle.Orderer = new MyBundleOrderer();
bundles.Add(myDynamicBundle);
您的脚本将按照respond.js
、bootstrap.js
、userScripts
包中的脚本的顺序呈现。
【讨论】:
但是如果我想要我包含的文件按照我包含它们的顺序,那么动态文件夹包呢?逆向只会让我走上正轨以上是关于向 DynamicFolderBundle 添加额外的订购包?的主要内容,如果未能解决你的问题,请参考以下文章