Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 4 脚本包依赖项_Asp.net Mvc 4_Asp.net Optimization - Fatal编程技术网

Asp.net mvc 4 脚本包依赖项

Asp.net mvc 4 脚本包依赖项,asp.net-mvc-4,asp.net-optimization,Asp.net Mvc 4,Asp.net Optimization,我很难让ScriptBundle正常工作(如果这应该可以正常工作的话)。我试图做的是将另一个bundle(jQuery)作为依赖项添加到我的bundle中,如下所示: bundles.Add(new ScriptBundle("~/js/myscripts") .Include("~/js/jquery", "~/Content/scripts/myscript.js")); ~/js/jquer

我很难让
ScriptBundle
正常工作(如果这应该可以正常工作的话)。我试图做的是将另一个bundle(jQuery)作为依赖项添加到我的bundle中,如下所示:

bundles.Add(new ScriptBundle("~/js/myscripts")
                    .Include("~/js/jquery",
                             "~/Content/scripts/myscript.js"));
~/js/jquery
是jquery捆绑包的“名称”(虚拟路径),注册为(在我的从属捆绑包之前):

当我在视图中执行
@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
的不存在的虚拟路径(名称)。这应该有用吗?如果没有,我想知道我可以在哪里发布一个bug报告,说如果不支持,这个场景应该抛出一个异常。如果它被支持,它会说它在哪里,为什么不工作?

根据您的依赖关系,您必须在布局(视图)中放置的所有内容是什么

评论后更新:

不能嵌套捆绑包,即不能在捆绑包中包含捆绑包,在创建父捆绑包时,该虚拟路径很可能不可用

通常,我有一个单独的jquery包(包括一些其他不经常更改的js),然后是一个其他js包。适用于浏览器缓存


顺便说一句,你看过requireJS了吗?如果你把所有东西都捆绑在一起,它其实并不需要,但它确实使你的js文件有了更好的文档化,因为它使依赖关系明确化了。

这似乎是一个不受支持的特性,所以我支持它。

它不受支持,但你可以想出自己的解决方案,对吗?比如:

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

我的视图中不需要两个条目,我需要一个,用于
~/js/myscripts
。如果我
Include
到jQuery的物理路径,这是可能的,但是如果我
Include
虚拟路径(在jQuery的bundle名称中使用),这是不可能的。啊,我明白了。这不是捆绑的bug。不能在捆绑包中包含捆绑包路径。这不是我的电话,但当/如果你向microsoft登录时,我会说这是一个功能请求。通常,我有一个单独的jquery包(包括一些其他不经常更改的js),然后是一个其他js包。适用于浏览器缓存。顺便说一句,你看过requireJS了吗?如果你把所有东西都捆绑在一起的话,就不需要它了,但它确实让你的js文件有了更好的文档记录,因为它使依赖关系更加明确。当不受支持的场景没有引发异常时,这是一个bug。虚拟路径的所有其他拼写错误、对不存在的文件的引用等都会引发异常,因此也应该如此。是的,我在我的许多项目中都使用了RequireJS,但这一个非常简单,我希望将jQuery和我自己的JS捆绑到一个
.JS
文件中。关于异常,这很公平,但我想他们很难推断它是一个捆绑包,而不是要包含的文件夹。对于同一个文件中的两个,您在第三个示例中的问题中得到了答案。如果您提供的虚拟路径在物理上不存在,并且不作为另一个
脚本包的名称存在,则将引发异常。因此,这里有逻辑根据已经注册的虚拟路径检查虚拟路径,但它对它没有任何作用。这显然是一个错误,国际海事组织。
@Scripts.Render("~/js/jquery")
@Scripts.Render("~/js/myscripts")
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));