我们有一些 ASP.net 页面,其中包含 50 多行特定于该页面的 javascript。我们想在 CruiseControl 构建过程中缩小 javascript。
我们已经使用 YUI Compressor 来压缩我们完整的 javascript 和 css 文件。但是我们不知道如何做内联javascript。
是否有一个 MSBuild 任务可以通过 asp.net 页面旋转并缩小 javascript?
我们有一些 ASP.net 页面,其中包含 50 多行特定于该页面的 javascript。我们想在 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
我会将 javascript 提取到方法中并将它们移动到 .js 文件中。并使用页面中的相关参数调用函数。不是一个复杂的过程,更容易维护(更少的代码)。您还可以从客户端内容缓存中受益。
另外:不确定它是否有帮助,但 Google 的 Closure 看起来非常好。
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。
ASP.NET 现在从 MVC 4 开始内置了捆绑和缩小功能(它也可用于 Web 表单和网页)
http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification
可以捆绑和缩小内联 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")
几周前,我在以下位置创建了一个捆绑器和压缩器: