SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
AngularJS
podobno tworzy go google ;)
Dlaczego używamy AngularJS?
● o wiele szybsze pisanie aplikacji
● bardzo łatwe pisanie aplikacji “czasu
rzeczywistego”
● wprowadza szkielet aplikacji
● MVC
● Sky’s is the limit!
Jakie są wady pisania w nim ?
● wystarczy jeden błąd i panel klienta nie
działa
● tydzień hakowałem by działał po IE7 i IE8
● działa wolno pod starszymi przeglądarkami
● niektóre rzeczy są naprawdę trudne!
● Jeśli korzystamy z szablony Django to
trzeba pamiętać o VERBATIM :-)
● Nie lubi się z JQ (chociaż z niego korzysta)
Kiedyś...
var name = '';

$('body').on('change', '#name-input', function() {
var name = $(this).val();
});

var set_name = function(new_name) {
$('#name-input').val(new_name);
}
Data Binding (Two-way binding)
Czyli...
$scope.name = 'Marcin Baran';

<input type= "text" ng-model= "name"
>
Czyli...
$scope.name = '';

<input type= "text" ng-model= "name"
>
Można to wykorzystać tak
Marcin Mergo gdy dowiedział się że to co
robił 2 godzin mógł zrobić w 2 minuty (true
story bro!)
$scope - context
● $scope są zagnieżdżane
● każdy $scope może odwołać się do swojego
rodzica
● $scope może odczytać wartości swoich
rodziców
● $scope nie może odczytać wartości swoich
dzieci
$scope-ów może być naprawdę dużo
$scope to nie tylko pudełko na
zmienne
$scope.name = 'Marcin';

$scope.$watch('myVar', function(newVal, oldVal) {
alert('Hej, ' + oldVal + ' zmienil imie na ' + newVal);
});
Jak dziala $scope ?
AngularJS Batarang
●
●
●
●

super wtyczka do chrome
ułatwia naukę i debugowanie
pokazuje nam Performence aplikacji
i wiele wiecej
AngularJS Batarang
Ciekawostka:
Gdy jest jakiś błąd w panelu klienta, jesteśmy w
stanie odświeżyć stronę WSZYSTKIM
użytkownikom
ping_notifier('refresh_page')# na produkcji

AngularJS + socket.io aka ServerPush
Aplikacja “czasu rzeczywistego”
● serverpush - czyli socket.io + serwer
tornadio
● ping_notifier(event, some data) powiadomienie o zmianie z poziomu pythona
● $scope.$on(event, some data) - odbieranie
danych po stronie JavaScript
● zmiana danych bez przeładowania!
AngularJS to
● Directives
● Filters
● Controllers
● App
● Models

● Services
Directives - reużycie (HTML)
● Jak templatetags w django!
● Derektywa <tooltip>Jakieś info</tooltip>
tworzy nam odpowiedni HTML + dodaje
odpowiedni JS
● <input ik-calendar> - Tworzy nam kalendarz
● <chart /> - tworzy nam wykres kursów
Wbudowane derektywy w angularJS
● ng-show/ng-hide
● ng-repeat/ng-repeat-start/ng-repeat-end
● ng-init
● ng-class
● Więcej http://docs.angularjs.org/api/ng.$http
Wbudowane derektywy w angularJS
● ng-click
● ng-change
● ng-submit
● Więcej http://docs.angularjs.org/api/ng.$http
Filters
● Jak filters w django!
● modyfikują wartość
● filtr filtrujący listę kont użytkownika (w htmlu)
<div ng-repeat= "account in accounts|filter: {is_owner: true}" class="ngscope">
Controllers
● idea taka jak zawsze
● Kazdy controller ma wlasny scope
● MainController => CalculatorCtrl, RateCtrl
Services (lazy objects)
● Współdzielenie danych między controller
● Do czego można je użyć ?
○ $transactions - lista transakcji użytkownika
○ $balance - agegator sald na kontach w (ED)
○ $myhttp - własny AJAX handler
App
● zawiera $rootScope
● możliwość definiowania zmiennych
dostępnych w każdym $scopie
● definuje się routing
Pytania ?
Dziękuje za uwagę!

