advanced HTML for 
web apps!
Тема 
1. Что такое AngularJS? 
2. Особенности фреймворка 
3. Основные компоненты 
4. Пример приложения 
2014. AngularJS. Anton Gordiichuk
Что такое AngularJS? 
2014. AngularJS. Anton Gordiichuk
Angular? 
Cтруктурный фреймворк предназначенный для 
построения динамических web-приложений. 
Позволяет расширить возможности и синтаксис 
существующего HTML. 
2014. AngularJS. Anton Gordiichuk
Почему <Angular>? 
Angular <> ng 
2014. AngularJS. Anton Gordiichuk
Задачи 
• расширение возможностей HTML 
• создание простой и четкой структуры приложения 
• выполнение низкоуровневых задач за Вас 
• тесты пользовательских компонентов 
• интеграция с другими фреймворками 
2014. AngularJS. Anton Gordiichuk
Когда целесообразно 
использовать? 
• rich-ui приложения 
• single-page приложения 
• REST-oriented приложения 
2014. AngularJS. Anton Gordiichuk
НЕ целесообразно 
использовать 
• web-игры 
• редакторы интерфейсов 
2014. AngularJS. Anton Gordiichuk
Доступно из коробки 
• двухсторонние связывание данных 
• внедрение зависимостей (DI) 
• более 60 готовых деректив 
• более 25 разнообразных сервисов 
• фильтры 
• утилиты 
2014. AngularJS. Anton Gordiichuk
Производительность 
Angular создает минимум накладных расходов, и 
поэтому в плане производительности находится на 
достаточно высоком уровне. 
2014. AngularJS. Anton Gordiichuk
Особенности фреймворка 
2014. AngularJS. Anton Gordiichuk
Связывание данных 
• односторонняя (особенность многих JS MVC 
фреймворков) 
• двухсторонняя (Angular, Ember, Knockout) 
2014. AngularJS. Anton Gordiichuk
Одностороннее связывание ;( 
View 
one-time 
merge 
Template Model 
2014. AngularJS. Anton Gordiichuk
Двухстороннее связывание :) 
Template 
View 
continuous updates model 
Model 
2014. AngularJS. Anton Gordiichuk
Внедрение зависимостей 
• оператор new 
• ссылка на глобальную переменную 
• передача зависимости туда где она нужна 
2014. AngularJS. Anton Gordiichuk
DI в AngularJS 
Для управления зависимостями в каждом 
AngularJS приложении существует свой сервис 
локатор - инжектор. 
Задача инжектора - управление жизненным циклом 
объектов, внедрение зависимостей. 
2014. AngularJS. Anton Gordiichuk
Создание и поиск зависимостей 
Instance cache Instance factory 
$injector.get(‘dep’) 
check cache 
create new 
if no cache 
$injector 
2014. AngularJS. Anton Gordiichuk
Где можно использовать 
DI? 
• в модулях 
• в контроллерах 
• в фабричных методах (директивы, сервисы, 
фильтры) 
2014. AngularJS. Anton Gordiichuk
Основные компоненты 
2014. AngularJS. Anton Gordiichuk
Контроллер? 
JavaScript функция с собственной областью 
видимости предназначенная для описания бизнес- 
логики приложения. 
2014. AngularJS. Anton Gordiichuk
2014. AngularJS. Anton Gordiichuk
Для чего НЕ стоит 
использовать 
контроллеры? 
• манипуляций с DOM 
• форматирования ввода-вывода 
• передачи состояния другим контроллерам 
• управления жизненным циклом других 
компонентов 
2014. AngularJS. Anton Gordiichuk
Способы ассоциации 
контроллера с $scope 
• директива ng-controller 
• сервис $routeProvider 
2014. AngularJS. Anton Gordiichuk
ng-controller 
2014. AngularJS. Anton Gordiichuk
$routeProvider 
2014. AngularJS. Anton Gordiichuk
Директива? 
Одна с ключевых компонент фреймворка. 
Директивы позволяют задавать определенное 
поведение элементам к которым они применяются. 
2014. AngularJS. Anton Gordiichuk
Способы объявления 
директив 
• HTML тег 
• HTML аттрибут 
• HTML комментарий 
• HTML класс 
2014. AngularJS. Anton Gordiichuk
Директива (сокращенная форма) 
2014. AngularJS. Anton Gordiichuk
Директива (полная форма) 
2014. AngularJS. Anton Gordiichuk
Сервисы 
2014. AngularJS. Anton Gordiichuk
Сервис? 
Взаимозаменяемые компоненты выполняющие 
определенные задачи в рамках web-приложения. 
• ленивая инициализация 
• одиночка 
2014. AngularJS. Anton Gordiichuk
Как пользоваться 
сервисами? 
Очень просто. Передайте сервис как зависимость в 
одну из компонент (контроллер, фильтр, 
директиву, другой сервис) и система внедрения 
зависимостей позаботится об остальном. 
2014. AngularJS. Anton Gordiichuk
2014. AngularJS. Anton Gordiichuk
Сервисы AngularJS 
Фреймворк поставляется с набором уже готовых к 
использованию сервисов. Например $http (работа с 
XmlHttpRequest), $route (маршрутизация) и тд. 
2014. AngularJS. Anton Gordiichuk
Пример сервиса 
2014. AngularJS. Anton Gordiichuk
Шаблон? 
Статическая DOM структура состоящая из HTML, 
CSS, а также специальных элементов и атрибутов 
которые позволяют AngularJS преобразовать 
статические страницы в динамическое web- 
приложения. 
2014. AngularJS. Anton Gordiichuk
В шаблонах можно 
использовать 
• директивы 
• фильтры 
• интерполяционный скобки {{ }} 
• элементы форм 
2014. AngularJS. Anton Gordiichuk
Пример шаблона 
2014. AngularJS. Anton Gordiichuk
Пример приложения 
2014. AngularJS. Anton Gordiichuk
Ваши вопросы 
2014. AngularJS. Anton Gordiichuk
Гордийчук Антон 
Java, JavaScript Developer 
skype: a.gordiychuk 
email: ant.gordiichuk@gmail.com 
2014. AngularJS. Anton Gordiichuk

Антон Гордийчук Тема: "AngularJS — продвинутый HTML для web-приложений"

Editor's Notes

  • #2 Hello
  • #3 4 части
  • #4 кто работал? реальный проект? свои директивы?
  • #6 Почему название Angular?
  • #7 расширение директивами другие как JS (jQuery) так и сервер утилиты моки
  • #8 роутинг страницы по Ajax красивые REST понятная структура
  • #9 DOM только в директивах
  • #10 у большинства односторонее DI ни у кого нет
  • #11 легковесный
  • #12 HTML-компилятор обход DOM инициализация директив и других компонент создание View
  • #13 одни из ключевых особенностей
  • #14 Какие знаете типы связей?
  • #15 в одну сторону
  • #16 единственно верный путь
  • #17 new - сами заботитесь глобальные ссылки не хорошо DI круто
  • #18 декларируй и забудь конструкторы и factory-методы
  • #20 Все компоненты поддерживают DI
  • #21 99% случаев
  • #22 создается с помощью специальной функции конструктора Best practice 1 контроллер на страницу
  • #23 Пример
  • #24 DOM в директивах фильтры сервисы инжектор
  • #25 изменения в области видимости изменяют view прототипное наследование от тут области
  • #26 ассоциация с страницей или ее частью
  • #27  single-page
  • #28 самое сложное и самое важное (особенно ng-repeat) написание отдельный доклад с помощью их и расширяется функционал HTML
  • #29 best practice аттрибут data- если нужен валидный HTML остальное для совместимости
  • #30 грамотно сделана сокращенная форма для всех параметров есть значения по-умолчанию что подходят в 99% случаев
  • #31 тоже самое пару слов о каждом
  • #33 работа с REST утилиты передача объектов между контроллерами тд
  • #34 работа с REST утилиты передача объектов между контроллерами
  • #35 пример внедрения зависимостей
  • #36 готовые сервисы очень удобны то что должен иметь каждый фреймворк
  • #38 разница между шаблоном и view?
  • #39 шаблон может включать другие шаблоны {{ }} как EL в Java ${}