在为ASP.net构建期间缩小内联JavaScript?

时间:2009-12-22 16:18:49

标签: asp.net javascript msbuild minify yui-compressor

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

我们已经使用YUI Compressor来压缩我们的完整javascript和css文件。但我们无法弄清楚如何进行内联javascript。

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

5 个答案:

答案 0 :(得分:4)

有一个有趣的博客和 NuGet 包名为undleMinifyInlineJsCss来处理此问题

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

答案 1 :(得分:2)

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


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

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

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

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

答案 2 :(得分:1)

如果没有自定义编码,您将无法执行此操作。最简单的方法可能是在msbuild文件中创建一个PreBuild步骤,它会遍历所有的.aspx文件,并将所有的javascript输出。然后使用YUI缩小内容并用缩小版本替换原始文件。

您可能还想检查MbCompression哪些压缩包括您的asp.net页面,虽然我不相信它也会缩小内联JavaScript。

答案 3 :(得分: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

答案 4 :(得分:0)

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

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