3. Cechy AngularJS
? Framework MVC/MVVM
? Dodatkowe atrybuty HTML
? Modele w postaci POJO (Plain Old Javascript
Object)
? Zestaw komponent¨®w u?atwiaj?cych organizacj?
projektu
? Two-way Data Binding
? Dirty Checking
? Zbudowany z wykorzystaniem jQuery
? Du?a popularno?? i wsparcie spo?eczno?ci
8. Komponenty - Controller
? Dostarcza dane widokom ($scope)
? Zawiera logik? widok¨®w
? Nie powinien manipulowa? drzewem DOM
? Przypisywany widokom przy pomocy atrybutu
HTML ng-controller
12. Komponenty - Service
? Oparty o wzorzec projektowy Singleton
? Mo?e zosta? wstrzykni?ty w dowolne miejsce aplikacji przy
pomocy Dependency Injection
? Cz?sto wykorzystywany do implementacji warstwy pobieraj?cej
dane
? Mo?e zosta? wykorzystany do implementacji warstwy Modeli
? Predefiniowane serwisy:
¨C $http
¨C $window
¨C $q
13. Komponenty - Service
application.service('countryService', ['$http', '$q', function ($http, $q) {
this.getList = function () {
var deferred = $q.defer();
$http.get('https://restcountries.eu/rest/v1/all').success(function (data) {
var result = [];
for (var i = 0; i < data.length; i++) {
result.push({
name: data[i].name,
symbol: data[i].alpha2Code
});
}
deferred.resolve(result);
});
return deferred.promise;
};
}]);
14. Komponenty - Factory
? Dzia?anie i zastosowanie identyczne jak Service
? Zwraca wynik funkcji zamiast instancji funkcji
15. Komponenty - Factory
application.factory('countryFactory', ['$http', '$q',
function ($http, $q) {
return {
getList: function() {
var deferred = $q.defer();
$http.get('https://restcountries.eu/rest/v1/all').success(function
(data) {
var result = [];
for (var i = 0; i < data.length; i++) {
result.push({
name: data[i].name,
symbol: data[i].alpha2Code
});
}
deferred.resolve(result);
});
return deferred.promise;
}
};
}]);
16. Komponenty - Directive
? Komponent interfejsu u?ytkownika przeznaczony do
wielokrotnego u?ytku
? Nie powinien zawiera? logiki biznesowej
? Mo?e manipulowa? drzewem DOM
? Mo?na do niego przekaza? parametry:
¨C =
¨C @
¨C &
? Cz?sto u?ywany do inicjalizacji bibliotek jQuery
? Cz?sty pow¨®d wyciek¨®w pami?ci
18. Komponenty - Filter
? Pozwala na manipulacj? danymi wej?ciowymi
? Nie powinien zawiera? logiki biznesowej
? Domy?lnie dost?pny w widokach
? Pozwala na przetwarzanie strumieniowe przy pomocy operatora |
? Predefiniowane filtry:
¨C orderBy
¨C filter
¨C date
¨C currency
21. Zagro?enia i Problemy
? Nauka AngularJS nie jest prosta
? Skalowalno?? i wydajno?? aplikacji
? Czytelno?? struktury projektu
? Wycieki pami?ci
? Ograniczone narz?dzia do pisania test¨®w (Protractor)
? Pokusa u?ywania jQuery
? SEO
? AngularJS 2.0