4

我有一个带有 jquery 的 ASP.net 解决方案,例如,在某些页面中,我将其引用如下:

 <script type="text/javascript" src="Scripts/jquery-1.9.1.js"></script>
 <script type="text/javascript" src="Scripts/jquery-ui-1.10.2.js"></script>

问题是现在 Nuget 将 jquery 的解决方案引用更新到了 2.0 版,并且它没有更新脚本引用……这也发生在其他 javascript 引用中……

我如何引用这些脚本,所以当 nuget 更新它们时,它也会更新相关的页面引用?

4

1 回答 1

3

这是一种间接的答案,但在许多情况下仍然是可行的解决方案。


NuGet 更新页面 - 不可行

我不相信 Nuget 能够更新您页面中的任何内容。我不相信它有权执行这些类型的操作。此外,这可能非常不安全。


使用捆绑和通配符 - 可行

这是我推荐的方法。它需要优化包(可以通过 NuGet 下载)。它也减少了请求的数量,这总是很好的。

本质上,您创建脚本“捆绑包”,允许您将多个脚本文件组合在一起(也适用于 CSS)。下面是使用{version}通配符的捆绑示例。

public class BundleConfig 
{
    public static void RegisterBundles(BundleCollection bundles) 
    {
        bundles.Add(new ScriptBundle("~/bundles/jquery")
            .Include("Scripts/jquery-{version}.js"));

        bundles.Add(new ScriptBundle("~/bundles/jqueryui")
            .Include("Scripts/jquery-ui-{version}.js"));
     }
}

然后在 Global.asax.cs 中的 Application_Start 方法中注册包。

最后,您可以更换您的

<script type="text/javascript" src="Scripts/jquery-1.9.1.js"></script>
<script type="text/javascript" src="Scripts/jquery-ui-1.10.2.js"></script>

<%: Scripts.Render("~bundles/jquery") %>
<%: Scripts.Render("~bundles/jqueryui") %>

这将在您的文件夹中获取最新版本的 jQuery 并加以利用,因此您无需再次更改脚本引用。

注意"~/bundles/jquery"字符串可以随意调用。
注意:这仅适用于 .NET 4.5+(感谢Kevin Johnsrude
参考Web 表单中的捆绑和缩小

另外,虽然你并没有真正问到这个问题,但我觉得有义务提一下。这些脚本引用可以重新定位到<head>块中的 MasterPage,这将允许您减少代码重复(并符合 DRY 原则)。

于 2014-07-25T19:41:38.160 回答