17 ответов:
Я использую Юи компрессора. Кажется, чтобы получить работу хорошо!
Я использовал Юи компрессора в течение длительного времени и не было никаких проблем с ним, но недавно начали использовать Компилятор Закрытия Google и имел некоторый успех с ним. Мои впечатления от него пока:
- он обычно превосходит компрессор YUI с точки зрения уменьшения размера файла. Небольшим количеством на простом режиме, и много на предварительном режиме.
- простой режим до сих пор был так же надежен, как компрессор YUI. Ничего я кормила его показали каких-либо проблем.
- расширенный режим "компиляции" отлично подходит для некоторых скриптов, но резкое уменьшение размера вашего скрипта происходит за счет большого вмешательства в ваш код, который имеет приличные шансы его сломать. Есть способы решения некоторых из этих проблем и понимание того, что он делает, может пройти долгий путь, чтобы избежать проблем, но я обычно избегаю использования этого режима.
я перешел к использованию компилятора закрытия Google простой режим "компиляции", потому что он немного превосходит компрессор YUI в целом. Я использовал его значительно меньше, чем у меня есть компрессор YUI, но из того, что я видел до сих пор, я бы рекомендовал его.
еще один, который я еще не пробовал, но звучит многообещающе Михай Базон по UglifyJS.
У вас есть стадо здесь:
- The Юи компрессора уже упоминалось в других ответов,
- The Компилятор Закрытия Google,
- The Dojo ToolKit'S ShrinkSafe компилятор используется их построитьсистема,
- Дуглас Крокфорд'ы по-прежнему актуальны JSMin,
- UglifyJS упомянул другие
- и коммерческое решение, javaScript Obfuscator (никогда не пользовался лично)
по моему личному опыту, я бы рекомендовал вам использовать Dojo SDK для создания пользовательской сборки, которую вы можете затем настроить для использования их обычного компилятора ShrinkSafe или закрытия Google,которые они теперь поддерживают также.
с точки зрения сжатия, я думаю, что закрытие Google является одним из лучших результатов для меня так далеко, однако я обычно доволен ShrinkSafe, и он немного старше и надежнее, тогда как компилятор закрытия выглядит немного новым ребенком на блоке (который ваши заинтересованные стороны могут не слишком любить, например).
некоторые люди утверждают, что только с помощью компрессора Юи. Лично я не могу за это поручиться.
теперь, если вы вопрос обжать библиотеки и не только свой собственный код JavaScript, он, очевидно, становится сложнее, как вы для большинства этих инструментов потребуется экспортировать символы, которые не следует переименовывать или удалять. Большинство приличных компрессоров удалят функции, которые они считают неиспользуемыми - часто это происходит в библиотеке, если не привязано к проекту, очевидно, - и изменят имена, чтобы сделать их короче и использовать меньше символов - также проблема, поскольку вы, очевидно, хотите, чтобы публичный API не был подделан.
вы также можете найти другие темы по этой теме и найти информацию в поддержке инструментов документация. Вы также можете посмотреть JSBuilder2, какой-то кулон для инструмента сборки Dojo (так, используя компилятор ShrinkSafe или Closure) для ExtJS (используя компрессор YUI).
(извините, будучи новым пользователем SO, я не могу добавить более одной ссылки, поэтому я не могу напрямую ссылаться на инструменты.)
EDIT: что касается проблем, выраженных в некоторых ответах, что сжатие может привести к ошибкам и что это упрощает отладку, поскольку код не искажен: да, это обоснованное беспокойство. Однако:
- вы получите очень значительное улучшение с точки зрения пропускной способности, если вы используете minifier, даже при активированном сжатии gzip (и вы можете научиться использовать сжатие gzip, облегчая жизнь компрессора
- вы должны просто попробовать свой код в режиме отладки и производства, чтобы убедиться, что поведение идентично. В смысле, это тоже часть твоей работы...
- некоторые из этих компрессоров были вокруг в течение время и не привести к ошибкам в коде. На самом деле они просто перестраивают вещи и заменяют строки, на самом деле.
- некоторые компрессоры (например, система сборки dojo) поставляются с опциями, позволяющими создавать как сжатый, так и несжатый выход, так что вы можете затем включить различные режимы для отладки и производства, используя, например, параметры запроса.
Я не минимизирую JavaScript вообще: сжатие gzip достаточно хорошо для меня и имеет дополнительное преимущество, что сообщения об ошибках все равно будут полезны.
Я тоже использую компрессор YUI. У меня есть муравьиная задача, которую я использую в своих проектах:
<!-- YUI Compressor tasks http://www.julienlecomte.net/yuicompressor/README --> <property name="yuicompressor.jar" value="C:/devlibs/yuicompressor-2.2.4/build/yuicompressor-2.2.4.jar"/> <target name="js.compress"> <!-- Create min directory under js direcrtory if it doesnt exist --> <mkdir dir="${js-directory}/min" /> <apply verbose="true" executable="java" parallel="false" failonerror="true"> <fileset dir="${js-directory}" includes="*.js"/> <arg line="-jar"/> <arg path="${yuicompressor.jar}"/> <srcfile/> <arg line="-o"/> <mapper type="glob" from="*.js" to="${js-directory}/min/*-min.js"/> <targetfile/> </apply> </target>
упаковщик Дина Эдварда достигает некоторых довольно хороших коэффициентов сжатия. Он имеет реализации командной строки, что позволяет использовать его в процессе непрерывной интеграции.
UglifyJS новая.
UglifyJS сжимает лучше, чем Юи Компрессор и как раз около наравне с компилятор закрытия Google. Для например, сжатая версия jQuery от закрытия Google Компилятор всего на 403 байта меньше чем версия, выпущенная UglifyJS - впечатляет! UglifyJS также является самым быстрым, чтобы запустить длинный выстрел, избиение Закрытие более чем на 6 секунд!
дополнительно, полученный код от UglifyJS безопаснее, чем код, который Закрытие генерирует. Например, Закрытие не знает, как с этим бороться eval или С {} - он просто регистрирует ошибку и продолжает переименовывать переменные в любом случае. Это, очевидно, приводит к сломанный код. UglifyJS не имеет эта проблема.
более подробную информацию можно найти здесь: http://badassjs.com/post/971960912/uglifyjs-a-fast-new-javascript-compressor-for-node-js
Google закрытие инструменты
вы можете сопоставить уменьшенную версию с обычным исходным кодом для отладки в Firebug с их надстройкой.
Я пробовал Yui компрессор раньше, но это дает мне сообщение об ошибке.
Я предлагаю использовать JSMIN для минимизации вашего javascript:
вот решение от Microsoft, которое можно интегрировать в Visual Studio для автоматического минимизации файлов при создании проекта.
Установка:
загрузите msi из : http://aspnet.codeplex.com/releases/view/40584
возможно, Вам придется перезагрузить компьютер после его завершения.
Использование:
редактировать .csproj файл и включают в себя следующее В конце файл (но перед
</Project>tag):<Import Project="$(MSBuildExtensionsPath)\Microsoft\MicrosoftAjax\ajaxmin.tasks" /> <Target Name="AfterBuild"> <ItemGroup> <JS Include="**\*.js" Exclude="**\*.min.js;Scripts\*.js" /> <CSS Include="**\*.css" Exclude="**\*.min.css" /> </ItemGroup> <AjaxMin JsSourceFiles="@(JS)" JsSourceExtensionPattern="\.js$" JsTargetExtension=".min.js" CssSourceFiles="@(CSS)" CssSourceExtensionPattern="\.css$" CssTargetExtension=".min.css"/> </Target>теперь, когда вы строите свой проект, все CSS и JS файлы, которые не заканчиваются .минута.js,.минута.css будет минимизирован (см. атрибут" Exclude", чтобы исключить другие файлы из минимизации).
http://code.google.com/p/jsmin-php/
старый добрый Дуг Крокфорд: -) красота этого заключается в том, что с помощью управления кешем вы можете получить некоторое автоматическое сжатие только тогда, когда это необходимо. Или в одном из моих проектов я просто вывожу сжатый/сжатые файлы и удалить их, когда я вношу изменения. Для среды разработки я просто не называю сценарий минификации.
Я использую простой (3-4 строки) скрипт-обертку вокруг JavaScript:: Minifier:: XS.
вот статья, в которой описано, как использовать YUI Compressor для минимизации файлов во время сборки: сжатие файлов JS как часть процесса сборки
Я использую JavaScript::Minifier perl. Он работает довольно хорошо, и вы можете, например, заменить некоторые фразы с помощью perl.
http://caja.appspot.com/tools/index делает все три HTML / CSS / JS.
https://jawr.dev.java.net/ отлично подходит для минимизации и управления версиями
есть очень хороший онлайн компрессор:
http://javascriptcompressor.com/
вы также можете сжимать переменные, если хотите еще больше сжать.
надеюсь, это поможет
Comments