SlideShare a Scribd company logo
1 of 33
Разработка Web-приложений 
на Angular JS 
Докладчик: 
Левицкий Борис 
Software Architect, Softengi
Data Binding 
Большинство 
темплейтных систем 
Angular JS
Data Binding 
<div ng-app ng-init="qty=1;cost=2"> 
<b>Invoice:</b> 
<div> 
Quantity: <input type="number" ng-model="qty" required > 
</div> 
<div> 
Costs: <input type="number" ng-model="cost" required > 
</div> 
<div> 
<b>Total:</b> {{qty * cost | currency}} 
</div></div> 
Live Demo
Под капотом: Модель - Scope
Как работает Data-Binding 
ng-click 
$scope.$eval(): 
custom-code 
$rootScope.$digest(): 
loop through all child scopes: 
$scope.$digest() 
$scope.$digest(): 
process all watchers in loop
Недостатки 
● Достоинства 
o “Чистая” модель 
o Выражения вплоть до использования функций в data binding’е 
● Недостатки 
o Нужно вызывать $scope.$apply(); для кода “извне” 
o Слишком большое количество watcher’ов могут существенно 
замедлить производительность
Наследование Scope 
Важно: Данные лучше хранить объедененными в один объект-модель, чем 
отдельными свойствами в scope.
Контроллеры 
Live Demo
Контроллер как модель 
<div ng-app ng-controller="MyCtrl as ctrl"> 
Hello, {{ctrl.name}}! 
<button ng-click="ctrl.action()">Click</button></div> 
Live Demo
Директивы 
Фактически позволяют расширять возможности HTML 
Пример: Angular JS Todo App Example 
Важно: Директивы призваны расширять UI и не должны содержать бизнес 
логику или другой view-independent код.
Cоздание собственных директив 
Примеры директив от Angular JS
Фильтры 
Позволяют производить дополнительную обработку значений перед записью во View 
тем самым снимая отвественность за это с модели. 
In HTML Template Binding 
{{ filter_expression | filter : expression : comparator}} 
In JavaScript 
$filter('filter')(array, expression, comparator)
Пример кастомного фильтра 
//Возвращает новый массив, где пропущенно указанное количество элементов в //исходном 
массиве 
module.filter('skip', [function () { 
return function (arr, count) { 
return arr ? arr.slice(count) : arr; 
}; 
}]) 
//Использование 
<tr data-ng-repeat="metric in Metrics | skip:pagination.getSkipCount() | limitTo: pagination.pageSize">
Валидация 
ng-form - автоматически отражает состояние формы и 
её контроллов в виде модели внутри Scope 
● Информация о валидности каждого поля или всей вормы сразу 
● Список ошибок, связанных с каждым полем формы 
● Понимает HTML5 валидационные атрибуты 
Ng-Form Validation Live Demo 
ngModel Custom Validation Demo
View Independent Code 
Application Structure, Services
Структура 
Angular 
приложеня
Типы сервисов 
● Constant 
● Value 
● Factory 
● Service 
● Provider
Constant, Value 
Value - application-wide сервис-объект, который может быть инжектирован 
в инстансы и контроллеры. 
Constant - application-wide сервис-объект, который может быть 
инжектирован в инстансы и контроллеры а также в функции конфигурации 
приложеня. Может быть изменен.
Factory 
Позволяет создать Singleton объект 
доступный во всем приложении. 
Live Demo
Service 
function MyService() { 
}//Factory 
app.factory('MyService', function() { 
return new MyService(); 
})//Equivalent Service 
app.service('MyService', MyService)
Provider 
Жизненный цикл приложения 
● Config - этап конифигурации провайдеров. 
Только провайдеры и константы могут быть инжектированы. 
● Run - этап инициализации приложения. 
Только инстансы и константы могут быть инжектированы. 
Доступен корневой скоуп приложения - $rootScope 
Provider - factory, который позволяет выполнить кастомную конфигурацию 
на сonfig этапе 
Live Demo
Injector - Иньекция зависимостей 
//Annotated injection 
app.controller('Ctrl1', function ($scope, myService) { … });//'Safe' annotated 
injection (RECOMMENDED) 
app.controller('Ctrl2', ['$scope', 'myService', function ($scope, myService) { … 
}]);//Explicit injectionfunction Ctrl3($scope, myService) { … } 
Ctrl3.$injector = ['$scope', 'myService']; 
app.controller('Ctrl3', Ctrl3); 
//Manual injectionvar $injector = angular.injector(); 
//Get instancevar service = $injector.get('serviceA'); 
//Invoke function with injections$injector.invoke(['serviceA', 
function(serviceA){}]);
Стандартные сервисы Angular 
● $http - ajax запросы (использует промисы) 
● $location - манипулиции с window.location 
● $rootScope - корневая модель приложения 
● $rootElement - корневой HTML элемент приложения 
● $q - реализация промисов 
● $log - логирование (можно отключать debug режим) 
● $cookies - работа с куками 
Полный список сервисов
Роутинг 
Angular JS Routing Example
Организация структуры приложения 
● Простая схема - по типу файлов 
● Модуальная схема - по модулям/подсистемам
Организация по типу файлов 
.app 
partials - все view приложения 
usersedit.tpl.html 
admindashboard.html 
controllers - все контроллеры приложения 
usersedit.js 
admindashboard.js 
services 
service1.js 
service2.js 
.app.js - конфигурация и инициализация всех модулей 
.routes.js - декларация роутинга для всех модулей
Недостатки простой 
схемы в больших приложениях 
● Неудобно переключаться между view.tpl.html и 
controller.js файлами 
● “Размазанность” подсистемы по различным 
папкам и файлам. Дублирование веток дерева: 
○ Views.. 
○ Controllers.. 
○ services.. 
○ routes.js 
○ app.js
Модульная структура 
.app 
users - Подсистема “Пользователи” 
edit 
edit.tpl.html 
edit.ctrl.js 
view 
view.tpl.html 
view.ctrl.js 
admin - Подсистема “Администрирования” 
services - Специфичные сервисы подсистемы 
adminService.js 
dashboard 
dashboard.tpl.html 
dashboard.ctrl.js 
services - общие сервисы для всей системы 
dataService.js 
securityService.js 
.app.js - декларация модуля всего приложения, регистрация зависимостей на другие 
модули
Задача каждого модуля 
● Конфигурация внутренних и внешних сервисов 
● Регистрация роутинга 
● Регистарция других компонентов 
o Регистарция пунктов главного меню 
● Инциализация модуля
Демонстрация модульной структуры 
приложения Modern Security Technology 
Suite
$resource 
Позволяет создать объект-инкапуслирующий основные запросы к 
REST сервисам на основе URL-шаблона 
Article

