SlideShare a Scribd company logo
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
Антон Гордийчук Тема: "AngularJS — продвинутый HTML для web-приложений"
Особенности фреймворка 
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

More Related Content

PDF
CodeFest dirty facts about AngularJS
PPT
AngularJS basics & theory
PDF
презентация вводного доклада Angular на fronttalks.ru
PDF
Лучший frontend-фреймворк, и почему вы его не хотите
PDF
Как и зачем мы тестируем UI
PPTX
AngularJS. Введение и простые примеры для понимания
PPTX
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
PPTX
сервисы в Angular js
CodeFest dirty facts about AngularJS
AngularJS basics & theory
презентация вводного доклада Angular на fronttalks.ru
Лучший frontend-фреймворк, и почему вы его не хотите
Как и зачем мы тестируем UI
AngularJS. Введение и простые примеры для понимания
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
сервисы в Angular js

What's hot (19)

PPTX
Антон Валюх - Использование паттерна Mvvm в android
PPTX
AngularJS2 vs VueJS2 (ru)
PDF
Реактивный фронтенд фреймворк для людей (Константин Комелин)
PDF
Vue.js - реактивный фронтенд фреймворк для людей
PDF
Рендеринг может больше: vue.js vs React, Андрей Солодовников
PDF
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
PDF
Способы оптимизации ручного тестирования веб-сайтов в мобильных браузерах
PPT
Средства разработки web приложений (Web frameworks)
PPTX
Андрей Стахиевич - Appium Mobile Automation Tool
PDF
Rambler.iOS #3: Dependency Injection в iOS
PDF
Михаил Левин: Автоматизация в мобильном тестировании
PPTX
Appium confet qa
PPTX
iOS and Android Mobile Test Automation
PPT
ASP.NET MVC: new era?
PDF
KnockoutJS на примере 2ГИС-Онлайн
PPTX
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
PDF
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver
PPTX
Selenide –  лаконичные тесты на Selenium 2 WebDriver + Java bindings
PDF
«Как написать свой первый плагин для JIRA», Александр Кузнецов (StiltSoft, Бе...
Антон Валюх - Использование паттерна Mvvm в android
AngularJS2 vs VueJS2 (ru)
Реактивный фронтенд фреймворк для людей (Константин Комелин)
Vue.js - реактивный фронтенд фреймворк для людей
Рендеринг может больше: vue.js vs React, Андрей Солодовников
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
Способы оптимизации ручного тестирования веб-сайтов в мобильных браузерах
Средства разработки web приложений (Web frameworks)
Андрей Стахиевич - Appium Mobile Automation Tool
Rambler.iOS #3: Dependency Injection в iOS
Михаил Левин: Автоматизация в мобильном тестировании
Appium confet qa
iOS and Android Mobile Test Automation
ASP.NET MVC: new era?
KnockoutJS на примере 2ГИС-Онлайн
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver
Selenide –  лаконичные тесты на Selenium 2 WebDriver + Java bindings
«Как написать свой первый плагин для JIRA», Александр Кузнецов (StiltSoft, Бе...
Ad

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

PPTX
AngularJS
PDF
C# Web. Занятие 16.
PPTX
AngularJS - Что нового? Бишкек - Meetup
PDF
Angular 2 On Production
PDF
Angular2
PPTX
Angular 2 vs Angular 1
PDF
Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)
PDF
FrontTalks: Роман Дворнов (Ostrovok.ru), «Basis.js: почему я не бросил разраб...
PDF
FrontDays #2. Артём Лисовский, Кроссплатформенные приложения на js: от web-b...
PPTX
Как красиво программировать в AngularJS то, что обычно программируют в 1С
AngularJS
C# Web. Занятие 16.
AngularJS - Что нового? Бишкек - Meetup
Angular 2 On Production
Angular2
Angular 2 vs Angular 1
Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)
FrontTalks: Роман Дворнов (Ostrovok.ru), «Basis.js: почему я не бросил разраб...
FrontDays #2. Артём Лисовский, Кроссплатформенные приложения на js: от web-b...
Как красиво программировать в AngularJS то, что обычно программируют в 1С
Ad

More from Ciklum Minsk (6)

PDF
Dependency Injection Pattern in JavaScript, Speakers' Corner by Evgeny Dmitri...
PPTX
Евгений Дрозд, Василий Сливка Тема: "Как тестировщику сделать счастливым Java...
PPTX
Андрей Кравец Тема: "Пришло время быть реактивным, или..?"
PPTX
Николай Папирный Тема: "Java memory model для простых смертных"
PPT
Александр Захаров Тема: "Domain Driven Design: проектирование по модели"
PPT
Александр Захаров "Использование EntityGraph в JPA 2.1"
Dependency Injection Pattern in JavaScript, Speakers' Corner by Evgeny Dmitri...
Евгений Дрозд, Василий Сливка Тема: "Как тестировщику сделать счастливым Java...
Андрей Кравец Тема: "Пришло время быть реактивным, или..?"
Николай Папирный Тема: "Java memory model для простых смертных"
Александр Захаров Тема: "Domain Driven Design: проектирование по модели"
Александр Захаров "Использование EntityGraph в JPA 2.1"

Антон Гордийчук Тема: "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 ${}