2012-10-26 68 views
2

我有困难得到ScriptBundle正常工作(如果这是应该在所有的工作)。我正在试图做的是作为一个依赖再添束(jQuery的)我的包,像这样:ScriptBundle依赖性

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")); 

当我在我看来做@Scripts.Render("~/js/myscripts"),只有myscript.js呈现到HTML。如果我从一个在束物理的名称,现有一个改变jQuery的虚拟路径,它的工作原理:

bundles.Add(new ScriptBundle("~/js/myscripts") 
        .Include("~/Content/scripts/jquery-{version}.js", 
          "~/Content/scripts/myscript.js")); 

而且,在视图中做@Scripts.Render("~/js/jquery"),工作。它只是引用不存在的另一个ScriptBundle的不存在的虚拟路径(名称)。这应该工作吗?如果不是,我想知道我可以在哪里发布错误报告,说如果不支持这种情况,这种情况应该会引发异常。如果支持,它说什么,为什么它不工作?

回答

1

由你有你的依赖性都去把你的布局(图)你对此有何评论后

@Scripts.Render("~/js/jquery") 
@Scripts.Render("~/js/myscripts") 

更新:

您不能嵌套包,那是你不能包括在捆绑包中,在创建父包时,该虚拟路径很可能不可用。

通常我有一个单独的jQuery束(包括其他一些不常改变的js)反正再一个其它JS束的一切。适用于浏览器缓存。

在一个侧面说明,有你看着requireJS,这是不是真的需要,如果要捆绑一切,但它确实使你的js文件更好地记录,因为它使明确的依赖性

+0

我不希望两个条目在我的视图中,我想要一个,用于'〜/ js/myscripts'。这是可能的,如果我包含'物理路径到jQuery,但不包括'包含'虚拟路径(用于jQuery的包名称)。 –

+0

啊,我帮你。这不是捆绑的问题。您不能在捆绑包中包含捆绑包路径。这不是我的电话,但是当/如果你用微软登录这个,我会说这是一个功能请求。通常我有一个单独的jquery包(包括一些其他不经常变化的js),然后是其他js包。适用于浏览器缓存。在一个侧面说明,有你看着requireJS,这是不是真的需要,如果要捆绑一切,但它确实使你的js文件更好地记录,因为它使依赖关系明确。 – dove

+0

这是一个不受支持的方案不会抛出异常时的错误。虚拟路径的所有其他错误拼写,对不存在的文件的引用等都会抛出异常,所以这也应该如此。是啊,我使用RequireJS在我的很多项目,但是这一次是如此简单,我想拥有jQuery和捆绑成一个单一的'.js'文件我自己的JS。 –

1

它不支持,但你可以拿出自己的解决方案,这一点,对不对?例如:

var jquery = new[] { "~/Content/scripts/jquery-{version}.js" }; 
var myScripts = jquery.Concat(new[] { "~/Content/scripts/myscript.js" }).ToArray(); 
var myOtherScripts = myScripts.Concat(new[] { "~/Content/scripts/otherscript.js").ToArray(); 

bundles.Add(new ScriptBundle("~/js/jquery").Include(jquery)); 
bundles.Add(new ScriptBundle("~/js/myscripts").Include(myScripts)); 
bundles.Add(new ScriptBundle("~/js/other").Include(myOtherScripts));