- PVSM.RU - https://www.pvsm.ru -

Основным нововведением в новой версии Bundle Transformer стала поддержка языка TypeScript [1]. Кроме того, были внесены изменения в ядро продукта и в следующие модули: BundleTransformer.MicrosoftAjax, BundleTransformer.Yui и BundleTransformer.Csso.
Рассмотрим основные нововведения данной версии:
В BundleTransformer.Core [2] появилась возможность отказаться от использования предварительно минимизированных файлов (например, файлы с расширениями *.min.css и *.min.js) и производить минимизацию кода исключительно средствами выбранного минимизатора. За включение/отключение использования предварительно минимизированных файлов отвечают атрибуты usePreMinifiedFiles конфигурационных элементов css и js. В следующем примере показан код, отключающий использование предварительно минимизированных файлов.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
...
<bundleTransformer xmlns="http://tempuri.org/BundleTransformer.Configuration.xsd">
<core>
<css usePreMinifiedFiles="false">
...
</css>
<js usePreMinifiedFiles="false">
...
</js>
...
</core>
...
</bundleTransformer>
...
</configuration>
По умолчанию атрибутам usePreMinifiedFiles присвоены значения равные true.
Данная возможность пригодится тем разработчикам, которые хотят применить ко всему CSS- и/или JS-коду своего веб-приложения алгоритмы минимизации, обладающие наивысшей степенью сжатия. Но следует помнить, что некоторые JS-библиотеки не получится сжать без ошибок. Кроме того, объем сжимаемого кода увеличится, что приведет увеличению продолжительности минимизации на лету.
Модуль BundleTransformer.TypeScript [3] содержит адаптер-транслятор TypeScriptTranslator, производящий трансляцию TypeScript-кода в JavaScript. Если вы еще ничего не слышали о TypeScript, то рекомендую вам прочитать следующие статьи: «TypeScript: язык для разработки больших приложений на JavaScript» [4] Анатолия Ализара и «TypeScript для ASP.NET MVC 4 веб-приложений» [5] Андрея Веселова.
Параметры компиляции TypeScript-кода можно настроить с помощью конфигурационной секции typeScript в файле Web.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
...
<bundleTransformer xmlns="http://tempuri.org/BundleTransformer.Configuration.xsd">
<typeScript useNativeMinification="false" useDefaultLib="true"
propagateConstants="false" errorOnWith="true"
inferPropertiesFromThisAssignment="false"
codeGenTarget="EcmaScript3">
<style bitwise="false" blockInCompoundStatement="false"
eqEqEq="false" forIn="false" emptyBlocks="true"
newMustBeUsed="false" requireSemicolons="false"
assignmentInConditions="false" eqNull="false"
evalOk="true" innerScopeDeclarationsEscape="true"
functionsInLoops="true" reDeclareLocal="true"
literalSubscript="true" implicitAny="false" />
</typeScript>
...
</bundleTransformer>
...
</configuration>
Названия и возможные значения большего количества свойств совпадают с конфигурационными свойствами исходного компилятора, поэтому я рассмотрю свойства, назначение которых может быть не очевидно:
useNativeMinification="(true|false)". Разрешает минимизацию генерируемого JS-кода средствами TypeScript-компилятора. При встроенной минимизации производится удаление пробельных символов и комментариев. Сжатый таким образом код уже не подвергается минимизации средствами модуля-минимизатора, поэтому использовать встроенную минимизацию следует только в случаях, когда по каким-то причинам использование модуля-минимизатора невозможно. Данное конфигурационное свойство управляет сразу двумя свойствами компилятора: minWhitespace и emitComments.useDefaultLib="(true|false)". Разрешает загрузку в компилятор определений общих типов, объявленных в файле lib.d.ts. К общим типам относятся основные типы из ECMAScript, DOM и Windows Script Host.
Чтобы скомпилировать код TS-файла, в котором используются типы, объявленные в других файлах, вам необходимо добавить в код ссылки на эти файлы. Ссылки на файлы добавляются с помощью документирующих тегов <reference> (более подробную информацию о данном теге вы можете прочитать в статье «Облегчаем работу с JS- и CSS-кодом в Visual Studio» [6]).
/// <reference path="jquery.d.ts" />
/// <reference path="TranslatorBadge.ts" />
/// <summary>
/// Creates colored badge for translator
/// </summary>
;class ColoredTranslatorBadge extends TranslatorBadge {
public getTextColor(): string {
/// <summary>
/// Gets a text color of badge
/// </summary>
/// <returns type="String">
/// Text color of badge
/// </returns>
return this.$linkElem.css("color");
}
public setTextColor(color: string): void {
/// <summary>
/// Sets a text color of badge
/// </summary>
/// <param name="color" type="String">
/// Text color of badge
/// </param>
this.$linkElem.css("color", color);
}
public getBorderColor(): string {
/// <summary>
/// Gets a border color of badge
/// </summary>
/// <returns type="String">
/// Border color of badge
/// </returns>
return this.$badgeElem.css("border-color");
}
public setBorderColor(color: string) {
/// <summary>
/// Sets a border color of badge
/// </summary>
/// <param name="color" type="String">
/// Border color of badge
/// </param>
this.$badgeElem.css("border-color", color);
}
}
В приведенном выше коде с помощью документирующих тегов <reference> добавляются ссылки на файлы jquery.d.ts и TranslatorBadge.ts.
В модуле BundleTransformer.MicrosoftAjax [7] была обновлена библиотека Microsoft Ajax Minifier [8] до версии 4.69.
В BundleTransformer.Yui [9] была обновлена библиотека YUI Compressor for .Net [10] до версии 2.1.0.0.
В BundleTransformer.Csso (x86 [11], x64 [12]) был обновлен код минимизатора CSSO [13] до версии 1.3.4.
Автор: Taritsyn
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/17098
Ссылки в тексте:
[1] TypeScript: http://www.typescriptlang.org/
[2] BundleTransformer.Core: http://nuget.org/packages/BundleTransformer.Core
[3] BundleTransformer.TypeScript: http://nuget.org/packages/BundleTransformer.TypeScript
[4] «TypeScript: язык для разработки больших приложений на JavaScript»: https://www.pvsm.ru/post/153077/
[5] «TypeScript для ASP.NET MVC 4 веб-приложений»: http://andrey.moveax.ru/post/typescript-introducing.aspx
[6] «Облегчаем работу с JS- и CSS-кодом в Visual Studio»: http://taritsyn.wordpress.com/2011/10/15/oblegchaem-rabotu-s-js-i-css-kodom-v-visual-studio/
[7] BundleTransformer.MicrosoftAjax: http://nuget.org/packages/BundleTransformer.MicrosoftAjax
[8] Microsoft Ajax Minifier: http://ajaxmin.codeplex.com/
[9] BundleTransformer.Yui: http://nuget.org/packages/BundleTransformer.Yui
[10] YUI Compressor for .Net: http://yuicompressor.codeplex.com/
[11] x86: http://nuget.org/packages/BundleTransformer.Csso.x86
[12] x64: http://nuget.org/packages/BundleTransformer.Csso.x64
[13] CSSO: http://github.com/css/csso
Нажмите здесь для печати.