【问题标题】:How best to circumvent MVC4 script bundling如何最好地规避 MVC4 脚本捆绑
【发布时间】:2013-12-07 09:55:15
【问题描述】:

在我的 ASP.NET MVC4 Web 应用程序中,我将有许多视图,其中应用程序在视图中用作单页应用程序 (SPA),但导航到另一个视图是通过传统导航完成的。每个视图/页面就像它自己的 SPA。因此,我想为每个页面提供一个特定的 viewmodel.js 文件,因为当我只查看其中一个视图时,我不想为所有视图应用剔除绑定。

我的问题是,我应该为每个 videmodel.js 文件创建一个单独的包,还是可以/应该以某种方式完全规避针对特定视图脚本的捆绑?绕过捆绑的最佳方法是什么?

我试过简单地追加

<script src="~/Scripts/app/inventory.viewmodel.js" type="text/javascript" />

到我的 Index.vbhtml 文件(我的观点),但它出现在其余脚本之上,即使它在 @Section Scripts 块之后。我尝试将它包含在 @Section Scripts 块中,但我无法找出正确的语法来避免使用 @Scripts.Render

再一次,我的问题不仅是如何规避捆绑,而且是否规避捆绑是这里的最佳选择。

编辑我从自闭脚本标签切换到

<script src="~/Scripts/app/inventory.viewmodel.js" type="text/javascript"></script>

嵌入到@Section Scripts 块中,然后它就可以工作了,但我仍然想知道这是否可取。

【问题讨论】:

标签: javascript vb.net asp.net-mvc-4 razor knockout.js


【解决方案1】:

为每个页面创建一个捆绑包并没有错,事实上,它可能是解决您的问题的最佳方法。绕过它会产生更多的工作,你需要实现自己的缩小和编译优化器,只是为了支持你的 JavaScript 的一个子集。

【讨论】:

  • 我不会需要对脚本做任何事情。它运行良好,无需缩小/优化。如果我的脚本相对较小并且可能在缓存中,那么影响似乎很小。但是,如果为每个页面创建一个单独的包没有缺点,我可能会走这条路。处理大量捆绑包的启动开销可以忽略不计吗?
  • 抱歉,您说的很对,您不需要 来实现它们;但是,如果您不这样做,您失去该能力。拥有大量捆绑包不会给您带来任何问题。启动开销是基于每页的,因为您将只包含一个额外的包来呈现视图模型,这将是不明显的。
  • 每次渲染包而不是创建包时都会发生缩小吗?或者它是一个惰性初始化类型的东西,它在第一次被请求时被缩小,然后被服务器缓存以供后续请求使用?
  • 第一次访问包含对您的捆绑包的引用的页面时,它会被编译、缩小和优化,然后放置在缓存中以供所有后续请求使用。我将尝试获取我找到的解释管道如何工作的文档的链接。
猜你喜欢
  • 2012-06-15
  • 1970-01-01
  • 2020-10-15
  • 2012-06-21
  • 2013-04-02
  • 2012-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多