Что вы делаете с кодом 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 закрытия) во время выполнения (при необходимости).

Спасибо Гвидо