Что вы делаете со своим кодом JavaScript перед развертыванием? - PullRequest
14 голосов
/ 04 июня 2009

Есть ли у вас шаг в процессе развертывания, который минимизирует JS? Есть ли у вас какой-либо препроцессор для вашего JavaScript, который позволяет вам оставлять комментарии и console.logs, а затем автоматически удалять их? Ваш компьютер JavaScript сгенерирован GWT или Script #? Используете ли вы ANT или другой инструмент для автоматизации развертывания?

Я вижу много JavaScript, который выглядит так, словно он выходит из редактора, с большим количеством пробелов и комментариев. Сколько из этого связано с тем, что не заботится о состоянии развернутого кода, а сколько из-за духа открытого Интернета?

Ответы [ 13 ]

11 голосов
/ 04 июня 2009

Обычно я проверяю его с помощью JSLint , чтобы убедиться, что он не содержит ошибок, затем упаковываю / кодирую его с помощью YUI-компрессор .

4 голосов
/ 05 июня 2009

Мои шаги включают в себя:

  1. Я пишу Javascript, используя TextMate с установленным пакетом Javascript Tools. Этот JSLint хранит мои файлы при каждом сохранении и уведомляет меня об ошибках.
  2. Я использую Звездочки , чтобы автоматически объединять мои различные файлы Javascript.
  3. Я запускаю полученную конкатенацию через jsmin для генерации минифицированной версии.

Я получаю объединенный файл lib.js и уменьшенный файл lib.min.js. Один я использую для разработки, другой для производства. Команды TextMate помогают автоматизировать все это.

Я все еще ищу хорошее решение для (юнит) тестирования моих сценариев.

2 голосов
/ 30 июня 2009

FWIW, вот интересный мини-тест по различным способам минимизации вашего источника Javascript:

http://www.ericmmartin.com/comparison-of-javascript-compression-methods/

Короче говоря:

  • Сжатие gzip в протоколе HTTP действительно имеет значение (хотя вы должны платить стоимость процессора на стороне сервера)
  • минимизация (удаление пробелов / комментариев, изменение имен переменных и т. Д.) Также помогает, и, если вы хотите получить лучший результат, используйте его вместе со сжатием gzip
  • Распаковщики на основе js, скорее всего, бесполезны - хотя вы можете получить меньший размер, загрузка ЦП на клиенте значительна.
2 голосов
/ 04 июня 2009

JSMin это от Дугласа Крокфорда. Мы подключили его как макрос в Studio, а также как элемент пост-сборки для некоторых наших крупных проектов

2 голосов
/ 04 июня 2009

Проверьте YUI Compressor это консольное приложение, которое вы можете использовать для минимизации (вырезания комментариев, пробелов и т. Д.), А также для маскировки ваших файлов JavaScript.

1 голос
/ 05 июня 2009

У меня есть PHP-скрипт, который делает это на стороне сервера и хранит кеш того, что он извлекает из исходных папок.

1 голос
/ 04 июня 2009

Вероятно, во многом это связано с тем, что людям, которые могут просматривать ваши страницы на медленных компьютерах с более медленными соединениями, не нужно заботиться о том, что у всех есть линия 50 Мбит / с и три гигабайта оперативной памяти.

Мы сокращаем наш (рукописный + плагин, jQuery и т. Д.) JS как часть процесса сборки в среде .NET. Нет препроцессора, это то, что мы обязательно должны делать, если позволяет время.

P.S. Кстати, мы не используем console.log, так как это сломает IE. Вместо этого у нас есть простая функция-обертка, что-то вроде:

function log(stuff) {
    if (window.console && window.console.log) {
        console.log(stuff);
    }
};
1 голос
/ 04 июня 2009

Для одного из наших продуктов мы объединяем все файлы Javascript вместе (большинство файлов используются на большинстве страниц, поэтому для нас это имеет смысл) и используем Javascript :: Minifier . Это дало нам довольно хороший прирост скорости.

0 голосов
/ 10 декабря 2009

Я думал, что поделюсь своим подходом к развертыванию js. Посмотрите на это сообщение в блоге: http://www.picnet.com.au/blogs/Guido/post/2009/12/10/Javascript-runtime-compilation-using-AspNet-and-Googles-Closure-Compiler.aspx

Сюда также входит код для компиляции (с использованием компилятора google) во время выполнения (при необходимости).

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

0 голосов
/ 07 июля 2009

Существует также порт .NET YUI Compressor , который позволяет: -

  • интегрировать минификацию / объединение файлов в события пост-сборки Visual Studio
  • интегрируется в TFS Build (включая CI)
  • если вы хотите просто использовать dll в вашем собственном коде (например, на минимизации на лету).
...