我已经下载了MVC4并试图弄清楚捆绑功能在标准项目中的工作原理。似乎有捆绑:
<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Scripts/js")"></script>
返回所有jquery.js文件,但不包含所包含脚本中的knockout.js文件。为什么是这样?还有什么是_references.js文件,为什么knockout.js文件被注释掉了?
答案 0 :(得分:8)
如果您查看项目Global.asax
文件,您应该找到类似的内容:
protected void Application_Start()
{
...
BundleTable.Bundles.RegisterTemplateBundles();
}
现在RegisterTemplateBundles
只注册预定义的脚本子集:
如果您想要其他一些文件,可以将RegisterTemplateBundles
更改为EnableDefaultBundles
:
protected void Application_Start()
{
...
BundleTable.Bundles.EnableDefaultBundles();
}
或者创建自己的自定义捆绑包(您可以阅读有关捆绑和缩小here的更多信息)。您还应该知道EnableDefaultBundles
会对性能产生影响。
Visual Studio for JavaScript intellisense使用_references.js
文件。您可以从以下文章中了解更多信息:
答案 1 :(得分:2)
tpeczek是正确的。大多数人不使用Knockout.js,这就是默认情况下不包含它的原因。对于RC来说,捆绑/缩小(BM)已经发生了很大变化,将文件添加到捆绑包中会更加简单。查看我的Bundling and Minification tutorial
答案 2 :(得分:0)
我能够在文件夹中添加一个文件,并在RegisterTemplateBundles()之后添加以下代码行
BundleTable.Bundles.RegisterTemplateBundles();
BundleTable.Bundles.Where(x => x.Path == "~/Scripts/js").First().AddFile("~/scripts/knockout-2.0.0.js");