Contenu connexe

Tendances

Asynchroniczne testy JavaScript aplikacji webowych
Asynchroniczne testy JavaScript aplikacji webowychAsynchroniczne testy JavaScript aplikacji webowych
Asynchroniczne testy JavaScript aplikacji webowychFuture Processing
 
AngularJS Warsaw #4 - Dariusz Kalbarczyk "Controller as"
AngularJS Warsaw #4 - Dariusz Kalbarczyk "Controller as"AngularJS Warsaw #4 - Dariusz Kalbarczyk "Controller as"
AngularJS Warsaw #4 - Dariusz Kalbarczyk "Controller as"Dariusz Kalbarczyk
 
Angular js warsztaty stopień 2
Angular js   warsztaty stopień 2Angular js   warsztaty stopień 2
Angular js warsztaty stopień 2Marcin Wosinek
 
Worklety i magiczne interfejsy z przyszłości
Worklety i magiczne interfejsy z przyszłościWorklety i magiczne interfejsy z przyszłości
Worklety i magiczne interfejsy z przyszłościMarcin Gajda
 
Pan Oponka - Biografia
Pan Oponka - BiografiaPan Oponka - Biografia
Pan Oponka - BiografiaFilip Tepper
 
Angular 4 pragmatycznie
Angular 4 pragmatycznieAngular 4 pragmatycznie
Angular 4 pragmatycznieSages
 
Historia jednej migracji - Angular 5
Historia jednej migracji - Angular 5Historia jednej migracji - Angular 5
Historia jednej migracji - Angular 5Przemek Smyrdek
 
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...The Software House
 
Aplikacje internetowe real-time w oparciu o React/Redux
Aplikacje internetowe real-time w oparciu o React/ReduxAplikacje internetowe real-time w oparciu o React/Redux
Aplikacje internetowe real-time w oparciu o React/ReduxDawid Rusnak
 
Gherkin - jak zostać poetą w IT
Gherkin - jak zostać poetą w ITGherkin - jak zostać poetą w IT
Gherkin - jak zostać poetą w ITThe Software House
 

Tendances (10)

Asynchroniczne testy JavaScript aplikacji webowych
Asynchroniczne testy JavaScript aplikacji webowychAsynchroniczne testy JavaScript aplikacji webowych
Asynchroniczne testy JavaScript aplikacji webowych
 
AngularJS Warsaw #4 - Dariusz Kalbarczyk "Controller as"
AngularJS Warsaw #4 - Dariusz Kalbarczyk "Controller as"AngularJS Warsaw #4 - Dariusz Kalbarczyk "Controller as"
AngularJS Warsaw #4 - Dariusz Kalbarczyk "Controller as"
 
Angular js warsztaty stopień 2
Angular js   warsztaty stopień 2Angular js   warsztaty stopień 2
Angular js warsztaty stopień 2
 
Worklety i magiczne interfejsy z przyszłości
Worklety i magiczne interfejsy z przyszłościWorklety i magiczne interfejsy z przyszłości
Worklety i magiczne interfejsy z przyszłości
 
Pan Oponka - Biografia
Pan Oponka - BiografiaPan Oponka - Biografia
Pan Oponka - Biografia
 
Angular 4 pragmatycznie
Angular 4 pragmatycznieAngular 4 pragmatycznie
Angular 4 pragmatycznie
 
Historia jednej migracji - Angular 5
Historia jednej migracji - Angular 5Historia jednej migracji - Angular 5
Historia jednej migracji - Angular 5
 
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...
 
Aplikacje internetowe real-time w oparciu o React/Redux
Aplikacje internetowe real-time w oparciu o React/ReduxAplikacje internetowe real-time w oparciu o React/Redux
Aplikacje internetowe real-time w oparciu o React/Redux
 
Gherkin - jak zostać poetą w IT
Gherkin - jak zostać poetą w ITGherkin - jak zostać poetą w IT
Gherkin - jak zostać poetą w IT
 

Similaire à AngularJS szkolenie wewnętrzne (into)

Łagodne wprowadzenie do Angular2
Łagodne wprowadzenie do Angular2Łagodne wprowadzenie do Angular2
Łagodne wprowadzenie do Angular2Jakub Nietrzeba
 
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQL
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQLAutomatyzacja tworzenia frontendu z wykorzystaniem GraphQL
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQLThe Software House
 
Integracja Django z Google Cloud Platform
Integracja Django z Google Cloud PlatformIntegracja Django z Google Cloud Platform
Integracja Django z Google Cloud PlatformFly on the cloud
 
AngularJS - podstawy
AngularJS - podstawyAngularJS - podstawy
AngularJS - podstawyApptension
 
HYC - Angular stań się kanciastym
HYC - Angular stań się kanciastymHYC - Angular stań się kanciastym
HYC - Angular stań się kanciastymDariusz Jagieło
 
Patronage 2016 Windows 10 Warsztaty
Patronage 2016 Windows 10 WarsztatyPatronage 2016 Windows 10 Warsztaty
Patronage 2016 Windows 10 Warsztatyintive
 
Podstawy AngularJS
Podstawy AngularJSPodstawy AngularJS
Podstawy AngularJSSages
 
Extjs & netzke
Extjs & netzkeExtjs & netzke
Extjs & netzkeGaldoMedia
 
Google Web Toolkit - nie idź tą drogą
Google Web Toolkit - nie idź tą drogąGoogle Web Toolkit - nie idź tą drogą
Google Web Toolkit - nie idź tą drogąRafal Rybacki
 
TGT#14 - @Before – Nie będę automatyzować @After – No dobra, to nie jest taki...
TGT#14 - @Before – Nie będę automatyzować @After – No dobra, to nie jest taki...TGT#14 - @Before – Nie będę automatyzować @After – No dobra, to nie jest taki...
TGT#14 - @Before – Nie będę automatyzować @After – No dobra, to nie jest taki...Trójmiejska Grupa Testerska
 
Programowanie Równolegle - Parallel Extensions
Programowanie Równolegle - Parallel ExtensionsProgramowanie Równolegle - Parallel Extensions
Programowanie Równolegle - Parallel ExtensionsWojciech Grześkowiak
 
Webinar - Podstawy Node.js
Webinar - Podstawy Node.jsWebinar - Podstawy Node.js
Webinar - Podstawy Node.jsWojciech Kaniuka
 
WebDeveloper - Yesterday, Today, Tomorrow
WebDeveloper - Yesterday, Today, TomorrowWebDeveloper - Yesterday, Today, Tomorrow
WebDeveloper - Yesterday, Today, TomorrowMarcin Dembowski
 
tRPC - czy to koniec GraphQL?
tRPC - czy to koniec GraphQL?tRPC - czy to koniec GraphQL?
tRPC - czy to koniec GraphQL?Brainhub
 
Using Red Gate SQL Doc for database documentation
Using Red Gate SQL Doc for database documentationUsing Red Gate SQL Doc for database documentation
Using Red Gate SQL Doc for database documentationMariusz Koprowski
 
PHPUnit - jak zacząć pisać testy automatyczne [PL]
PHPUnit - jak zacząć pisać testy automatyczne [PL]PHPUnit - jak zacząć pisać testy automatyczne [PL]
PHPUnit - jak zacząć pisać testy automatyczne [PL]Droptica
 
Girls in It - Front-end & Back-end. Jak zacząć
Girls in It - Front-end & Back-end. Jak zacząćGirls in It - Front-end & Back-end. Jak zacząć
Girls in It - Front-end & Back-end. Jak zacząćmonterail
 
Angular2 - Co jest grane?!?!
Angular2 - Co jest grane?!?! Angular2 - Co jest grane?!?!
Angular2 - Co jest grane?!?! Sebastian Pożoga
 

