AngularJS 
АЛЬТЕРНАТИВА JQUERY. ВВЕДЕНИЕ И ОСНОВЫ 
06.09.2014 Saint-Petersburg WordPress Meetup #2 
Igor Sazonov @tigusigalpa
План доклада 
 Что такое AngularJS 
 Область применения. Откуда такая популярность? Конкуренты 
 Плюсы и минусы. Чем отличается от jQuery 
 Архитектура AngularJS 
 Наглядные простейшие примеры. Что такое контроллеры 
 Простой пример реализации табов на AngularJS и jQuery 
 Некоторые «подводные камни»: настройка AJAX 
 Зачем AngularJS WordPress’у? 
 Где искать документацию и помощи?
Что такое AngularJS? 
 JavaScript MVC-фреймворк от Google 
 URL: https://angularjs.org 
 Год создания: 2009 
 Текущая версия: 1.2.22 / 1.3.0-beta (20.08.2014) 
 Вес: 105кб
Область применения. Откуда такая 
популярность? Конкуренты 
 Идеален для Single Page Application (SPA) приложений («богатое» 
приложение, генерирующее и изменяющее большой объем DOM’ а «на 
лету» без перезагрузки страницы) 
 «Умный». Додумывает за разработчика. Например ng-show скрывает 
элемент, если он не удовлетворяет условию. 
 Код более сложный, но его в разы меньше 
 Никакой привязки к #id и .class для работы с элементами =))))) 
 Основные конкуренты: Backbone.js, KnockoutJS, ember.js
Плюсы и минусы. Чем отличается от 
jQuery 
Плюсы 
 Меньше кода (иногда в разы!) 
 Более высокий уровень 
программирования 
 Совместим с jQuery + jqLite 
 Подходит для сложных SPA-приложений 
 Забудьте про наименование классов или 
#id-шников 
 Будущее Front-End разработки 
 Постоянно дорабатывается 
………..Google-ом =)) 
 Построен на watcher’ах 
Минусы 
 Сложнее в изучении 
 «Переадаптация» требует времени 
 Весит больше (105 > 83 кб) 
 Неочевидные решения 
 Постоянно дорабатывается
