我们有一些ASP.net页面,其中包含超过50行特定于该页面的javascript。我们想在CruiseControl构建过程中缩小javascript。
我们已经使用YUI Compressor来压缩我们的完整javascript和css文件。但我们无法弄清楚如何进行内联javascript。
是否有一个MSBuild任务来旋转asp.net页面并缩小javascript?
答案 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")
几个星期前我在这里创建了一个捆绑器和缩小器:
答案 4 :(得分:0)
ASP.NET现在已经内置了MVC 4中的捆绑和缩小功能(它也可用于Web表单和网页)
http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification