Что вы делаете с кодом JavaScript перед развертыванием?
Есть ли у вас шаг в процессе развертывания, который минимизирует JS? Есть ли у вас какой-либо препроцессор для вашего JavaScript, который позволяет вам оставлять комментарии и console.logs, а затем автоматически ли их отключать? Создана ли ваша машина JavaScript с помощью GWT или Script #? Используете ли вы ANT или другой инструмент для автоматизации развертывания?
Я вижу много JavaScript, который выглядит так, как будто он выходит из редактора, в комплекте с большим количеством пробелов и комментариев. Сколько из этого связано с тем, что вы не заботитесь о состоянии развернутого кода и насколько это связано с духом открытой сети?
Ответы
Ответ 1
Мои шаги включают:
- Я пишу Javascript с помощью TextMate с установленным пакетом инструментов Javascript. Это JSLint мои файлы при каждом сохранении и уведомляет меня о возникновении ошибок.
- Я использую Sprockets, чтобы автоматически соединить мои различные файлы Javascript.
- Я запускаю конкатенацию через jsmin для генерации мини-версии.
В итоге я получаю конкатенированный файл lib.js и файл с расширением lib.min.js. Один я использую для разработки, один для производства. Команды TextMate помогают автоматизировать все это.
Я все еще ищу хорошее решение на самом деле (unit) проверить мои скрипты.
Ответ 2
Я обычно проверяю это с помощью JSLint, чтобы убедиться, что он не содержит ошибок, затем упакуйте его/закодируйте с помощью компрессор YUI.
Ответ 3
Откажитесь от YUI Compressor - консольное приложение, которое вы можете использовать для минимизации (исключить комментарии, пробелы и т.д.), а также обфускации ваши файлы javascript.
Ответ 4
JSMin от Дугласа Крокфорда. Мы подключили его как макрос в Studio, а также элемент пост-сборки для некоторых наших крупных проектов.
Ответ 5
FWIW, вот интересный мини-бенчмарк по разным путям, который вы можете свести к минимуму свой источник Javascript:
http://www.ericmmartin.com/comparison-of-javascript-compression-methods/
Короче:
- сжатие gzip в протоколе HTTP действительно имеет значение (хотя вам нужно заплатить стоимость процессора на стороне сервера)
- минимизация (удаление пробелов/комментариев, изменение имен переменных и т.д.) также помогает, и если вам нужен лучший результат, используйте его вместе с сжатием gzip
- js-based декомпрессоры, скорее всего, бесполезны - хотя вы можете получить меньший размер, накладные расходы процессора на клиенте значительны.
Ответ 6
Для одного из наших продуктов мы объединяем все файлы Javascript вместе (большинство файлов используются на большинстве страниц, поэтому это имеет смысл для нас) и используйте Javascript:: Minifier. Это дало нам довольно хороший прирост скорости.
Ответ 7
Многие из них, вероятно, связаны с тем, что вы не заботитесь о людях, которые могут просматривать ваши страницы на более медленных машинах с более медленными соединениями, и полагая, что у каждого есть линия 50 Мбит/с и три гигабайта ОЗУ.
Мы минимизируем наши (рукописные + плагины, jQuery и т.д.) JS как часть процесса сборки в среде .NET. Нет препроцессора, это то, что мы обязательно должны делать, когда позволяет время.
P.S. Кстати, мы не используем console.log, так как это сломает IE. Вместо этого у нас есть простая функция обертки, что-то вроде:
function log(stuff) {
if (window.console && window.console.log) {
console.log(stuff);
}
};
Ответ 8
У меня есть PHP script, который делает это на стороне сервера и хранит кеш-память того, что он извлекает из исходной папки.
Ответ 9
Одно слово - packer
Ответ 10
Зажгите свечу, прошептите молитву об ошибках IE6 и нажмите "пойти". Это так?:)
Ответ 11
- Я не уменьшаю свой собственный код javascript, так как текст имеет тенденцию gzip/compress well.
- Я бы минимизировал очень большую (скажем, 100 кб) javascript-библиотеку (но потом я, вероятно, не захотел бы использовать такую большую библиотеку (или просто отправить то, что я использую)).
Я склонен полагать, что большая часть javascript-minification (на самом деле) сделана для достижения какой-то (бесполезной) обфускации кода javascript вместо объявленного прироста производительности конечного пользователя.
Ответ 12
Там также порт .NET YUI Compressor, который позволяет: -
- перечислить объединение мини файлов/файлов в события после сборки Visual Studio
- перейдите в сборку TFS (включая CI)
- если вы хотите просто использовать DLL в своем собственном коде (например, на лету).
Ответ 13
Я думал, что поделюсь своим подходом к js-развертываниям. Взгляните на это сообщение в блоге:
http://www.picnet.com.au/blogs/Guido/post/2009/12/10/Javascript-runtime-compilation-using-AspNet-and-Googles-Closure-Compiler.aspx
Это также включает код для компиляции (с использованием компилятора google закрытия) во время выполнения (при необходимости).
Спасибо Гвидо