asp.net-mvc-4 - ScriptBundle 依赖项

标签 asp.net-mvc-4 asp.net-optimization

我很难让 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/

相关文章:

asp.net-mvc-4 - MVC 4 捆绑 URL 而不是文件

c# - 从 MVC 4 Web Api 返回匿名类型失败并出现序列化错误

c# - 未触发 Kendo UI DropDownList Change 事件

asp.net - 如何在 Application_Start 发生后动态添加 bundle ?

asp.net - 在 WebForms 中调试时关闭 bundle/缩小

.net - 如何让 System.Web.Optimization 包与 IIS 虚拟目录中的自定义文件夹一起使用?

css - MVC4 StyleBundle 不解析图像

asp.net-mvc - MVC 验证消息 - 本地化?

asp.net - 为什么 ASP.NET View 引擎检查 .Mobile.cshtml View 路径?

c# - 在 MVC 中返回列表会导致错误