More Related Content

What's hot

Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, ControllersШкола-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, ControllersГлеб Тарасов
 
Angular 2 vs Angular 1
Angular 2 vs Angular 1Angular 2 vs Angular 1
Angular 2 vs Angular 1GDG Odessa
 
Антон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в androidАнтон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в androidDataArt
 
Курсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOS
Курсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOSКурсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOS
Курсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOSГлеб Тарасов
 
ASP.NET MVC 3 Anton Vidishchev
ASP.NET MVC 3 Anton VidishchevASP.NET MVC 3 Anton Vidishchev
ASP.NET MVC 3 Anton VidishchevAlex Tumanoff
 
AngularJS2 vs VueJS2 (ru)
AngularJS2 vs VueJS2 (ru)AngularJS2 vs VueJS2 (ru)
AngularJS2 vs VueJS2 (ru)chaykaborya
 
#MBLTdev: Опыт использования MVVM в реальных проектах
#MBLTdev: Опыт использования MVVM в реальных проектах#MBLTdev: Опыт использования MVVM в реальных проектах
#MBLTdev: Опыт использования MVVM в реальных проектахe-Legion
 
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)Ontico
 
Moxy – реализация MVP под Android. С щепоткой магии
Moxy – реализация MVP под Android. С щепоткой магииMoxy – реализация MVP под Android. С щепоткой магии
Moxy – реализация MVP под Android. С щепоткой магииYuri Shmakov
 
Angular 2: Всех переиграл
Angular 2: Всех переигралAngular 2: Всех переиграл
Angular 2: Всех переигралEugene Zharkov
 
Средства разработки web приложений (Web frameworks)
Средства разработки web приложений
(Web frameworks)Средства разработки web приложений
(Web frameworks)
Средства разработки web приложений (Web frameworks)Fedor Malyshkin
 
Moxy. Из чего состоит и как этим пользоваться
Moxy. Из чего состоит и как этим пользоватьсяMoxy. Из чего состоит и как этим пользоваться
Moxy. Из чего состоит и как этим пользоватьсяYuri Shmakov
 
Реактивный фронтенд фреймворк для людей (Константин Комелин)
Реактивный фронтенд фреймворк для людей (Константин Комелин)Реактивный фронтенд фреймворк для людей (Константин Комелин)
Реактивный фронтенд фреймворк для людей (Константин Комелин)DrupalYug
 
Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)Ontico
 
Yet another architectur. Как устроены приложения SuperJob изнутри
Yet another architectur.  Как устроены приложения SuperJob изнутриYet another architectur.  Как устроены приложения SuperJob изнутри
Yet another architectur. Как устроены приложения SuperJob изнутриDenisenko Sergei
 
#13 "Управление состоянием в Redux" Роман Сальников
#13 "Управление состоянием в Redux" Роман Сальников#13 "Управление состоянием в Redux" Роман Сальников
#13 "Управление состоянием в Redux" Роман СальниковJSib
 
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)Ontico
 
Разработка бизнес-приложений на OpenUI5 — Николай Надоричев, MOLGA Consulting
Разработка бизнес-приложений на OpenUI5 — Николай Надоричев, MOLGA ConsultingРазработка бизнес-приложений на OpenUI5 — Николай Надоричев, MOLGA Consulting
Разработка бизнес-приложений на OpenUI5 — Николай Надоричев, MOLGA ConsultingYandex
 
