我们有一些包含50多行特定于该页面的javascript的ASP.net页面。我们希望在CruiseControl构建过程中对该javascript进行压缩。我们已经使用YUI Compressor来压缩我们的完整javascript和css文件。但是我们无法弄清楚如何处理内联javascript。是否有MSBuild任务可以遍历asp.net页面并最小化javascript?
有一个有趣的博客和NuGet包叫做undleMinifyInlineJsCss
来处理这个问题。
http://weblogs.asp.net/imranbaloch/archive/2012/07/25/bundling-and-minifying-inline-css-and-js.aspx
http://code.google.com/closure/
压缩选项:http://code.google.com/closure/compiler/docs/api-tutorial3.html 可作为Java可执行文件或Web服务使用。如果没有自定义编码,您将无法完成此操作。最简单的方法可能是在msbuild文件中创建一个PreBuild步骤,该步骤通过所有.aspx文件并使用正则表达式将所有javascript删除。然后使用YUI来压缩内容并用压缩版本替换原始版本。
您还可以检查MbCompression,它可以压缩很多内容,包括您的asp.net页面,尽管我不认为它也会缩小内联javascript。
可以将内联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")
我几周前创建了一个打包器和压缩器,网址是:
从MVC 4开始,ASP.NET现在已经内置了捆绑和压缩功能(同样适用于Web Forms和Web Pages)
http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification