将一个脚本文件添加到BundleCollection是否有任何价值?

时间:2017-11-14 13:53:01

标签: asp.net-mvc razor

我正在设计一个非常大的应用程序,我想为未来打造良好的基础设施。

在Razor(MVC)中,可以通过使用函数@Scripts.Render("~/Scripts/myscript.js")在视图中包含javascript文件,方法是在BundleConfig.cs中定义BundleCollection中指定特定文件或bundle项。

我想知道,在仅仅单个文件的Scripts.Render函数中定义一个bundle项是否有任何附加值,而不是指定脚本文件本身?

我发现的一个附加价值是,从长远来看,我将能够根据需要向捆绑添加更多文件,而无需更改使用它的视图,我将享受优化。但是当我仍在“捆绑”中使用一个js文件时,我无法找到附加值。

1 个答案:

答案 0 :(得分:2)

除了你提到的那个之外,还有一些好处:

  1. 捆绑包在发布模式下缩小。当您将文件添加到捆绑包(甚至是单个文件)并在视图中引用捆绑包时,代码将缩小。直接引用文件时不是这种情况。这很可能是你在生产中的目标。
  2. 该框架使用每个新版本的捆绑包生成并向脚本附加随机哈希,以使先前捆绑包的缓存无效。它看起来像这个<script src="/bundles/myscript.js?v=CQJxkNd9QnrvutTyUG9mM-vD0FrbCc1"></script>。每次发布新版本后,您的客户都会感谢您。而且 - 如果您直接引用该文件,除非您手动生成并附加版本,否则它不会发生。
  3. 所以我通常做的事情,并且我认为这是一个很好的做法,直到我被证明是错误的,我为每个页面特定的需求创建了一个包,即使它包含一个带有一个小模块的单个js文件。例如主页:

    bundles.Add(new ScriptBundle("~/bundles/home").Include("~/Scripts/home.js")); @Scripts.Render("~/bundles/home")