Сократить встроенный JavaScript во время сборки для ASP.net? - PullRequest
7 голосов
/ 22 декабря 2009

У нас есть несколько страниц ASP.net, которые содержат более 50 строк JavaScript, специфичных для этой страницы. Мы хотели бы минимизировать этот javascript во время процесса сборки CruiseControl.

Мы уже используем YUI Compressor для сжатия наших полных файлов JavaScript и CSS. Но мы не можем понять, как сделать встроенный JavaScript.

Существует ли задача MSBuild для прокрутки страниц asp.net и минимизации JavaScript?

Ответы [ 5 ]

4 голосов
/ 30 июля 2012

Существует интересный блог и NuGet пакет под названием undleMinifyInlineJsCss для обработки

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

2 голосов
/ 22 декабря 2009

Я бы извлек javascript в методы и переместил их в файлы .js. и вместо этого вызовите функции с соответствующими параметрами со страниц. Не сложная процедура и гораздо проще в обслуживании (меньше кода). Вы также можете воспользоваться кэшированием контента на стороне клиента.


Также: не уверен, поможет ли это, но Google Closure выглядит действительно хорошо.

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

Параметры сжатия: http://code.google.com/closure/compiler/docs/api-tutorial3.html

Доступен в виде исполняемого файла Java или веб-службы.

1 голос
/ 22 декабря 2009

Вы не сможете сделать это без пользовательского кодирования. Возможно, самым простым способом было бы создать шаг PreBuild в файле msbuild, который выплевывает все файлы .aspx и перераспределяет весь javascript. Затем используйте YUI для минимизации содержимого и замените оригинал минимизированной версией.

Вы также можете проверить MbCompression , который сжимает много, включая ваши страницы asp.net, хотя я не верю, что это также уменьшает встроенный JavaScript.

0 голосов
/ 03 декабря 2012

ASP.NET теперь имеет встроенную связку и минификацию начиная с MVC 4 (она также доступна для веб-форм и веб-страниц)

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

0 голосов
/ 03 декабря 2012

Возможно связать и минимизировать встроенный 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

...