Плюсы и минусы. Чем отличается от 
jQuery 
Применимость AngularJS относительно jQuery 
jQuery 
AngularJS 
Сложность приложения 
SPA
Архитектура AngularJS 
Module – модуль – глобальное хранилище для 
Вашего приложения (контроллеры, роуты, 
вьюхи) 
Config – конфиг – настройки модуля 
Routes – «менеджер» контроллеров для урлов 
типа #/someurl 
Controller – контроллер – логика отдельных 
частей модуля (приложения) 
View – представление html контроллера 
$scope – глобальный объект (со всеми 
данными) контроллера 
Directives – кастомное поведение html 
Factory – фабрика (сервис)
Наглядные простейшие примеры. Что 
такое контроллеры 
<!doctype html> 
<html ng-app> 
<head> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0- 
beta.19/angular.min.js"></script> 
</head> 
<body> 
<div> 
<label>Name:</label> 
<input type="text" ng-model="yourName" placeholder="Enter 
a name here"> 
<hr> 
<h1>Hello {{yourName}}!</h1> 
</div> 
</body> 
</html>
Наглядные простейшие примеры. Что 
такое контроллеры 
<html ng-app="SimpleModule"> 
<head><meta charset="UTF-8" /><title>Простой 
модуль</title><script 
src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/ang 
ular.min.js"></script><script 
src=“simpleModule.js"></script></head> 
<body ng-controller="MyController"> 
<h1>Демо {{title}}</h1> 
<div><p><label for="valA">Ввведите А:</label><input 
type="number" id="valA" ng-model="valA" /></p><p><label 
for="valB">Ввведите B:</label><input type="number" 
id="valB" ng-model="valB" /></p><p>Результат: 
{{result}}</p><p><button ng-click=" 
add(valA,valB);">Сложить</button><button ng-click=" 
multiple(valA,valB);">Умножить</button></p></div> 
</body> 
</html> 
simpleModule.js 
var myApp = 
angular.module('SimpleModule', []); 
myApp.controller('MyController', 
['$scope', function($scope) { 
$scope.title = 'Простой модуль'; 
$scope.result = 0; 
$scope.add = function(a,b) { 
$scope.result = a + b; 
}; 
$scope.multiple = function(a,b) { 
$scope.result = a * b; 
}; 
}]);
Простой пример реализации табов на 
AngularJS и jQuery 
jQuery 
jQuery( ‘.tab-content’ ).hide(); 
jQuery( ‘#cont-1’ ).show(); 
jQuery( '. tab-link' ).click( function() { 
var _this = jQuery(this), 
_tab = _this.data( 'tab' ); 
jQuery( 'li' ).removeClass( 'active' ); 
_this.parent( 'li' ).addClass( 'active' ); 
jQuery( '.tab-content' ).hide(); 
jQuery( '#' + _tab ).show(); 
} ); 
HTML 
<ul> 
<li class=“active”><a class=“tab-link” data-tab=“ 
cont-1” href=“javascript:;”>first</a></li> 
<li><a class=“tab-link” data-tab=“cont-2” 
href=“javascript:;”>second</a></li> 
<li><a class=“tab-link” data-tab=“cont-3” 
href=“javascript:;”>third</a></li> 
</ul> 
<div id=“cont-1” class=“tab-content”>111</div> 
<div id=“cont-2” class=“tab-content”>222</div> 
<div id=“cont-3” class=“tab-content”>333</div>
Простой пример реализации табов на 
AngularJS и jQuery 
<div ng-app=“app” ng-controller=“tabsController”> 
<ul> 
<li ng-class="{'active': activeTab == 'cont-1'}"><a 
href="javascript:;" ng-click="switchToTab('cont- 
1’)">first</a></li> 
<li ng-class="{'active': activeTab == 'cont-2'}"><a 
href="javascript:;" ng-click="switchToTab(‘cont- 
2’)">second</a></li> 
<li ng-class="{'active': activeTab == 'cont-3'}"><a 
href="javascript:;" ng-click="switchToTab(‘cont- 
3’)">second</a></li> 
</ul> 
<div ng-show="activeTab == 'cont-1'" ng-cloak> 
<div ng-show="activeTab == 'cont-2'" ng-cloak> 
<div ng-show="activeTab == 'cont-3'" ng-cloak> 
</div> 
AngularJS 
var angularApp = angular.module(‘app', []); 
angularApp.controller(‘tabsController', ['$scope', 
function($scope) { 
$scope.activeTab = ‘cont-1'; 
$scope.switchToTab = function( tab ) { 
$scope.activeTab = tab; 
} 
}]);
Некоторые «подводные камни»: 
настройка AJAX 
Настройка AJAX 
angularApp.config(['$httpProvider', function($httpProvider) { 
$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8'; 
$httpProvider.defaults.transformRequest = function(obj) { 
var str = []; 
for(var p in obj) 
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p])); 
return str.join("&"); 
} 
}]); 
Пример AJAX в AngularJS (JSONP) 
angularApp.controller(‘controller', ['$scope', '$http', function($scope, $http) { 
$http.post( URL, { some: some } ).success( function( response ) { /*do something with response*/ } ); 
}]);
Зачем AngularJS WordPress’у? 
 Большие плагины (админка) 
 Крупные сайты на WordPress 
 Админка самого WordPress’а =)
Где искать документацию и помощи? 
 Google -> stackoverflow 
 https://docs.angularjs.org/guide

More Related Content

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

What's hot (20)

PPTX
Антон Валюх - Использование паттерна Mvvm в android
PDF
Vue.js - реактивный фронтенд фреймворк для людей
PPTX
сервисы в Angular js
PDF
KnockoutJS на примере 2ГИС-Онлайн
PPT
Средства разработки web приложений (Web frameworks)
PDF
Реактивный фронтенд фреймворк для людей (Константин Комелин)
PDF
Я ♥ Svg — Владимир Кузнецов, Engine6
PDF
Рендеринг может больше: vue.js vs React, Андрей Солодовников
PDF
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
PDF
DUMP-2013 Frontend - Knockoutjs на примере 2ГИС-Онлайн - Таратухин Илья
PPTX
AngularJS2 vs VueJS2 (ru)
PDF
[JAM 1.0] Android OS, Java (Paul Malikov)
PDF
JavaScript Базовый. Занятие 09.
PDF
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
PDF
Knockoutjs на примере 2ГИС-Онлайн
PPT
Презентация jQuery
PDF
Артём Поликарпов - Фоторама - простая и мощная галерея на JS | Happydev'12
PDF
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
PPTX
Gwt jug basic
PDF
Разработка бизнес-приложений на OpenUI5 — Николай Надоричев, MOLGA Consulting
Антон Валюх - Использование паттерна Mvvm в android
Vue.js - реактивный фронтенд фреймворк для людей
сервисы в Angular js
KnockoutJS на примере 2ГИС-Онлайн
Средства разработки web приложений (Web frameworks)
Реактивный фронтенд фреймворк для людей (Константин Комелин)
Я ♥ Svg — Владимир Кузнецов, Engine6
Рендеринг может больше: vue.js vs React, Андрей Солодовников
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
DUMP-2013 Frontend - Knockoutjs на примере 2ГИС-Онлайн - Таратухин Илья
AngularJS2 vs VueJS2 (ru)
[JAM 1.0] Android OS, Java (Paul Malikov)
JavaScript Базовый. Занятие 09.
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
Knockoutjs на примере 2ГИС-Онлайн
Презентация jQuery
Артём Поликарпов - Фоторама - простая и мощная галерея на JS | Happydev'12
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Gwt jug basic
Разработка бизнес-приложений на OpenUI5 — Николай Надоричев, MOLGA Consulting

Similar to Angular js (20)

PDF
C# Web. Занятие 16.
PDF
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
PPTX
jQuery. Введение и практика
PDF
Александр Кашеверов - Коротко про WEB
PDF
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
PPTX
jQuery как путь к RIA
PPT
Selenium 2.0: обзор новых возможностей
PPT
ASP.NET MVC: new era?
PPTX
Backbone lesson 1
PPTX
ASP.NET MVC
PDF
Knockout.JS на примере 2ГИС-Онлайн
PDF
React со скоростью света: не совсем обычный серверный рендеринг
PPTX
Full Stack разработка на JavaScript
PPTX
Bootstrap 3. Адаптивная верстка для WordPress
PDF
Опыт разработки эффективного SPA
PPTX
AngularJS
PDF
Разработка бизнес приложений на OpenUI5. Николай Надоричев. MoscowJS 14
PDF
Backbone.js Профилактика сколиоза
PPTX
Сложные социальные приложения с помощью JS MVC фреймворков
PDF
CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению
C# Web. Занятие 16.
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
jQuery. Введение и практика
Александр Кашеверов - Коротко про WEB
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
jQuery как путь к RIA
Selenium 2.0: обзор новых возможностей
ASP.NET MVC: new era?
Backbone lesson 1
ASP.NET MVC
Knockout.JS на примере 2ГИС-Онлайн
React со скоростью света: не совсем обычный серверный рендеринг
Full Stack разработка на JavaScript
Bootstrap 3. Адаптивная верстка для WordPress
Опыт разработки эффективного SPA
AngularJS
Разработка бизнес приложений на OpenUI5. Николай Надоричев. MoscowJS 14
Backbone.js Профилактика сколиоза
Сложные социальные приложения с помощью JS MVC фреймворков
CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению

More from The NGO Development Center (20)

PPTX
Делаем вебсервис из WordPress
PPTX
рассылки
PDF
дари добро! что могут изменить 15 тысяч рублей
PDF
дари добро! что могут изменить 10 тысяч рублей
PPTX
Доброе Похвистнево
PPT
добрые города самарского региона
PPTX
Добрая Самара
PPTX
Добрый октябрьск
PPT
Добрый Тольятти
PPTX
Добрый Псков
PPTX
Добрый Новосибирск
PPT
Добрый Нижний
PPT
добрый з...
PDF
Программа тренинга для тренеров 6-8 октября
PPTX
Оптимальная архитектура плагина WordPress
PDF
раздаточные материалы митап 30 июня 2014
PPT
SMM - Екатерина Кондратьева
PDF
PR некоммерческого проекта
Делаем вебсервис из WordPress
рассылки
дари добро! что могут изменить 15 тысяч рублей
дари добро! что могут изменить 10 тысяч рублей
Доброе Похвистнево
добрые города самарского региона
Добрая Самара
Добрый октябрьск
Добрый Тольятти
Добрый Псков
Добрый Новосибирск
Добрый Нижний
добрый з...
Программа тренинга для тренеров 6-8 октября
Оптимальная архитектура плагина WordPress
раздаточные материалы митап 30 июня 2014
SMM - Екатерина Кондратьева
PR некоммерческого проекта

Angular js

  • 1. AngularJS АЛЬТЕРНАТИВА JQUERY. ВВЕДЕНИЕ И ОСНОВЫ 06.09.2014 Saint-Petersburg WordPress Meetup #2 Igor Sazonov @tigusigalpa
  • 2. План доклада  Что такое AngularJS  Область применения. Откуда такая популярность? Конкуренты  Плюсы и минусы. Чем отличается от jQuery  Архитектура AngularJS  Наглядные простейшие примеры. Что такое контроллеры  Простой пример реализации табов на AngularJS и jQuery  Некоторые «подводные камни»: настройка AJAX  Зачем AngularJS WordPress’у?  Где искать документацию и помощи?
  • 3. Что такое AngularJS?  JavaScript MVC-фреймворк от Google  URL: https://angularjs.org  Год создания: 2009  Текущая версия: 1.2.22 / 1.3.0-beta (20.08.2014)  Вес: 105кб
  • 4. Область применения. Откуда такая популярность? Конкуренты  Идеален для Single Page Application (SPA) приложений («богатое» приложение, генерирующее и изменяющее большой объем DOM’ а «на лету» без перезагрузки страницы)  «Умный». Додумывает за разработчика. Например ng-show скрывает элемент, если он не удовлетворяет условию.  Код более сложный, но его в разы меньше  Никакой привязки к #id и .class для работы с элементами =)))))  Основные конкуренты: Backbone.js, KnockoutJS, ember.js
  • 5. Плюсы и минусы. Чем отличается от jQuery Плюсы  Меньше кода (иногда в разы!)  Более высокий уровень программирования  Совместим с jQuery + jqLite  Подходит для сложных SPA-приложений  Забудьте про наименование классов или #id-шников  Будущее Front-End разработки  Постоянно дорабатывается ………..Google-ом =))  Построен на watcher’ах Минусы  Сложнее в изучении  «Переадаптация» требует времени  Весит больше (105 > 83 кб)  Неочевидные решения  Постоянно дорабатывается
  • 6. Плюсы и минусы. Чем отличается от jQuery Применимость AngularJS относительно jQuery jQuery AngularJS Сложность приложения SPA
  • 7. Архитектура AngularJS Module – модуль – глобальное хранилище для Вашего приложения (контроллеры, роуты, вьюхи) Config – конфиг – настройки модуля Routes – «менеджер» контроллеров для урлов типа #/someurl Controller – контроллер – логика отдельных частей модуля (приложения) View – представление html контроллера $scope – глобальный объект (со всеми данными) контроллера Directives – кастомное поведение html Factory – фабрика (сервис)
  • 8. Наглядные простейшие примеры. Что такое контроллеры <!doctype html> <html ng-app> <head> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0- beta.19/angular.min.js"></script> </head> <body> <div> <label>Name:</label> <input type="text" ng-model="yourName" placeholder="Enter a name here"> <hr> <h1>Hello {{yourName}}!</h1> </div> </body> </html>
  • 9. Наглядные простейшие примеры. Что такое контроллеры <html ng-app="SimpleModule"> <head><meta charset="UTF-8" /><title>Простой модуль</title><script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/ang ular.min.js"></script><script src=“simpleModule.js"></script></head> <body ng-controller="MyController"> <h1>Демо {{title}}</h1> <div><p><label for="valA">Ввведите А:</label><input type="number" id="valA" ng-model="valA" /></p><p><label for="valB">Ввведите B:</label><input type="number" id="valB" ng-model="valB" /></p><p>Результат: {{result}}</p><p><button ng-click=" add(valA,valB);">Сложить</button><button ng-click=" multiple(valA,valB);">Умножить</button></p></div> </body> </html> simpleModule.js var myApp = angular.module('SimpleModule', []); myApp.controller('MyController', ['$scope', function($scope) { $scope.title = 'Простой модуль'; $scope.result = 0; $scope.add = function(a,b) { $scope.result = a + b; }; $scope.multiple = function(a,b) { $scope.result = a * b; }; }]);
  • 10. Простой пример реализации табов на AngularJS и jQuery jQuery jQuery( ‘.tab-content’ ).hide(); jQuery( ‘#cont-1’ ).show(); jQuery( '. tab-link' ).click( function() { var _this = jQuery(this), _tab = _this.data( 'tab' ); jQuery( 'li' ).removeClass( 'active' ); _this.parent( 'li' ).addClass( 'active' ); jQuery( '.tab-content' ).hide(); jQuery( '#' + _tab ).show(); } ); HTML <ul> <li class=“active”><a class=“tab-link” data-tab=“ cont-1” href=“javascript:;”>first</a></li> <li><a class=“tab-link” data-tab=“cont-2” href=“javascript:;”>second</a></li> <li><a class=“tab-link” data-tab=“cont-3” href=“javascript:;”>third</a></li> </ul> <div id=“cont-1” class=“tab-content”>111</div> <div id=“cont-2” class=“tab-content”>222</div> <div id=“cont-3” class=“tab-content”>333</div>
  • 11. Простой пример реализации табов на AngularJS и jQuery <div ng-app=“app” ng-controller=“tabsController”> <ul> <li ng-class="{'active': activeTab == 'cont-1'}"><a href="javascript:;" ng-click="switchToTab('cont- 1’)">first</a></li> <li ng-class="{'active': activeTab == 'cont-2'}"><a href="javascript:;" ng-click="switchToTab(‘cont- 2’)">second</a></li> <li ng-class="{'active': activeTab == 'cont-3'}"><a href="javascript:;" ng-click="switchToTab(‘cont- 3’)">second</a></li> </ul> <div ng-show="activeTab == 'cont-1'" ng-cloak> <div ng-show="activeTab == 'cont-2'" ng-cloak> <div ng-show="activeTab == 'cont-3'" ng-cloak> </div> AngularJS var angularApp = angular.module(‘app', []); angularApp.controller(‘tabsController', ['$scope', function($scope) { $scope.activeTab = ‘cont-1'; $scope.switchToTab = function( tab ) { $scope.activeTab = tab; } }]);
  • 12. Некоторые «подводные камни»: настройка AJAX Настройка AJAX angularApp.config(['$httpProvider', function($httpProvider) { $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8'; $httpProvider.defaults.transformRequest = function(obj) { var str = []; for(var p in obj) str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p])); return str.join("&"); } }]); Пример AJAX в AngularJS (JSONP) angularApp.controller(‘controller', ['$scope', '$http', function($scope, $http) { $http.post( URL, { some: some } ).success( function( response ) { /*do something with response*/ } ); }]);
  • 13. Зачем AngularJS WordPress’у?  Большие плагины (админка)  Крупные сайты на WordPress  Админка самого WordPress’а =)
  • 14. Где искать документацию и помощи?  Google -> stackoverflow  https://docs.angularjs.org/guide