Блог

Наши новости, публикации и мысли.

Минификация приложения на AngularJS

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

Допустим, у нас есть код

который после минификации превращается в

и естественно ломает нам всё приложение.

Проблему решит следующий вариант кода

Но писать вручную подобное каждый раз утомительно, поэтому воспользуемся утилитой ngmin, позволяющей подготовить наши js файлы к минификации. Многие путаются, читая её название и считая, что она минифицирует файлы. Не поленитесь прочитать документацию. Я пользуюсь Grunt.js, поэтому выкладываю пример конфига (структуру каталога указывайте сами):

Далее можем склеить полученные файлы и натравить любой минификатор, я использую Uglify:

P.S.На момент написания заметки я пользовался версией плагина grunt-ngmin 0.0.3 и был баг с обработкой метода controller: function($scope) {} в ui-router, который пока пришлось обойти вручную:

Последние записи

  • При использовании замечательной библиотеки AngularUI для AngularJS может возникнуть проблема со стандартной директивой Typeahead из набора для Bootstrap. Дизайнер UI/UX может потребовать отображать список по фокусу в...
    24 марта 2014
  • Создать сайт для предприятия малого бизнеса не сложно. Трудности начнутся, когда вы захотите привлечь на свой новый сайт трафик. Да и качество самого трафика нужно разделять, ведь...
    03 ноября 2013
  • Дано: Таблица объектов и таблица городов, имеющие связь MANY_MANY; Yii Framework v.1.1.14; Задача: организовать редактирование связей и поиск объектов по массиву id городов, используя стандартные средства фреймворка.
    30 сентября 2013
  • Специфика наполнения сайта контентом обсуждалась неоднократно, и существует множество мнений по поводу того, кто должен писать для веба, и может ли этим заниматься непосредственно сам заказчик. И...
    10 июля 2013