Какая библиотека минимизации JavaScript дает лучшие результаты?

Между Yahoo! UI Compressor, Dean Edwards Packer и jsmin, которые дают лучшие результаты как с точки зрения результирующей площади, так и с меньшим количеством ошибок при запутывании.

8 ответов

Решение

Лучше немного субъективно, поскольку здесь нужно учитывать несколько факторов (даже помимо тех, которые вы перечислите):

  1. Сжатый размер не рассказывает всей истории, поскольку агрессивный компрессор может привести к снижению производительности во время выполнения из-за дополнительного времени, необходимого для запуска распаковки кода до интерпретации в браузере.
    • Проще всего избежать ошибок, когда вы управляете входным кодом - разумное использование точек с запятой имеет большое значение. Запустите JSLint над вашим кодом и исправьте все обнаруженные проблемы.
    • Конечно, стиль и размер самого кода будут влиять на результаты.
    • И, наконец, стоит помнить, что сжатие gzip на стороне сервера всегда приводит к меньшей загрузке, чем любое сжатие кода, хотя некоторые инструменты сжатия кода будут эффективнее сочетаться с gzip.

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

Отличный способ сравнить лучшие компрессоры - это JavaScript CompressorRater от Артура Блейка.

Что вас обычно интересует, так это размер после сжатия с помощью GZIP (вы должны настроить свой веб-сервер для выполнения сжатия).

Наилучшие результаты обычно получаются от YUI Compressor или Dojo ShrinkSafe. Различия были настолько малы, что через некоторое время я перестал сравнивать и просто использую YUI Compressor.

РЕДАКТИРОВАТЬ: с тех пор, как этот вопрос был задан изначально, были выпущены 2 новых минифайера. Они оба обычно, по крайней мере, так же хороши, как, если не лучше, чем YUI Compressor.

РЕДАКТИРОВАТЬ 2:

  • UglifyJS, выбранный командой jQuery для официального релиза 1.5

Определенно проверьте Dojo Shrinksafe. Он был недавно переработан и, по-видимому, производительность была улучшена.

Полное раскрытие, я за этим: http://www.toptensoftware.com/minime который делает минификацию, обфускацию и разумный набор проверок стиля линта. В настоящее время он производит меньше, чем Yui, и не так хорош, как Closure.

Это старый вопрос, и компилятор Google Closure тогда не существовал. Я еще не использовал это, но это выглядит действительно хорошо.

Как пользователь Mootools, я заметил, что Mootools заменил упаковщик Дина Эдвардса на YUI Compressor. Я также помню, что на Ajaxian.com была дискуссия, на которой Жюльен (автор Compressor) указал на области, в которых YUI Compressor работал лучше. Я использовал Compressor и никогда не видел никаких проблем, но я никогда не учился тому, что дает меньше ошибок при запутывании.

Компрессор YUI сжимает более безопасно и компактно, чем Пакер. Я считаю, что Packer нужно, чтобы JavaScript был идеально сформирован, иначе это вызовет ошибку JavaScript при загрузке скрипта. Тем не менее, независимо от того, что вы используете, вы получите наибольшее увеличение производительности, распаковав файл.

В Codeplex есть также порт YUICompress для.NET (который включает в себя задачу сборки для TFS).

Другие вопросы по тегам