Системы автоматизированной сборки (Lecture 05 – gradle)
Системы автоматизированной сборки (Lecture 05 – gradle)Системы автоматизированной сборки (Lecture 05 – gradle)
Системы автоматизированной сборки (Lecture 05 – gradle)Noveo
 

What's hot (20)

Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, ControllersШкола-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
 
Angular 2 vs Angular 1
Angular 2 vs Angular 1Angular 2 vs Angular 1
Angular 2 vs Angular 1
 
Антон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в androidАнтон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в android
 
Курсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOS
Курсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOSКурсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOS
Курсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOS
 
ASP.NET MVC 3 Anton Vidishchev
ASP.NET MVC 3 Anton VidishchevASP.NET MVC 3 Anton Vidishchev
ASP.NET MVC 3 Anton Vidishchev
 
AngularJS2 vs VueJS2 (ru)
AngularJS2 vs VueJS2 (ru)AngularJS2 vs VueJS2 (ru)
AngularJS2 vs VueJS2 (ru)
 
#MBLTdev: Опыт использования MVVM в реальных проектах
#MBLTdev: Опыт использования MVVM в реальных проектах#MBLTdev: Опыт использования MVVM в реальных проектах
#MBLTdev: Опыт использования MVVM в реальных проектах
 
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
 
Moxy – реализация MVP под Android. С щепоткой магии
Moxy – реализация MVP под Android. С щепоткой магииMoxy – реализация MVP под Android. С щепоткой магии
Moxy – реализация MVP под Android. С щепоткой магии
 
Angular 2: Всех переиграл
Angular 2: Всех переигралAngular 2: Всех переиграл
Angular 2: Всех переиграл
 
Средства разработки web приложений (Web frameworks)
Средства разработки web приложений
(Web frameworks)Средства разработки web приложений
(Web frameworks)
Средства разработки web приложений (Web frameworks)
 
Moxy. Из чего состоит и как этим пользоваться
Moxy. Из чего состоит и как этим пользоватьсяMoxy. Из чего состоит и как этим пользоваться
Moxy. Из чего состоит и как этим пользоваться
 
knockout.js
knockout.jsknockout.js
knockout.js
 
Реактивный фронтенд фреймворк для людей (Константин Комелин)
Реактивный фронтенд фреймворк для людей (Константин Комелин)Реактивный фронтенд фреймворк для людей (Константин Комелин)
Реактивный фронтенд фреймворк для людей (Константин Комелин)
 
Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)
 
Yet another architectur. Как устроены приложения SuperJob изнутри
Yet another architectur.  Как устроены приложения SuperJob изнутриYet another architectur.  Как устроены приложения SuperJob изнутри
Yet another architectur. Как устроены приложения SuperJob изнутри
 
#13 "Управление состоянием в Redux" Роман Сальников
#13 "Управление состоянием в Redux" Роман Сальников#13 "Управление состоянием в Redux" Роман Сальников
#13 "Управление состоянием в Redux" Роман Сальников
 
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
 
Разработка бизнес-приложений на OpenUI5 — Николай Надоричев, MOLGA Consulting
Разработка бизнес-приложений на OpenUI5 — Николай Надоричев, MOLGA ConsultingРазработка бизнес-приложений на OpenUI5 — Николай Надоричев, MOLGA Consulting
Разработка бизнес-приложений на OpenUI5 — Николай Надоричев, MOLGA Consulting
 
Системы автоматизированной сборки (Lecture 05 – gradle)
Системы автоматизированной сборки (Lecture 05 – gradle)Системы автоматизированной сборки (Lecture 05 – gradle)
Системы автоматизированной сборки (Lecture 05 – gradle)
 

Viewers also liked

Сайт Москвы за 6 месяцев / Игорь Цупко (Notamedia)
Сайт Москвы за 6 месяцев / Игорь Цупко (Notamedia)Сайт Москвы за 6 месяцев / Игорь Цупко (Notamedia)
Сайт Москвы за 6 месяцев / Игорь Цупко (Notamedia)Ontico
 
Встреча "Front-end: на старт, внимание, разработка!", Сергей Пузанков
 Встреча "Front-end: на старт, внимание, разработка!", Сергей Пузанков Встреча "Front-end: на старт, внимание, разработка!", Сергей Пузанков
Встреча "Front-end: на старт, внимание, разработка!", Сергей ПузанковGoIT
 
Фреймворки: недалёкое прошлое и ближайшее будущее
Фреймворки: недалёкое прошлое и ближайшее будущееФреймворки: недалёкое прошлое и ближайшее будущее
Фреймворки: недалёкое прошлое и ближайшее будущееYandex
 
Good front end - bad front-end (Vladimir Gutorov)
Good front end -  bad  front-end (Vladimir Gutorov)Good front end -  bad  front-end (Vladimir Gutorov)
Good front end - bad front-end (Vladimir Gutorov)LumoSpark
 
Роман Комаров "CSS-препроцессоры: из каменного века — в будущее"
Роман Комаров "CSS-препроцессоры: из каменного века — в будущее"Роман Комаров "CSS-препроцессоры: из каменного века — в будущее"
Роман Комаров "CSS-препроцессоры: из каменного века — в будущее"Yandex
 
Мастер класс- Maven + Jenkins
Мастер класс- Maven + JenkinsМастер класс- Maven + Jenkins
Мастер класс- Maven + JenkinsValentin Fedoskin
 
«Путь от инди-разработчика до гейм-дизайнера в студии»
«Путь от инди-разработчика до гейм-дизайнера в студии»«Путь от инди-разработчика до гейм-дизайнера в студии»
«Путь от инди-разработчика до гейм-дизайнера в студии»Stfalcon Meetups
 
LESS, SASS, HAML: 4 буквы, изменившие frontend development
LESS, SASS, HAML: 4 буквы, изменившие frontend developmentLESS, SASS, HAML: 4 буквы, изменившие frontend development
LESS, SASS, HAML: 4 буквы, изменившие frontend developmentKonstantin Kudryashov
 
Пользовательские свойства как основа архитектуры CSS / Павел Ловцевич (LOVATA)
Пользовательские свойства как основа архитектуры CSS / Павел Ловцевич (LOVATA)Пользовательские свойства как основа архитектуры CSS / Павел Ловцевич (LOVATA)
Пользовательские свойства как основа архитектуры CSS / Павел Ловцевич (LOVATA)Ontico
 
Лекция "Особенности разработки под разные платформы"
Лекция "Особенности разработки под разные платформы"Лекция "Особенности разработки под разные платформы"
Лекция "Особенности разработки под разные платформы"Evgeniy Marchenko
 
Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)
Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)
Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)Ontico
 
Как обеспечить свою студию квалифицированными кадрами
Как обеспечить свою студию квалифицированными кадрамиКак обеспечить свою студию квалифицированными кадрами
Как обеспечить свою студию квалифицированными кадрами1С-Битрикс
 
Программируем back-end: функции, события, особенности мобильного приложения
Программируем back-end: функции, события, особенности мобильного приложенияПрограммируем back-end: функции, события, особенности мобильного приложения
Программируем back-end: функции, события, особенности мобильного приложения1С-Битрикс
 
Анимация БВШД 2016
Анимация БВШД 2016Анимация БВШД 2016
Анимация БВШД 2016Igor Silkin
 
Maven как средство сборки проекта
Maven как средство сборки проектаMaven как средство сборки проекта
Maven как средство сборки проектаYova Stoika
 
сравнение Drupal и 1с битрикс
сравнение Drupal и 1с битрикссравнение Drupal и 1с битрикс
сравнение Drupal и 1с битриксAndrii Podanenko
 

Viewers also liked (20)

Сайт Москвы за 6 месяцев / Игорь Цупко (Notamedia)
Сайт Москвы за 6 месяцев / Игорь Цупко (Notamedia)Сайт Москвы за 6 месяцев / Игорь Цупко (Notamedia)
Сайт Москвы за 6 месяцев / Игорь Цупко (Notamedia)
 
Встреча "Front-end: на старт, внимание, разработка!", Сергей Пузанков
 Встреча "Front-end: на старт, внимание, разработка!", Сергей Пузанков Встреча "Front-end: на старт, внимание, разработка!", Сергей Пузанков
Встреча "Front-end: на старт, внимание, разработка!", Сергей Пузанков
 
Фреймворки: недалёкое прошлое и ближайшее будущее
Фреймворки: недалёкое прошлое и ближайшее будущееФреймворки: недалёкое прошлое и ближайшее будущее
Фреймворки: недалёкое прошлое и ближайшее будущее
 
Good front end - bad front-end (Vladimir Gutorov)
Good front end -  bad  front-end (Vladimir Gutorov)Good front end -  bad  front-end (Vladimir Gutorov)
Good front end - bad front-end (Vladimir Gutorov)
 
js tools
js toolsjs tools
js tools
 
Роман Комаров "CSS-препроцессоры: из каменного века — в будущее"
Роман Комаров "CSS-препроцессоры: из каменного века — в будущее"Роман Комаров "CSS-препроцессоры: из каменного века — в будущее"
Роман Комаров "CSS-препроцессоры: из каменного века — в будущее"
 
Мастер класс- Maven + Jenkins
Мастер класс- Maven + JenkinsМастер класс- Maven + Jenkins
Мастер класс- Maven + Jenkins
 
формы и методы использования икт
формы и методы использования иктформы и методы использования икт
формы и методы использования икт
 
«Путь от инди-разработчика до гейм-дизайнера в студии»
«Путь от инди-разработчика до гейм-дизайнера в студии»«Путь от инди-разработчика до гейм-дизайнера в студии»
«Путь от инди-разработчика до гейм-дизайнера в студии»
 
LESS, SASS, HAML: 4 буквы, изменившие frontend development
LESS, SASS, HAML: 4 буквы, изменившие frontend developmentLESS, SASS, HAML: 4 буквы, изменившие frontend development
LESS, SASS, HAML: 4 буквы, изменившие frontend development
 
Пользовательские свойства как основа архитектуры CSS / Павел Ловцевич (LOVATA)
Пользовательские свойства как основа архитектуры CSS / Павел Ловцевич (LOVATA)Пользовательские свойства как основа архитектуры CSS / Павел Ловцевич (LOVATA)
Пользовательские свойства как основа архитектуры CSS / Павел Ловцевич (LOVATA)
 
Maven lifecycle
Maven lifecycleMaven lifecycle
Maven lifecycle
 
Лекция "Особенности разработки под разные платформы"
Лекция "Особенности разработки под разные платформы"Лекция "Особенности разработки под разные платформы"
Лекция "Особенности разработки под разные платформы"
 
Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)
Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)
Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)
 
Как обеспечить свою студию квалифицированными кадрами
Как обеспечить свою студию квалифицированными кадрамиКак обеспечить свою студию квалифицированными кадрами
Как обеспечить свою студию квалифицированными кадрами
 
Spring in java
Spring in javaSpring in java
Spring in java
 
Программируем back-end: функции, события, особенности мобильного приложения
Программируем back-end: функции, события, особенности мобильного приложенияПрограммируем back-end: функции, события, особенности мобильного приложения
Программируем back-end: функции, события, особенности мобильного приложения
 
Анимация БВШД 2016
Анимация БВШД 2016Анимация БВШД 2016
Анимация БВШД 2016
 
Maven как средство сборки проекта
Maven как средство сборки проектаMaven как средство сборки проекта
Maven как средство сборки проекта
 
сравнение Drupal и 1с битрикс
сравнение Drupal и 1с битрикссравнение Drupal и 1с битрикс
сравнение Drupal и 1с битрикс
 

Similar to Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi

Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCDevDay
 
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)7bits
 
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Ontico
 
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Oleksii Okhrymenko
 
Референсная архитектура приложения на ASP.NET MVC
Референсная архитектура приложения на ASP.NET MVCРеференсная архитектура приложения на ASP.NET MVC
Референсная архитектура приложения на ASP.NET MVCAndrew Mayorov
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...JSib
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаMikhail Chinkov
 
Test Driven Development in ASP.NET MVC 3
Test Driven Development in ASP.NET MVC 3Test Driven Development in ASP.NET MVC 3
Test Driven Development in ASP.NET MVC 3Anton Vidishchev
 
Google I/O 2016 для разработчиков
Google I/O 2016 для разработчиковGoogle I/O 2016 для разработчиков
Google I/O 2016 для разработчиковWOX APP
 
Опыт разработки эффективного SPA
Опыт разработки эффективного SPAОпыт разработки эффективного SPA
Опыт разработки эффективного SPAEugene Abrosimov
 
Автоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложенийАвтоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложенийAndrei Pugachev
 
6 создание распределенных приложений по технологии remoting
6 создание распределенных приложений по технологии remoting6 создание распределенных приложений по технологии remoting
6 создание распределенных приложений по технологии remotingKewpaN
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationAndrii Dzynia
 
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...it-people
 
Что нового в Visual Studio 2015
Что нового в Visual Studio 2015Что нового в Visual Studio 2015
Что нового в Visual Studio 2015GetDev.NET
 
ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCGetDev.NET
 
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»Yulia Tsisyk
 

Similar to Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi (20)

Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
 
Angular js
Angular jsAngular js
Angular js
 
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
 
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
 
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2
 
Референсная архитектура приложения на ASP.NET MVC
Референсная архитектура приложения на ASP.NET MVCРеференсная архитектура приложения на ASP.NET MVC
Референсная архитектура приложения на ASP.NET MVC
 
Aspect Oriented Approach
Aspect Oriented ApproachAspect Oriented Approach
Aspect Oriented Approach
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
Test Driven Development in ASP.NET MVC 3
Test Driven Development in ASP.NET MVC 3Test Driven Development in ASP.NET MVC 3
Test Driven Development in ASP.NET MVC 3
 
Behavior Driven Development
Behavior Driven DevelopmentBehavior Driven Development
Behavior Driven Development
 
Google I/O 2016 для разработчиков
Google I/O 2016 для разработчиковGoogle I/O 2016 для разработчиков
Google I/O 2016 для разработчиков
 
Опыт разработки эффективного SPA
Опыт разработки эффективного SPAОпыт разработки эффективного SPA
Опыт разработки эффективного SPA
 
Автоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложенийАвтоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложений
 
6 создание распределенных приложений по технологии remoting
6 создание распределенных приложений по технологии remoting6 создание распределенных приложений по технологии remoting
6 создание распределенных приложений по технологии remoting
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test Automation
 
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
 
Что нового в Visual Studio 2015
Что нового в Visual Studio 2015Что нового в Visual Studio 2015
Что нового в Visual Studio 2015
 
ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVC
 
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
 

More from Softengi

Extended Reality Solutions for Digital Marketing
Extended Reality Solutions for Digital MarketingExtended Reality Solutions for Digital Marketing
Extended Reality Solutions for Digital MarketingSoftengi
 
Intecracy Group Presentation
Intecracy Group PresentationIntecracy Group Presentation
Intecracy Group PresentationSoftengi
 
Softengi - Inspired Software Engineering
Softengi - Inspired Software EngineeringSoftengi - Inspired Software Engineering
Softengi - Inspired Software EngineeringSoftengi
 
