我很难让 ScriptBundle
正常工作(如果这应该工作)。我想做的是添加另一个包(jQuery)作为我的包的依赖项,如下所示:
bundles.Add(new ScriptBundle("~/js/myscripts")
.Include("~/js/jquery",
"~/Content/scripts/myscript.js"));
~/js/jquery
是 jQuery 包的“名称”(虚拟路径),注册如下(在我的依赖包之前):
bundles.Add(new ScriptBundle("~/js/jquery")
.Include("~/Content/scripts/jquery-{version}.js"));
当我在我的 View 中执行 @Scripts.Render("~/js/myscripts")
时,只有 myscript.js
被渲染为 HTML。如果我将 jQuery 的虚拟路径从 bundle 名称中的路径更改为现有的物理路径,它就会起作用:
bundles.Add(new ScriptBundle("~/js/myscripts")
.Include("~/Content/scripts/jquery-{version}.js",
"~/Content/scripts/myscript.js"));
此外,在 View 中执行 @Scripts.Render("~/js/jquery")
是有效的。它只是引用了另一个不起作用的 ScriptBundle 的不存在的虚拟路径(名称)。这应该有效吗?如果没有,我想知道在哪里可以发布错误报告,说明如果不支持此场景,则应抛出异常。如果支持,它在哪里说明以及为什么不起作用?
最佳答案
根据您的依赖关系,您必须将其放入布局( View )中
@Scripts.Render("~/js/jquery")
@Scripts.Render("~/js/myscripts")
发表评论后更新:
您不能嵌套 bundle ,也就是说,您不能在 bundle 中包含 bundle ,在创建父 bundle 时,该虚拟路径很可能不可用。
通常我有一个单独的 jquery 包(包括其他一些不经常更改的 js),然后还有一个用于其他所有内容的 js 包。非常适合浏览器缓存。
顺便说一句,您是否看过 requireJS,如果您要捆绑所有内容,则实际上并不需要它,但它确实可以更好地记录您的 js 文件,因为它使依赖关系明确
关于asp.net-mvc-4 - ScriptBundle 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13083607/