【问题标题】:Scriptmanager Asp.Net Mvc脚本管理器 Asp.Net Mvc
【发布时间】:2010-09-24 03:15:06
【问题描述】:

我想在新的 Asp.net MVC 模型中拥有一些 ScriptManager 功能:

1- 脚本组合
2- 解决外部 Javascript 文件的不同路径
3- 缩小和 Gzip 压缩

Here 是我发现的,但我不确定是 MVC 方法的最佳方式。一般来说,在 MVC 模型中处理 Javascript 代码的好方法是什么?

【问题讨论】:

标签: javascript jquery asp.net-mvc performance gzip


【解决方案1】:

也许您可以创建一个新的“脚本”控制器,其中包含不同的操作,服务于压缩 JS 文件的不同组合。由于 MVC 是采用面向资源的方法设计的,即 URL 现在是您的编程模型的中心,为什么不也为您的 Javascript 定义简单的 URI 呢?

在您的观点中,例如,您可以像这样引用您的文件:

<script src="http://your_domain/scripts/all"/>

这将调用您的“全部”操作,从而发送您所有的压缩脚本文件。

当然你现在需要编写合并和压缩的代码,或者可能在内部重用 Scriptmanager,我不知道是否可能。

这只是一个想法,目前我直接在我的母版页中引用单个 javascript 文件。

【讨论】:

  • 我猜它必须是一个静态 js 文件,在 URL 中具有不同的域名(无 cookie)。在这种情况下,ScriptController 不起作用。
【解决方案2】:

试试这个: http://www.codeplex.com/MvcScriptManager

MvcScriptManager 旨在将 AjaxControlToolkit 的 ToolkitScriptManager 中可用的某些关键功能移植到当前的 ASP.NET MVC 框架中。您将能够将其用作 ASP.NET MVC 应用程序中的控件。

特点

  1. 脚本组合(或串联)。使用 MvcScriptManager 声明的脚本将在页面呈现时即时组合成单个脚本文件请求。
  2. 发布模式下的脚本缩小(或处理)。缩小过程仅在引用特定脚本的第一个请求时执行一次。后续请求将使用缓存中经过处理的脚本内容(详见 #5)。可以为每个脚本启用/禁用处理。
  3. 为独立脚本文件呈现本地化资源。如果指定,本地化字符串将附加到脚本中。
  4. 在输出脚本时支持可配置的 HTTP 压缩和过期设置。
  5. 具有文件依赖性的脚本缓存。脚本文件内容被缓存,以便渲染组合脚本文件的性能更高。缓存依赖项与物理文件相关联,因此文件系统中的任何脚本更新都会立即反映在缓存中。
  6. 支持根据运行环境以调试/发布模式渲染脚本。
  7. 解决独立脚本文件的不同路径。
  8. 在单个页面(或母版页)上支持多个 MvcScriptManager。支持 Master 和 Slave 两种渲染模式,以便使用一个 ScriptManager 声明的脚本可以滚动到另一个进行渲染。
  9. 支持网络农场场景...

【讨论】:

    【解决方案3】:

    或者将 ScriptManager 本身包含在一个单独的、每页一次 &lt;form runat="server"&gt; 的唯一居民中怎么样?

    像这样:-

       <form runat="server">
          <asp:ScriptManager ID="ScriptManager1" runat="server" EnableScriptGlobalization="true">
          </asp:ScriptManager>
        </form>
    

    为我工作。

    附:您需要确保此表单标签永远不会嵌入到另一个表单中。嵌套表单不起作用。

    【讨论】:

      【解决方案4】:

      发现这个研究几乎相同的问题:A Simple ScriptManager for ASP.NET MVC - 在回答此问题后写,因此添加以供参考。

      在第一种情况下,我将使用蛮力解决方案,即将它全部粘贴在母版页中(尤其是现在可以从 Microsoft 的 CDN 中提取 jQuery)——然后我们将研究更多最佳解决方案的选项。

      【讨论】:

      • 虽然看起来不错,但它似乎并没有合并或压缩任何东西。它只允许您在母版页上轻松包含一次脚本。
      • @luckyllama - 公平点,问题是这是一个复杂的问题。我建议缩小应该在理想情况下发生在构建时而不是运行时。组合是一个灰色区域——尤其是如果您在每个页面上都有不同的脚本组合 – 因为您正在失去缓存的好处。压缩可能应该由服务器处理,并且多个来源是另一个问题,除非有人建议同一个脚本可能来自两个我无论如何都会遇到问题的地方......
      【解决方案5】:

      MVC 4 现在包括捆绑和缩小助手。您定义了捆绑中的所有脚本,MVC 将负责捆绑、压缩、缓存清除等。

      http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-01
        • 2012-08-24
        • 1970-01-01
        • 2013-03-27
        • 1970-01-01
        相关资源
        最近更新 更多