7

我们有一些 ASP.net 页面,其中包含 50 多行特定于该页面的 javascript。我们想在 CruiseControl 构建过程中缩小 javascript。

我们已经使用 YUI Compressor 来压缩我们完整的 javascript 和 css 文件。但是我们不知道如何做内联javascript。

是否有一个 MSBuild 任务可以通过 asp.net 页面旋转并缩小 javascript?

4

5 回答 5

4

有一个有趣的博客和NuGet包调用undleMinifyInlineJsCss来处理这个

http://weblogs.asp.net/imranbaloch/archive/2012/07/25/bundling-and-minifying-inline-css-and-js.aspx

于 2012-07-30T08:27:48.427 回答
2

我会将 javascript 提取到方法中并将它们移动到 .js 文件中。并使用页面中的相关参数调用函数。不是一个复杂的过程,更容易维护(更少的代码)。您还可以从客户端内容缓存中受益。


另外:不确定它是否有帮助,但 Google 的 Closure 看起来非常好。

http://code.google.com/closure/

压缩选项:http ://code.google.com/closure/compiler/docs/api-tutorial3.html

可作为 Java 可执行文件或 Web 服务使用。

于 2009-12-22T17:13:21.477 回答
1

如果没有自定义编码,您将无法做到这一点。最简单的方法可能是在 msbuild 文件中创建一个 PreBuild 步骤,该步骤会吐出所有 .aspx 文件并将所有 javascript 正则表达式输出。然后使用 YUI 来缩小内容,用缩小后的版本替换原来的。

您可能还想检查MbCompression,它压缩了很多,包括您的 asp.net 页面,尽管我不相信它也会缩小内联 javascript。

于 2009-12-22T16:28:39.193 回答
0

ASP.NET 现在从 MVC 4 开始内置了捆绑和缩小功能(它也可用于 Web 表单和网页)

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

于 2012-12-03T16:21:33.630 回答
0

可以捆绑和缩小内联 javascript。使用模板化 Razor 助手,您可以创建如下扩展方法:

public static MvcHtmlString AddScriptSource(this HtmlHelper helper, Func<dynamic, HelperResult> source, string key)
{
    string scriptSource = source(null).ToHtmlString();

    // Cache scriptSource here

    return MvcHtmlString.Empty;
}

你会像这样使用它:

@Html.AddScriptSource(@<text>$(document).ready(function() { $('h1').text('The current controller is @ViewContext.RouteData.Values["controller"].ToString()'); });</text>, "test")

几周前,我在以下位置创建了一个捆绑器和压缩器:

https://github.com/philpeace/CodePeace.StrawberryJam

于 2012-12-03T15:18:43.007 回答