Similaire à AngularJS szkolenie wewnętrzne (into) (20)

Łagodne wprowadzenie do Angular2
Łagodne wprowadzenie do Angular2Łagodne wprowadzenie do Angular2
Łagodne wprowadzenie do Angular2
 
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQL
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQLAutomatyzacja tworzenia frontendu z wykorzystaniem GraphQL
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQL
 
Integracja Django z Google Cloud Platform
Integracja Django z Google Cloud PlatformIntegracja Django z Google Cloud Platform
Integracja Django z Google Cloud Platform
 
AngularJS - podstawy
AngularJS - podstawyAngularJS - podstawy
AngularJS - podstawy
 
HYC - Angular stań się kanciastym
HYC - Angular stań się kanciastymHYC - Angular stań się kanciastym
HYC - Angular stań się kanciastym
 
Patronage 2016 Windows 10 Warsztaty
Patronage 2016 Windows 10 WarsztatyPatronage 2016 Windows 10 Warsztaty
Patronage 2016 Windows 10 Warsztaty
 
Jaki framework wybrać
Jaki framework wybraćJaki framework wybrać
Jaki framework wybrać
 
Podstawy AngularJS
Podstawy AngularJSPodstawy AngularJS
Podstawy AngularJS
 
Extjs & netzke
Extjs & netzkeExtjs & netzke
Extjs & netzke
 
Google Web Toolkit - nie idź tą drogą
Google Web Toolkit - nie idź tą drogąGoogle Web Toolkit - nie idź tą drogą
Google Web Toolkit - nie idź tą drogą
 
TGT#14 - @Before – Nie będę automatyzować @After – No dobra, to nie jest taki...
TGT#14 - @Before – Nie będę automatyzować @After – No dobra, to nie jest taki...TGT#14 - @Before – Nie będę automatyzować @After – No dobra, to nie jest taki...
TGT#14 - @Before – Nie będę automatyzować @After – No dobra, to nie jest taki...
 
Programowanie Równolegle - Parallel Extensions
Programowanie Równolegle - Parallel ExtensionsProgramowanie Równolegle - Parallel Extensions
Programowanie Równolegle - Parallel Extensions
 
university day 1
university day 1university day 1
university day 1
 
Webinar - Podstawy Node.js
Webinar - Podstawy Node.jsWebinar - Podstawy Node.js
Webinar - Podstawy Node.js
 
WebDeveloper - Yesterday, Today, Tomorrow
WebDeveloper - Yesterday, Today, TomorrowWebDeveloper - Yesterday, Today, Tomorrow
WebDeveloper - Yesterday, Today, Tomorrow
 
tRPC - czy to koniec GraphQL?
tRPC - czy to koniec GraphQL?tRPC - czy to koniec GraphQL?
tRPC - czy to koniec GraphQL?
 
Using Red Gate SQL Doc for database documentation
Using Red Gate SQL Doc for database documentationUsing Red Gate SQL Doc for database documentation
Using Red Gate SQL Doc for database documentation
 
PHPUnit - jak zacząć pisać testy automatyczne [PL]
PHPUnit - jak zacząć pisać testy automatyczne [PL]PHPUnit - jak zacząć pisać testy automatyczne [PL]
PHPUnit - jak zacząć pisać testy automatyczne [PL]
 
Girls in It - Front-end & Back-end. Jak zacząć
Girls in It - Front-end & Back-end. Jak zacząćGirls in It - Front-end & Back-end. Jak zacząć
Girls in It - Front-end & Back-end. Jak zacząć
 
Angular2 - Co jest grane?!?!
Angular2 - Co jest grane?!?! Angular2 - Co jest grane?!?!
Angular2 - Co jest grane?!?!
 

