Как разработчик Bundle Transformer, я хочу отметить, что обработка кода (трансляция, минимизация, преобразование относительный путей в абсолютные (только для CSS-кода) и объединение кода в один файл) производится только при первом обращении к бандлу. Затем обработанный код кэшируется в памяти сервера и все остальные запросы уже читают код из кэша. Также стоит отметить, что предварительно минимизированные файлы (файлы с расширениями *.min.js and *.min.css) в Bundle Transformer не подвергаются повторной минимизации, что существенно экономит ресурсы сервера.
Ваше замечание по поводу синтаксического анализа кода справедливо лишь отчасти. В некоторых модулях-минимизаторах Bundle Transformer (BundleTransformer.MicrosoftAjax, BundleTransformer.Yui, BundleTransformer.Closure и BundleTransformer.UglifyJs) можно включить синтаксический анализ кода средствами самого минимизатора. Для этих целей служит свойство severity. Единственный недостаток текущей реализации в том, что предупреждения выводятся c помощью exception`ов. Но в будущих версиях я планирую переписать данный механизм под использование логгеров, т.е. сделать его похожим на систему вывода ошибок и предупреждений из другого моего проекта Web Markup Minifier.
Честно говоря, с haXe я не работал, поэтому ничего о нем сказать не могу. Как я понял, haXe – это самостоятельный язык программирования со своим собственным синтаксисом. TypeScript же – это надмножество JavaScript, т.е. любой JavaScript-код является валидным TypeScript-кодом, что существенно облегчает перенос на него старого JavaScript-кода. Если CoffeeScript можно назвать скриптовым Sass, то TypeScript – это скриптовый LESS.
Главная фишка TypeScript – это статическая типизация. При написании больших JavaScript-приложений на TypeScript отпадает необходимость в написании простейших юнит-тестов.
Сейчас про TypeScript написано огромное количество однотипных статей, прочитав которые возникает мысль, что TypeScript – это клон CoffeeScript от Microsoft. Но на самом деле это не так.
Пожалуй, самой лучшей статьей про TypeScript является статья Николаса Закаса «Thoughts on TypeScript». Для более глубоко понимания языка рекомендую прочитать спецификацию.
У Chirpy есть один существенный недостаток: чтобы обработать файл минимизатором нужно добавить префикс к расширению, что создает проблемы при работе с некоторыми менеджерами ресурсов. Мне больше нравится подход, используемый в VS-расширении Minifier, когда минимизатор привязывается к файлу с помощью свойства Custom Tool.
Кстати, под WebMatrix есть хороший аналог Chirpy под названием OrangeBits Compiler.
Конечно, не стоит. Вообще, если Вы хотите нанять хороших разработчиков, то Вам следует прочитать статью «Ошибка при поиске кандидатов» и взять на вооружении описанные рекомендации.
Angelina_Joulie, строка, идентифицирующая версию bundle`а, меняется не при сборке проекта, а при изменении файлов, входящих в bundle. Без использования этой строки работа B/M бессмысленна, т.к. номер версии позволяет правильно управлять кэшем браузера.
Как я понимаю, Вы хотите использовать B/M и Bundle Transformer для оффлайнового HTML5-приложения? Мне кажется, что в случае оффлайнового приложения Вам лучше использовать предварительную минимизацию файлов. Для предварительной минимизации Вы также можете использовать: задачи MSBuild из библиотек Microsoft Ajax Minifier или YUI Compressor for .Net, Webgrease (пока дает ошибки при обработке CSS-файлов), VS-расширение Minifier или самый мощный продукт для предварительной минимизации Chirpy.
Информация для разработчиков, использующих Visual Studio: библиотека ECMAScript 5 Polyfill, код из которой был показан в 7-й лекции Дугласа Крокфорда «ECMAScript 5: The New Parts», доступна для скачивания через NuGet — nuget.org/packages/ES5.
Первое обращение к Bundle`у происходит в момент подгрузки кода.
Если файл отсутствует на диске, то он игнорируется и код Bundle`а собирается из остальных файлов. Если этот файл был единственным в Bundle`е, то при подгрузке кода клиенту возвращается пустая строка.
Встроенные в B/M минимизаторы при обработке кода не генерируют исключений. В этом случае, в объединенный код Bundle`а попадает или некорректной код, или строковое представление сообщения об ошибке. Минимизаторы и трансляторы, входящие в библиотеку Bundle Transformer, генерируют исключения.
В режиме релиза рендерится ссылка на объединенный и минимизированный код, URL которого совпадает c URL Bundle`а (например, ~/Content/themes/base/css), а в режиме отладки рендерятся ссылки на отдельные необработанные файлы, входящие в Bundle.
Объединенный и минимизированный код Bundle`а генерируется при первом обращении к Bundle`у и затем хранится в памяти.
*.min.js
and*.min.css
) в Bundle Transformer не подвергаются повторной минимизации, что существенно экономит ресурсы сервера.Ваше замечание по поводу синтаксического анализа кода справедливо лишь отчасти. В некоторых модулях-минимизаторах Bundle Transformer (BundleTransformer.MicrosoftAjax, BundleTransformer.Yui, BundleTransformer.Closure и BundleTransformer.UglifyJs) можно включить синтаксический анализ кода средствами самого минимизатора. Для этих целей служит свойство
severity
. Единственный недостаток текущей реализации в том, что предупреждения выводятся c помощьюexception
`ов. Но в будущих версиях я планирую переписать данный механизм под использование логгеров, т.е. сделать его похожим на систему вывода ошибок и предупреждений из другого моего проекта Web Markup Minifier.Сейчас про TypeScript написано огромное количество однотипных статей, прочитав которые возникает мысль, что TypeScript – это клон CoffeeScript от Microsoft. Но на самом деле это не так.
Пожалуй, самой лучшей статьей про TypeScript является статья Николаса Закаса «Thoughts on TypeScript». Для более глубоко понимания языка рекомендую прочитать спецификацию.
Кстати, под WebMatrix есть хороший аналог Chirpy под названием OrangeBits Compiler.
Как я понимаю, Вы хотите использовать B/M и Bundle Transformer для оффлайнового HTML5-приложения? Мне кажется, что в случае оффлайнового приложения Вам лучше использовать предварительную минимизацию файлов. Для предварительной минимизации Вы также можете использовать: задачи MSBuild из библиотек Microsoft Ajax Minifier или YUI Compressor for .Net, Webgrease (пока дает ошибки при обработке CSS-файлов), VS-расширение Minifier или самый мощный продукт для предварительной минимизации Chirpy.
Если файл отсутствует на диске, то он игнорируется и код Bundle`а собирается из остальных файлов. Если этот файл был единственным в Bundle`е, то при подгрузке кода клиенту возвращается пустая строка.
Встроенные в B/M минимизаторы при обработке кода не генерируют исключений. В этом случае, в объединенный код Bundle`а попадает или некорректной код, или строковое представление сообщения об ошибке. Минимизаторы и трансляторы, входящие в библиотеку Bundle Transformer, генерируют исключения.
~/Content/themes/base/css
), а в режиме отладки рендерятся ссылки на отдельные необработанные файлы, входящие в Bundle.Объединенный и минимизированный код Bundle`а генерируется при первом обращении к Bundle`у и затем хранится в памяти.