【发布时间】:2017-06-15 00:36:13
【问题描述】:
所以我们正在制作一个带有插件的网站,我想知道是否可以在插件文件夹中搜索任何 js 文件并将它们添加到 BundleConfig.cs 类中的包中.
我曾考虑将我想要捆绑的所有文件命名为 Plugin.pluginName.js,然后搜索所有文件以查找与“Plugin..js*”匹配的任何文件,但是我不确定该怎么做。
如何创建插件包?
【问题讨论】:
标签: c# asp.net-mvc asp.net-mvc-5
所以我们正在制作一个带有插件的网站,我想知道是否可以在插件文件夹中搜索任何 js 文件并将它们添加到 BundleConfig.cs 类中的包中.
我曾考虑将我想要捆绑的所有文件命名为 Plugin.pluginName.js,然后搜索所有文件以查找与“Plugin..js*”匹配的任何文件,但是我不确定该怎么做。
如何创建插件包?
【问题讨论】:
标签: c# asp.net-mvc asp.net-mvc-5
按照命名约定命名要捆绑的所有文件的想法是一个很好的约定。
将脚本包添加到包集合中
public static void RegisterBundles(BundleCollection bundles) {
bundles.Add(new ScriptBundle("~/bundles/plugins").Include(
"~/Scripts/*.Plugin.js")); //{pluginName}.Plugin.js convention
//...other bundles
}
如果您想放弃命名约定,也可以在 plugins 文件夹中搜索任何 js 文件
public static void RegisterBundles(BundleCollection bundles) {
bundles.Add(new ScriptBundle("~/bundles/plugins")
.IncludeDirectory("~/Plugins", "*.Plugin.js", true));
//above recursively search subdirectories of directoryVirtualPath.
//...other bundles
}
在视图中使用注册的名称引用包
@Scripts.Render("~/bundles/plugins")
【讨论】:
"~/Plugins/*.Plugin.js" 似乎只能搜索~/Plugins 文件夹的直接内容。我需要搜索每个直接子文件夹,例如"~/Plugins/*/*.Plugin.js",但您不能使用它,因为通配符只能在最后一部分(文件名所在的位置)。
IncludeDirectory() 方法代替Include() 方法,如下所示:bundles.Add(new ScriptBundle("~/bundles/plugins").IncludeDirectory("~/Plugins", "*.Plugin.js", true)); 谢谢!
什么是捆绑?
捆绑是 ASP.NET 4.5 中的一项新功能,可以轻松地将多个文件合并或捆绑到一个文件中。 您可以创建 CSS、JavaScript 和其他包。更少的文件意味着更少的 HTTP 请求,这可以提高首页加载性能。
如何启用捆绑?
通过在 Web.config 文件的编译元素中设置调试属性的值来启用或禁用捆绑。在以下 XML 中,debug 设置为 true,因此禁用了捆绑和缩小。 XML
<system.web>
<compilation debug="true" />
</system.web>
要启用捆绑和缩小,请将调试值设置为“false”。
您可以使用 BundleTable 类的 EnableOptimizations 属性覆盖 Web.config 设置。 以下代码启用捆绑和缩小并覆盖 Web.config 文件中的任何设置。
示例
public static void RegisterBundles(BundleCollection bundles) {
bundles.Add(new ScriptBundle("~/bundles/AnyName").Include(
"~/Scripts/Plugins/*.js")); // this will all the files in the plugins folder with .js extension
//you can specify files separately if dont want to use wildcards
BundleTable.EnableOptimizations = true;
}
重要提示: Include 方法中指定的虚拟路径和 IncludeDirectory 方法中的搜索模式可以接受一个“*”通配符作为最后一个路径的前缀或后缀段。
谢谢
卡提克
【讨论】: