Как стать автором
Обновить
32
0
Андрей Тарицын @Taritsyn

Веб-разработчик

Отправить сообщение
Похоже, что я ерунду написал. Они есть в промежутке от «Новичок в IT» до «.NET Developer».
Они остались «за бортом», потому что эта карта создавалась на основе списка фирменных учебных курсов и сертификационных статусов Microsoft.
Существует дорожная карта развития .NET-разработчика — edu.cbsystematics.com/ru/education/roadmap.aspx

image
Мне кажется, что эта статья должна быть не на Хабре, а на Geektimes.
Если в выражениях привязки содержаться JavaScript-комментарии, то они тоже удаляются.

Для HTML-кода используется большое количество оптимизаций, и все они описаны в самой первой статье «WebMarkupMin HTML Minifier – современный HTML-минимизатор для платформы .NET».
Насколько я вижу минимизация html чаще всего заключается в удалении пробелов и перносов строки, это же не много. + html шаблоны весят не так много как js и css(по моему личному опыту).

WebMarkupMin не ограничивается только удалением пробельных символов. Используются и другие оптимизации, которые описаны в самой первой статье «WebMarkupMin HTML Minifier – современный HTML-минимизатор для платформы .NET».

Эффективность минимизации HTML-кода не такая высокая, как при минимизации JavaScript и CSS, но, тем не менее, она ощутима. Рекомендую вам прочитать последние статьи Кристенсена «Effect of tabs vs. spaces in HTML files» и «Effects of GZipping vs. minifying HTML files». Чтобы проверить эффективность WebMarkupMin вы можете даже не устанавливать его, а просто протестировать на сайте WebMarkupMin Online.

В bundletransfromer не планируется добавить аналогичную фичу(html bundle, с возможностью сжатия)?

Мне кажется, что реализация HTML-бандлов очень специфична для конкретного проекта и зависит от используемого MV*-фреймворка. Реализация HTML-бандлов в Web Essentials 2013 слишком простая и ей не хватает генерации именованных контейнеров.

По поводу написания модуля для Bundle Transformer пока не могу ничего сказать, потому что не вижу необходимости в использовании инфраструктуры Bundle Transformer для реализации данного функционала. Скорее всего, это будет отдельное расширение под Microsoft ASP.NET Web Optimization Framework, которое будет выпущено как модуль для WebMarkupMin. В качестве основы можно взять код из 5-й главы обучающего курса Трэвиса Госселина «ASP.NET Bundling, Minification & Resource Optimization».
Их можно использовать в SPA-приложениях. Только вам нужно будет самостоятельно обернуть содержимое файлов в именованный контейнер:

<div id="ИМЯ_ФАЙЛА_БЕЗ_РАСШИРЕНИЯ" style="display: none;">…</div>

или

<script type="ТИП_СОДЕРЖИМОГО" id="ИМЯ_ФАЙЛА_БЕЗ_РАСШИРЕНИЯ">…</script>

, где ТИП_СОДЕРЖИМОГО зависит от конкретного фреймворка (например, text/html для KnockoutJS или text/ng-template для AngularJS).
Комментарий был удален, потому что был написан не в ту ветку.
1) Source map мог бы быть доступен через VirtualPath, аналогично тому как вы это сделали

Bundle Transformer производит только трансформации (классы StyleTransformer и ScriptTransformer – это просто реализации интерфейса System.Web.Optimization.IBundleTransform), всю остальную работу, за исключением отладочных HTTP-хэндлеров, делает System.Web.Optimization (он же Microsoft ASP.NET Web Optimization Framework).

2) less/sass возможно, но что такого происходит с typescript, что сломает source map?

В документирующих тегах <reference> также производится преобразование относительных путей в абсолютные:

/// <reference path="jquery.d.ts" />
/// <reference path="TranslatorBadge.ts" />
…


Если бы все было настолько легко и просто, то поддержка генерации .map-файлов уже давно появилась бы в аналогичных продуктах (например, Cassette и SquishIt).

Некорректно сравнивать Microsoft ASP.NET Web Optimization Framework + Bundle Transformer с Grunt/Gulp, т.к. это совершенно разные классы инструментов. Сравнение с Sprockets было бы логичным.

Лучше сравните с ними Web Essentials и Chirpy.
Скорее всего, поддержки .map-файлов не будет. Перечислю основные проблемы:

  1. Bundle Transformer ничего не записывает в файловую систему, потому что является расширением для System.Web.Optimization. Уже были попытки добавить в System.Web.Optimization генерацию встроенных source map`ов (например, проект AspNetBundling), но они оказались неудачными.
  2. Перед трансляцией LESS-, Sass- и TypeScript-файлов Bundle Transformer производит их предварительную обработку (например, преобразует относительные пути в абсолютные), а такая обработка ломает любые source map`ы. Добавьте еще к этому наличие возможности добавлять пользовательские постпроцессоры и трансформации элементов.
Bundling and Minification (он же Microsoft ASP.NET Web Optimization Framework) работает только на уровне ASP.NET. Рекомендую вам посмотреть инструменты, создающие бандлы на этапе сборки проекта (например, Web Essentials или Task Runner Explorer).
По поводу CDN рекомендую вам прочитать следующие материалы: «Bundling and Minification» и «Microsoft ASP.NET Web Optimization 1.1.0 Release Notes».
1. На каждый лэйаут — 1 бандл.
2. Бандлы подключаются только на лэйаутах.
3. Вводим понятие групп, которое будет являться просто массивом строк.

Нужно понимать, что при первоначальной обработке каждого бандла (например, минимизации) расходуются ресурсы процессора и память. Кроме того, код обработанных бандлов кэшируется в памяти веб-сервера. Таким образом, при использовании вашего подхода возникает лишняя нагрузка на сервер.

Классические подходы позволяют более эффективно использовать серверный и браузерный кэш. Если они не подходят вам, то используйте RequireJS.
Спасибо за вопрос! Я ответил на него в UPD1.
Понятно, что Closure Stylesheets – это препроцессор, но, тем не менее, разработчиками заявлена поддержка минимизации обычных CSS-файлов. Речь идет о том, что он пока еще не готов для массового использования в качестве CSS-минимизатора (в данном случае, он не может распарсить bootstrap.css даже с включенной опцией --allow-unrecognized-functions).
Closure Stylesheets в качестве CSS-минимизатора показался мне очень сырым.
Не учитывается тот факт, что большинство .NET-разработчиков держит свои проекты на CodePlex. Кроме того, еще есть Bitbucket, Google Code и старенький SourceForge.

Например, Stack Overflow Careers 2.0 поддерживает интеграцию со всеми перечисленными сервисами.
Сергей, спасибо за разъяснение.

Просто я оценивал CSSO с точки зрения опыта работы с другими CSS-минимизаторами, в которых не реализована структурная минимизация. К сожалению, пока CSSO не с чем сравнить, т.к. WebGrease Semantic CSS Minifier по-прежнему содержит ошибки.

Информация

В рейтинге
6 165-й
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность

Специализация

Фулстек разработчик
Ведущий