Softengi's 9 Ways To Fail Your IT Project In The Outsourcing Journal Special ...
Softengi's 9 Ways To Fail Your IT Project In The Outsourcing Journal Special ...Softengi's 9 Ways To Fail Your IT Project In The Outsourcing Journal Special ...
Softengi's 9 Ways To Fail Your IT Project In The Outsourcing Journal Special ...Softengi
 
Infographic of Softengi's 2014
Infographic of Softengi's 2014Infographic of Softengi's 2014
Infographic of Softengi's 2014Softengi
 
Основы OLAP. Вебинар Workaround в Softengi
Основы OLAP. Вебинар Workaround в SoftengiОсновы OLAP. Вебинар Workaround в Softengi
Основы OLAP. Вебинар Workaround в SoftengiSoftengi
 
Как оценить Тестировщика. Александра Ковалева, Testing Consultant в Softengi
Как оценить Тестировщика. Александра Ковалева, Testing Consultant в SoftengiКак оценить Тестировщика. Александра Ковалева, Testing Consultant в Softengi
Как оценить Тестировщика. Александра Ковалева, Testing Consultant в SoftengiSoftengi
 
Как оценить время на тестирование. Александр Зиновьев, Test Lead Softengi
Как оценить время на тестирование. Александр Зиновьев, Test Lead SoftengiКак оценить время на тестирование. Александр Зиновьев, Test Lead Softengi
Как оценить время на тестирование. Александр Зиновьев, Test Lead SoftengiSoftengi
 
Архитектурные семинары Softengi - инфографика
Архитектурные семинары Softengi - инфографикаАрхитектурные семинары Softengi - инфографика
Архитектурные семинары Softengi - инфографикаSoftengi
 
Автоматизированный подход к локализации корпоративных приложений
Автоматизированный подход к локализации корпоративных приложенийАвтоматизированный подход к локализации корпоративных приложений
Автоматизированный подход к локализации корпоративных приложенийSoftengi
 
Scrum и пустота. Доклад Анатолия Кота, менеджера проектов Softengi, на Междун...
Scrum и пустота. Доклад Анатолия Кота, менеджера проектов Softengi, на Междун...Scrum и пустота. Доклад Анатолия Кота, менеджера проектов Softengi, на Междун...
Scrum и пустота. Доклад Анатолия Кота, менеджера проектов Softengi, на Междун...Softengi
 
About REST. Архитектурные семинары Softengi
About REST. Архитектурные семинары SoftengiAbout REST. Архитектурные семинары Softengi
About REST. Архитектурные семинары SoftengiSoftengi
 
AutoTest Refactoring. Архитектурные семинары Softengi
AutoTest Refactoring. Архитектурные семинары SoftengiAutoTest Refactoring. Архитектурные семинары Softengi
AutoTest Refactoring. Архитектурные семинары SoftengiSoftengi
 
Enviance Environmental ERP
Enviance Environmental ERPEnviance Environmental ERP
Enviance Environmental ERPSoftengi
 
Corporate Social Responsibility at Softengi
Corporate Social Responsibility at SoftengiCorporate Social Responsibility at Softengi
Corporate Social Responsibility at SoftengiSoftengi
 
Localize your business - Software Localization Services LocServ
Localize your business - Software Localization Services LocServLocalize your business - Software Localization Services LocServ
Localize your business - Software Localization Services LocServSoftengi
 
Тестирование web-приложений на iPad
Тестирование web-приложений на iPadТестирование web-приложений на iPad
Тестирование web-приложений на iPadSoftengi
 
Постановка и улучшение Scrum процесса для группы проектов в компании
Постановка и улучшение Scrum процесса для группы проектов в компанииПостановка и улучшение Scrum процесса для группы проектов в компании
Постановка и улучшение Scrum процесса для группы проектов в компанииSoftengi
 
Softengi Software Development Company Profile
Softengi Software Development Company ProfileSoftengi Software Development Company Profile
Softengi Software Development Company ProfileSoftengi
 
Путь к трассировке требований: от идеи к инструменту. SQA-Days 15
Путь к трассировке требований: от идеи к инструменту. SQA-Days 15Путь к трассировке требований: от идеи к инструменту. SQA-Days 15
Путь к трассировке требований: от идеи к инструменту. SQA-Days 15Softengi
 

More from Softengi (20)

Extended Reality Solutions for Digital Marketing
Extended Reality Solutions for Digital MarketingExtended Reality Solutions for Digital Marketing
Extended Reality Solutions for Digital Marketing
 
Intecracy Group Presentation
Intecracy Group PresentationIntecracy Group Presentation
Intecracy Group Presentation
 
Softengi - Inspired Software Engineering
Softengi - Inspired Software EngineeringSoftengi - Inspired Software Engineering
Softengi - Inspired Software Engineering
 
Softengi's 9 Ways To Fail Your IT Project In The Outsourcing Journal Special ...
Softengi's 9 Ways To Fail Your IT Project In The Outsourcing Journal Special ...Softengi's 9 Ways To Fail Your IT Project In The Outsourcing Journal Special ...
Softengi's 9 Ways To Fail Your IT Project In The Outsourcing Journal Special ...
 
Infographic of Softengi's 2014
Infographic of Softengi's 2014Infographic of Softengi's 2014
Infographic of Softengi's 2014
 
Основы OLAP. Вебинар Workaround в Softengi
Основы OLAP. Вебинар Workaround в SoftengiОсновы OLAP. Вебинар Workaround в Softengi
Основы OLAP. Вебинар Workaround в Softengi
 
Как оценить Тестировщика. Александра Ковалева, Testing Consultant в Softengi
Как оценить Тестировщика. Александра Ковалева, Testing Consultant в SoftengiКак оценить Тестировщика. Александра Ковалева, Testing Consultant в Softengi
Как оценить Тестировщика. Александра Ковалева, Testing Consultant в Softengi
 
Как оценить время на тестирование. Александр Зиновьев, Test Lead Softengi
Как оценить время на тестирование. Александр Зиновьев, Test Lead SoftengiКак оценить время на тестирование. Александр Зиновьев, Test Lead Softengi
Как оценить время на тестирование. Александр Зиновьев, Test Lead Softengi
 
Архитектурные семинары Softengi - инфографика
Архитектурные семинары Softengi - инфографикаАрхитектурные семинары Softengi - инфографика
Архитектурные семинары Softengi - инфографика
 
Автоматизированный подход к локализации корпоративных приложений
Автоматизированный подход к локализации корпоративных приложенийАвтоматизированный подход к локализации корпоративных приложений
Автоматизированный подход к локализации корпоративных приложений
 
Scrum и пустота. Доклад Анатолия Кота, менеджера проектов Softengi, на Междун...
Scrum и пустота. Доклад Анатолия Кота, менеджера проектов Softengi, на Междун...Scrum и пустота. Доклад Анатолия Кота, менеджера проектов Softengi, на Междун...
Scrum и пустота. Доклад Анатолия Кота, менеджера проектов Softengi, на Междун...
 
About REST. Архитектурные семинары Softengi
About REST. Архитектурные семинары SoftengiAbout REST. Архитектурные семинары Softengi
About REST. Архитектурные семинары Softengi
 
AutoTest Refactoring. Архитектурные семинары Softengi
AutoTest Refactoring. Архитектурные семинары SoftengiAutoTest Refactoring. Архитектурные семинары Softengi
AutoTest Refactoring. Архитектурные семинары Softengi
 
Enviance Environmental ERP
Enviance Environmental ERPEnviance Environmental ERP
Enviance Environmental ERP
 
Corporate Social Responsibility at Softengi
Corporate Social Responsibility at SoftengiCorporate Social Responsibility at Softengi
Corporate Social Responsibility at Softengi
 
Localize your business - Software Localization Services LocServ
Localize your business - Software Localization Services LocServLocalize your business - Software Localization Services LocServ
Localize your business - Software Localization Services LocServ
 
Тестирование web-приложений на iPad
Тестирование web-приложений на iPadТестирование web-приложений на iPad
Тестирование web-приложений на iPad
 
Постановка и улучшение Scrum процесса для группы проектов в компании
Постановка и улучшение Scrum процесса для группы проектов в компанииПостановка и улучшение Scrum процесса для группы проектов в компании
Постановка и улучшение Scrum процесса для группы проектов в компании
 
Softengi Software Development Company Profile
Softengi Software Development Company ProfileSoftengi Software Development Company Profile
Softengi Software Development Company Profile
 
