Между Yahoo! UI Compressor, Dean Edwards Packer и jsmin, который дает лучшие результаты, как с точки зрения конечного следа, так и с меньшим количеством ошибок при запутывании.
Какая библиотека минимизации javascript дает лучшие результаты?
Ответ 1
Лучше здесь немного субъективно, так как есть несколько факторов, которые следует учитывать (даже за пределами списка):
- Сжатый размер не отражает всю историю, поскольку агрессивный компрессор может привести к замедлению производительности во время работы за счет дополнительного времени, необходимого для запуска распаковки кода до интерпретации браузера.
- Ошибки проще всего избегать, когда вы управляете кодом ввода - разумное использование точек с запятой проходит долгий путь. Запустите JSLint над вашим кодом и исправьте возникшие проблемы.
- Конечно, стиль и размер самого кода скажутся на результатах.
- И, наконец, стоит иметь в виду, что сжатие gzip на стороне сервера всегда приведет к меньшей загрузке, чем к любому сжатию кода, хотя некоторые инструменты сжатия кода будут более эффективно сочетаться с gzip.
Моя рекомендация - запустить код, который вы собираетесь сжать через несколько компрессоров (инструмент автоматического сравнения, такой как CompressorRater помогает..) и выберите на основе результатов - помните, чтобы проверить, профилировать и сравнить фактическое время загрузки страницы после.
Ответ 2
Отличный способ сравнить лучшие компрессоры JavaScript CompressorRater от Артура Блейка.
То, что вас обычно интересует, - это размер после сжатия с помощью GZIP (вы должны настроить ваш веб-сервер для выполнения сжатия).
Лучшие результаты, как правило, из YUI Compressor или Dojo ShrinkSafe. Различия были настолько малы, что через некоторое время я прекратил сравнивать, и я просто использую компрессор YUI.
EDIT: начиная с первоначального времени, когда задавался этот вопрос, было выпущено 2 новых minifiers. Они оба, по крайней мере, так же хороши, как, если не лучше, компрессор YUI.
- Google Closure Compiler. Включает агрессивный расширенный режим оптимизации, который иногда применим.
- Microsoft Ajax Minifier (поиск эта страница для "minifier" )
ИЗМЕНИТЬ 2:
- UglifyJS, выбранный командой jQuery для официальной версии 1.5
Ответ 3
Определенно проверьте Dojo Shrinksafe. Он был переработан в последнее время, и, по-видимому, производительность была улучшена.
Ответ 4
Полное раскрытие, я за этим: http://www.toptensoftware.com/minime, который выполняет минимизацию, обфускацию и разумный набор проверок стиля линта. В настоящее время он производит меньшую мощность, чем Yui, не так хорошо, как Closure.
Ответ 5
Это старый вопрос, и Google Closure Compiler не существовало. Я еще не использовал его, но он выглядит действительно хорошим.
Ответ 6
Как пользователь Mootools, я заметил, что Mootools заменил упаковщик Dean Edwards от YUI Compressor. Я также помню, что была дискуссия на Ajaxian.com, где Жюльен (автор компрессора) указал на те области, где YUI Compressor сделал лучше. Я использовал Compressor и никогда не видел никаких проблем, но я никогда не изучал, для чего возникает меньше ошибок при запутывании.
Ответ 7
Компрессор YUI сжимается более безопасно и компактно, чем упаковщик. Я считаю, что Packer нуждается в том, чтобы JavaScript был полностью сформирован, иначе это приведет к ошибке JavaScript при загрузке script. Тем не менее, независимо от того, что вы используете, вы получите наибольшее увеличение производительности за счет Gzipping вашего файла.
Ответ 8
Также есть порт YUICompress для .NET (который включает задачу сборки для TFS) на Codeplex.