AngularJS szkolenie wewnętrzne (into)

  • 2. Dlaczego używamy AngularJS? ● o wiele szybsze pisanie aplikacji ● bardzo łatwe pisanie aplikacji “czasu rzeczywistego” ● wprowadza szkielet aplikacji ● MVC ● Sky’s is the limit!
  • 3. Jakie są wady pisania w nim ? ● wystarczy jeden błąd i panel klienta nie działa ● tydzień hakowałem by działał po IE7 i IE8 ● działa wolno pod starszymi przeglądarkami ● niektóre rzeczy są naprawdę trudne! ● Jeśli korzystamy z szablony Django to trzeba pamiętać o VERBATIM :-) ● Nie lubi się z JQ (chociaż z niego korzysta)
  • 4. Kiedyś... var name = ''; $('body').on('change', '#name-input', function() { var name = $(this).val(); }); var set_name = function(new_name) { $('#name-input').val(new_name); }
  • 6. Czyli... $scope.name = 'Marcin Baran'; <input type= "text" ng-model= "name" >
  • 7. Czyli... $scope.name = ''; <input type= "text" ng-model= "name" >
  • 9. Marcin Mergo gdy dowiedział się że to co robił 2 godzin mógł zrobić w 2 minuty (true story bro!)
  • 10. $scope - context ● $scope są zagnieżdżane ● każdy $scope może odwołać się do swojego rodzica ● $scope może odczytać wartości swoich rodziców ● $scope nie może odczytać wartości swoich dzieci
  • 11. $scope-ów może być naprawdę dużo
  • 12. $scope to nie tylko pudełko na zmienne $scope.name = 'Marcin'; $scope.$watch('myVar', function(newVal, oldVal) { alert('Hej, ' + oldVal + ' zmienil imie na ' + newVal); });
  • 14. AngularJS Batarang ● ● ● ● super wtyczka do chrome ułatwia naukę i debugowanie pokazuje nam Performence aplikacji i wiele wiecej
  • 16. Ciekawostka: Gdy jest jakiś błąd w panelu klienta, jesteśmy w stanie odświeżyć stronę WSZYSTKIM użytkownikom ping_notifier('refresh_page')# na produkcji AngularJS + socket.io aka ServerPush
  • 17. Aplikacja “czasu rzeczywistego” ● serverpush - czyli socket.io + serwer tornadio ● ping_notifier(event, some data) powiadomienie o zmianie z poziomu pythona ● $scope.$on(event, some data) - odbieranie danych po stronie JavaScript ● zmiana danych bez przeładowania!
  • 18. AngularJS to ● Directives ● Filters ● Controllers ● App ● Models ● Services
  • 19. Directives - reużycie (HTML) ● Jak templatetags w django! ● Derektywa <tooltip>Jakieś info</tooltip> tworzy nam odpowiedni HTML + dodaje odpowiedni JS ● <input ik-calendar> - Tworzy nam kalendarz ● <chart /> - tworzy nam wykres kursów
  • 20. Wbudowane derektywy w angularJS ● ng-show/ng-hide ● ng-repeat/ng-repeat-start/ng-repeat-end ● ng-init ● ng-class ● Więcej http://docs.angularjs.org/api/ng.$http
  • 21. Wbudowane derektywy w angularJS ● ng-click ● ng-change ● ng-submit ● Więcej http://docs.angularjs.org/api/ng.$http
  • 22. Filters ● Jak filters w django! ● modyfikują wartość ● filtr filtrujący listę kont użytkownika (w htmlu) <div ng-repeat= "account in accounts|filter: {is_owner: true}" class="ngscope">
  • 23. Controllers ● idea taka jak zawsze ● Kazdy controller ma wlasny scope ● MainController => CalculatorCtrl, RateCtrl
  • 24. Services (lazy objects) ● Współdzielenie danych między controller ● Do czego można je użyć ? ○ $transactions - lista transakcji użytkownika ○ $balance - agegator sald na kontach w (ED) ○ $myhttp - własny AJAX handler
  • 25. App ● zawiera $rootScope ● możliwość definiowania zmiennych dostępnych w każdym $scopie ● definuje się routing