В чем разница между concat, uglify и minify?

В чем разница между задачами concat, uglify и minify в grunt? Я настроил задачу uglify для всех задач javascript моего сайта, и, похоже, она их минимизировала и объединила. На сайте Grunt есть отличное описание того, как настроить каждую задачу, но, похоже, там не объясняется, что на самом деле делает каждая задача.


person mheavers    schedule 30.10.2013    source источник


Ответы (2)


  • Конкатенация — это просто добавление всех статических файлов в один большой файл.

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

  • Улучшение – это действие по преобразованию кода в "нечитаемую" форму, то есть переименование переменных/функций, чтобы скрыть исходное намерение... Это также необратимо. .

person diclophis    schedule 30.10.2013
comment
Учитывая, что задача uglify grunt может выполнять concat, знаете ли вы, почему генераторы yeoman запускают задачу grunt concat перед исправлением? - person sweetroll; 13.12.2013
comment
Этот вопрос представляет собой неправильное понимание различия между concat и uglifying. Когда вы объединяете 2 или более файлов, создается новый файл. Если вы попытались исказить перед объединением, вам нужно было бы удалить n файлов, а затем объединить все эти файлы. Гораздо эффективнее объединить их все, а затем просто запустить uglify для коллективного файла. тлдр; запуск uglify ПОСЛЕ concat делает так, что вам нужно запустить uglify только 1 раз вместо n раз - person chopper draw lion4; 05.03.2015
comment
Uglification не обязательно используется для сокрытия намерений, его можно просто использовать для экономии места, преобразования aLongMethodName() в a() и имен переменных в сокращенную версию. - person Nick; 23.09.2016
comment
Ну, не только это. Представьте, что у вас есть библиотечные файлы, которые вызываются из другого js-файла. Если вы сначала удалите файлы по отдельности, а затем объедините их, ваши js-файлы больше не смогут ссылаться на библиотеку, потому что имена в библиотеке будут изменены. Так что сначала все конкатируйте, а потом искажайте результат. - person George Dimitriadis; 15.02.2017

Объединение — объединяет все указанные файлы для создания нового единого файла.

Минимизация. Это просто означает, что все ненужные пробелы и лишние необязательные токены будут удалены.

Пример - self.description = 'Hello'
Минимизированная версия будет - self.description='Hello'

Упрощение. Это просто означает преобразование кода в такой формат, что основная логика не может быть легко понята. Чтобы сделать то же самое, он переименовывает переменную и ее ссылки, переименовывает параметр с более коротким именем и т. д. Он просто запутывает бизнес-логику, чтобы никто не мог ее легко понять.

Пример -

self.description = 'Hello';
function(self.description){}

Угловая версия будет -

  j.description = 'Hello';
  function(j.description){}
person Gaurav Tiwari    schedule 18.04.2017