そのページに固有の50行以上のJavaScriptを含むASP.netページがいくつかあります。CruiseControlビルドプロセス中にそのJavaScriptを縮小したいと思います。
すでにYUICompressorを使用して、完全なjavascriptファイルとcssファイルを圧縮しています。しかし、インラインJavaScriptの実行方法を理解することはできません。
asp.netページをスピンしてjavascriptを縮小するMSBuildタスクはありますか?
そのページに固有の50行以上のJavaScriptを含むASP.netページがいくつかあります。CruiseControlビルドプロセス中にそのJavaScriptを縮小したいと思います。
すでにYUICompressorを使用して、完全なjavascriptファイルとcssファイルを圧縮しています。しかし、インラインJavaScriptの実行方法を理解することはできません。
asp.netページをスピンしてjavascriptを縮小するMSBuildタスクはありますか?
これを処理するために呼び出される興味深いブログとNuGetパッケージがありますundleMinifyInlineJsCss
http://weblogs.asp.net/imranbaloch/archive/2012/07/25/bundling-and-minifying-inline-css-and-js.aspx
javascriptをメソッドに抽出し、それらを.jsファイルに移動します。代わりに、ページから関連するパラメーターを使用して関数を呼び出します。複雑な手順ではなく、保守がはるかに簡単です(コードが少ない)。また、クライアント側のコンテンツキャッシングの恩恵を受けることもできます。
また:それが役立つかどうかはわかりませんが、Googleのクロージャーは本当に良さそうです。
http://code.google.com/closure/
圧縮オプション:http ://code.google.com/closure/compiler/docs/api-tutorial3.html
Java実行可能ファイルまたはWebサービスとして利用できます。
カスタムコーディングなしではこれを行うことはできません。最も簡単な方法は、msbuildファイルにPreBuildステップを作成することです。このステップは、すべての.aspxファイルを吐き出し、すべてのjavascriptを正規表現します。次に、YUIを使用してコンテンツを縮小し、オリジナルを縮小バージョンに置き換えます。
また、asp.netページを含む多くの圧縮を行うMbCompressionを確認することもできますが、インライン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")
数週間前に、この周りにバンドラーとミニファイアを作成しました。
ASP.NETには、MVC 4の時点でバンドルとミニファイが組み込まれています(WebフォームとWebページでも使用できます)
http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification