scope

Transkrypt

scope
WYKŁAD 1
ANGULARJS
CZĘŚĆ 1
DEFINICJA ANGULARJS
Framework JavaScript na licencji open-source wykorzystywany do
tworzenia aplikacji SPA (single page applications) w oparciu o wzorzec
projektowy Model-View-Controler.
Opracowany przez zespół Google, oficjalnie został opublikowany w
2012 roku.
Dlaczego powstał? Ze względu na coraz szybszy rozwój aplikacji
mobilnych i SPA, pojawiło się zapotrzebowanie na uporządkowanie i
wprowadzenia struktury MVC do rozwiązań JavaScript. AngularJS
świetnie się do tego nadaje.
CECHY ANGULARJS
 Logika przeniesiona z serwera na klienta – dane łączone są z
szablonem w przeglądarce, a nie na serwerze;
 Serwer to źródło danych dostarczające HTML, CSS i JS przy
pierwszym ładowaniu strony – później dane ładowane
dynamicznie bez odświeżania;
 Odświeżanie są tylko wybrane elementy a nie strona (AJAX);
 Dwustronne wiązanie (two way data-binding) – modyfikacje w
widoku powodują natychmiastowe zmiany w modelu i odwrotnie;
 Jasna struktura MVC wspierająca budowę dużych aplikacji.
 Zestaw wbudowanych, intuicyjnych filtrów do prezentacji danych;
 Środowisko testowe dla aplikacji oraz jej modułowość ułatwiająca
testowanie;
CZĘŚCI SKŁADOWE ANGULARJS
 Moduły
 Zasięgi i model danych
 Kontrolery
 Widoki z szablonami i dyrektywami
 Wiązanie danych
 Wyrażenia
 Usługi
 Wstrzykiwanie zależności
 Zakresy odpowiedzialności
MODUŁY
Moduły reprezentują komponenty w aplikacji – zapewniają przestrzeń
nazw, która umożliwia odwołanie do dyrektyw, zasięgów i innych
komponentów.
Każdy widok lub strona html zawiera moduł przypisany za pomocą
dyrektywy ng-app.
<div ng-app="myApp">...</div>
<script>
var app = angular.module("myApp", []);
</script>
ZASIĘGI I MODEL DANYCH
W AngularJS funkcjonuje pojęcie zasięgu – to reprezentacja danych w
JavaScript, które służą do wypełnienia widoku.
Dane mogą pochodzić z dowolnego źródła: pliku, bazy danych, usługi –
ale są reprezentowane jako zwykły obiekt JavaScript, a więc można je
dowolnie zmieniać i modyfikować w kodzie aplikacji.
KONTROLERY
Kontrolery odpowiadają za całą logikę biznesową dołączaną do danych
i do zasięgu. Rozszerzają przez to możliwości tego zasięgu oraz
przekazują dane do widoków.
PRZYKŁAD
<script>
var app = angular.module("myApp", []);
app.controller("myCtrl", function($scope) {
$scope.firstName = "John";
$scope.lastName = "Doe";
});
</script>
<div ng-app="myApp" ng-controller="myCtrl">
{{ firstName + " " + lastName }}
</div>
$SCOPE
W AngularJS dostęp do danych w zasięgu odbywa się przez obiekt
$scope.
Jeśli przyjmiemy, że aplikacja Angular składa się z:
 Widoku, który reprezentuje HTML,
 Modelu, który reprezentują aktualne dane,
 Kontrolera, czyli funkcji JS, która zarządza danymi,
to $scope jest Modelem.
To obiekt JS z właściwościami i metodami, z których korzystają Widok i
Kontroler.
WIDOKI Z SZABLONAMI I DYREKTYWAMI
Dokumenty HTML są oparte na modelu DOM, w którym każdy element
HTML jest reprezentowany przez element modelu DOM. Przeglądarka
internetowa wczytuje obiekty DOM i dopiero je renderuje na
podstawie ich atrybutów i właściwości.
AngularJS łaczy szablony z dyrektywami w celu zbudowania widoku
HTML, a więc nie modyfikuje istniejącego modelu DOM, ale renderuje
go od podstaw, rozszerzając jego możliwości.
DYREKTYWY
To co wyróżnia Angulara na tle pozostałych frameworków JS to
dyrektywy.
Dyrektywy rozszerzają możliwości języka HTML, umożliwiając
tworzenie niestandardowych elementów, atrybutów i klas.
Dyrektywy to kombinacja znaczników szablonów Angulara oraz kodu
JavaScript.
 obsługują funkcje Angulara „ng-repeat”;
 rozszerzają elementy formularzy „ng-form”;
 wiążą zasięg z elementami strony „ng-model”;
 wiążą zdarzenia z kontrolerami „ng-click”.
PRZYKŁAD
<div ng-app="" ng-init="names=[
{name:'Jani',country:'Norway'},
{name:'Hege',country:'Sweden'},
{name:'Kai',country:'Denmark'}]">
<ul>
<li ng-repeat="x in names">
{{ x.name + ', ' + x.country }}
</li>
</ul>
</div>
WYRAŻENIA
Angular daje możliwość wykorzystywania wyrażeń w HTML. Ponieważ
są automatycznie łączone z zasięgiem, więc można w nich
wykorzystywać dane z zasięgu:
<p>My first expression: {{ 5 + 5 }}</p>
<p>My second expression: {{ expression + 5 }}</p>
USŁUGI
Obiekty Angulara zapewniające główne funkcje aplikacji internetowej,
np. tworzenie żądań AJAX przez usługę $http.
WSTRZYKIWANIE ZALEŻNOŚCI
Proces, w którym komponent kodu definiuje zależności od innych
komponentów kodu.
Na przykład korzystanie z usług w modułach odbywa się przez
„wstrzyknięcie” do kontrolera usługi $http.
PRZYKŁAD
<div ng-app="myApp" ng-controller="customersCtrl">
<ul>
<li ng-repeat="x in names">
{{ x.Name + ', ' + x.Country }}
</li>
</ul>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('customersCtrl', function($scope, $http) {
$http.get("http://www.w3schools.com/angular/customers.php")
.then(function(response) {$scope.names =
response.data.records;});
});
</script>
CYKL ŻYCIA APLIKACJI ANGULAR JS
Faza
inicjowania
Faza
kompilacji
Faza wiązania
danych
1. Inicjacja komponentów Angular JS
oraz modułu ng-app;
2. Kompilowanie kodu HTML –
wczytywane drzewo DOM i
dyrektywy, a następnie
renderowanie nowego drzewa
DOM.
3. Aktualizacja zmian w modelu i
widoku.
JAK ZACZĄĆ
AngularJS – framework JavaScript operujący na HTML.
 Trzeba pobrać bibliotekę angularJS (http://angularjs.org);
 W dokumencie html przez zamknięciem </body> trzeba dodać
skrypt:
<script src=”angular.min.js”></script>
</body>
Lub:
 Dodajemy bibliotekę z repozytorium:
<script src=”http://ajax.googleapis.com/ajax/libs/angularjs/1.4.0beta.5/angular.min.js”></script>
DYREKTYWA NG-APP
Dyrektywa ng-app określa, jaka część drzewa DOM będzie zarządzana
przez AngularJS.
Jeśli stosujemy AngularJS do całej strony, dyrektywę umieszczamy w
<html>.
<html ng-app>
…
</html>
Umieszczenie ng-app w innym znaczniku ograniczy działanie AngularJS
tylko do zawartości tego znacznika, np. <section ng-app> tytlko do
zawartości sekcji – przydatne przy stosowaniu różnych technologii.
TEST DZIAŁANIA:
<!DOCTYPE html>
<html ng-app>
<body>
<p>Imię : <input type="text" ngmodel="name" placeholder="Podaj imię"></p>
<h1>Hello {{name}}</h1>
<script src=
"http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.j
s"></script>
</body>
</html>
DZIĘKUJĘ ZA UWAGĘ
MATERIAŁY POMOCNICZE
https://angularjs.org/
http://www.w3schools.com/angular/default.asp