Путь к трассировке требований: от идеи к инструменту. SQA-Days 15
Путь к трассировке требований: от идеи к инструменту. SQA-Days 15Путь к трассировке требований: от идеи к инструменту. SQA-Days 15
Путь к трассировке требований: от идеи к инструменту. SQA-Days 15
 

Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi

  • 1. Разработка Web-приложений на Angular JS Докладчик: Левицкий Борис Software Architect, Softengi
  • 2.
  • 3. Data Binding Большинство темплейтных систем Angular JS
  • 4. Data Binding <div ng-app ng-init="qty=1;cost=2"> <b>Invoice:</b> <div> Quantity: <input type="number" ng-model="qty" required > </div> <div> Costs: <input type="number" ng-model="cost" required > </div> <div> <b>Total:</b> {{qty * cost | currency}} </div></div> Live Demo
  • 6. Как работает Data-Binding ng-click $scope.$eval(): custom-code $rootScope.$digest(): loop through all child scopes: $scope.$digest() $scope.$digest(): process all watchers in loop
  • 7. Недостатки ● Достоинства o “Чистая” модель o Выражения вплоть до использования функций в data binding’е ● Недостатки o Нужно вызывать $scope.$apply(); для кода “извне” o Слишком большое количество watcher’ов могут существенно замедлить производительность
  • 8. Наследование Scope Важно: Данные лучше хранить объедененными в один объект-модель, чем отдельными свойствами в scope.
  • 10. Контроллер как модель <div ng-app ng-controller="MyCtrl as ctrl"> Hello, {{ctrl.name}}! <button ng-click="ctrl.action()">Click</button></div> Live Demo
  • 11. Директивы Фактически позволяют расширять возможности HTML Пример: Angular JS Todo App Example Важно: Директивы призваны расширять UI и не должны содержать бизнес логику или другой view-independent код.
  • 12. Cоздание собственных директив Примеры директив от Angular JS
  • 13. Фильтры Позволяют производить дополнительную обработку значений перед записью во View тем самым снимая отвественность за это с модели. In HTML Template Binding {{ filter_expression | filter : expression : comparator}} In JavaScript $filter('filter')(array, expression, comparator)
  • 14. Пример кастомного фильтра //Возвращает новый массив, где пропущенно указанное количество элементов в //исходном массиве module.filter('skip', [function () { return function (arr, count) { return arr ? arr.slice(count) : arr; }; }]) //Использование <tr data-ng-repeat="metric in Metrics | skip:pagination.getSkipCount() | limitTo: pagination.pageSize">
  • 15. Валидация ng-form - автоматически отражает состояние формы и её контроллов в виде модели внутри Scope ● Информация о валидности каждого поля или всей вормы сразу ● Список ошибок, связанных с каждым полем формы ● Понимает HTML5 валидационные атрибуты Ng-Form Validation Live Demo ngModel Custom Validation Demo
  • 16. View Independent Code Application Structure, Services
  • 18. Типы сервисов ● Constant ● Value ● Factory ● Service ● Provider
  • 19. Constant, Value Value - application-wide сервис-объект, который может быть инжектирован в инстансы и контроллеры. Constant - application-wide сервис-объект, который может быть инжектирован в инстансы и контроллеры а также в функции конфигурации приложеня. Может быть изменен.
  • 20.
  • 21. Factory Позволяет создать Singleton объект доступный во всем приложении. Live Demo
  • 22. Service function MyService() { }//Factory app.factory('MyService', function() { return new MyService(); })//Equivalent Service app.service('MyService', MyService)
  • 23. Provider Жизненный цикл приложения ● Config - этап конифигурации провайдеров. Только провайдеры и константы могут быть инжектированы. ● Run - этап инициализации приложения. Только инстансы и константы могут быть инжектированы. Доступен корневой скоуп приложения - $rootScope Provider - factory, который позволяет выполнить кастомную конфигурацию на сonfig этапе Live Demo
  • 24. Injector - Иньекция зависимостей //Annotated injection app.controller('Ctrl1', function ($scope, myService) { … });//'Safe' annotated injection (RECOMMENDED) app.controller('Ctrl2', ['$scope', 'myService', function ($scope, myService) { … }]);//Explicit injectionfunction Ctrl3($scope, myService) { … } Ctrl3.$injector = ['$scope', 'myService']; app.controller('Ctrl3', Ctrl3); //Manual injectionvar $injector = angular.injector(); //Get instancevar service = $injector.get('serviceA'); //Invoke function with injections$injector.invoke(['serviceA', function(serviceA){}]);
  • 25. Стандартные сервисы Angular ● $http - ajax запросы (использует промисы) ● $location - манипулиции с window.location ● $rootScope - корневая модель приложения ● $rootElement - корневой HTML элемент приложения ● $q - реализация промисов ● $log - логирование (можно отключать debug режим) ● $cookies - работа с куками Полный список сервисов
  • 26. Роутинг Angular JS Routing Example
  • 27. Организация структуры приложения ● Простая схема - по типу файлов ● Модуальная схема - по модулям/подсистемам
  • 28. Организация по типу файлов .app partials - все view приложения usersedit.tpl.html admindashboard.html controllers - все контроллеры приложения usersedit.js admindashboard.js services service1.js service2.js .app.js - конфигурация и инициализация всех модулей .routes.js - декларация роутинга для всех модулей
  • 29. Недостатки простой схемы в больших приложениях ● Неудобно переключаться между view.tpl.html и controller.js файлами ● “Размазанность” подсистемы по различным папкам и файлам. Дублирование веток дерева: ○ Views.. ○ Controllers.. ○ services.. ○ routes.js ○ app.js
  • 30. Модульная структура .app users - Подсистема “Пользователи” edit edit.tpl.html edit.ctrl.js view view.tpl.html view.ctrl.js admin - Подсистема “Администрирования” services - Специфичные сервисы подсистемы adminService.js dashboard dashboard.tpl.html dashboard.ctrl.js services - общие сервисы для всей системы dataService.js securityService.js .app.js - декларация модуля всего приложения, регистрация зависимостей на другие модули
  • 31. Задача каждого модуля ● Конфигурация внутренних и внешних сервисов ● Регистрация роутинга ● Регистарция других компонентов o Регистарция пунктов главного меню ● Инциализация модуля
  • 32. Демонстрация модульной структуры приложения Modern Security Technology Suite
  • 33. $resource Позволяет создать объект-инкапуслирующий основные запросы к REST сервисам на основе URL-шаблона Article

Editor's Notes

  1. https://docs.angularjs.org/guide/introduction
  2. TODO: Парочку примеров
  3. https://docs.angularjs.org/guide/concepts