際際滷

際際滷Share a Scribd company logo
Podstawy AngularJS
Tomek Sukowski
Front-end
Developer
Trener IT
Agenda
 Wprowadzenie / kontekst / narzdzia
 Teoria / demo
 Warsztat
 Teoria / demo
 Warsztat
 
 Q & A
Intro
http://myholidays.com/#/jacuzzi/guys
SPA?
http://myholidays.com/#/mask/ftw
Narzdzia
WebStorm (IDE)
SublimeText 3 Atom 1.0 Brackets
 Vim?
Node Packaged
Modules
 system zarzdzania zale甜nociami dla油
server-side js
 zale甜noci opisywane w油pliku package.json
 npm install - instaluje pakiety, kt坦rych
jeszcze nie ma w projekcie
 npm update - sprawdza, czy istniej nowsze
wersje pakiet坦w + instaluje
 npm install nazwa-pakietu save-dev
- instaluje pakiet, dodaje go do package.json
Bower
npm install -g bower
 zarzdzanie zale甜nociami dla油client-side js
 zale甜noci opisywane w bower.json
 bower install - instaluje pakiety, kt坦rych jeszcze
nie ma w projekcie
 bower update - sprawdza, czy istniej nowsze
wersje pakiet坦w + instaluje
 bower install nazwa-pakietu --save 
- instaluje pakiet, dodaje go do bower.json
 pakiety instalowane s do katalogu 
/bower_components/nazwa-pakietu/
- stamtd nale甜y je linkowa w plikach html
AngularJS
Module
Con鍖g
[ module1, module2, module3,  ]
Routing
View
(template)
Controller Service
Directive
$scope
Moduy, struktura aplikacji
 Moduy wskazuj na zale甜noci od zewntrznych bibliotek
 Moduy nie separuj zawieranych komponent坦w
(namespaces)
 Poszczeg坦lne fragmenty aplikacji jako moduy,
o hierarchii odzwierciedlonej w strukturze katalog坦w
Form Follows Function
OPINIA
Routing
ngRoute
ui.router
$stateProvider
.state('state1.list', {
url: "/list",
templateUrl: "partials/state1.list.html",
controller: "ListController"
})
demo: http://plnkr.co/edit/u18KQc
.config(function($routeProvider) {
$routeProvider.when('/view1', {
templateUrl: 'view1/view1.html',
controller: 'View1Ctrl'
});
})
warsztat
Widok
Zwyczajny dokument HTML rozszerzony o:
 dyrektywy, np. ng-init
 wyra甜enia w klamrach, np. {{ age + 8 }}
1 <div ng-controller="PersonCtrl">
2 <input type="text" ng-model="firstName">
3 <input type="text" ng-model="lastName">
4
5 <p>Witaj {{ firstName }} {{ lastName }}</p>
6
7 <a ng-click="clearName()">wykasuj dane</a>
8 </div>
Controller
 Zwyka JavaScriptowa funkcja
 Powizanie z widokiem odbywa si przez $scope

1 myApp.controller('PersonCtrl', function($scope)
2 {
3 $scope.firstName = 'John';
4 $scope.lastName = 'Smith';
5
6 $scope.clearName = function() {
7 $scope.firstName = $scope.lastName = '';
8 };
9 });
Dyrektywy
<html>
<my-calendar></my-calendar>
<div my-calendar=2014></div>
<div class="my-calendar: 2014">
<! directive: my-calendar 2014 -->
demo
Usugi
 Miejsce na logik biznesow
 Metody pomocnicze, 
powtarzalny kod
 Wsp坦dzielone dane / model
Po co? Jak?
.constant(
.value(
.service(
.factory(
.provider(
usugi wbudowane: https://docs.angularjs.org/api/ng/service
Service
1 myApp.service('helloService', function () {
2
3 this.sayHello = function () {
4 return this.greeting + ' world!';
5 };
6
7 this.greeting = 'Hello';
8
9 });
Factory
1 myApp.factory('Person', function() {
2 function Person(firstName, lastName) {
3 this.firstName = firstName;
4 this.lastName = lastName;
5 this.age = 0;
6 }
7
8 Person.prototype.getFullName = function () {
9 return this.firstName + ' ' + this.lastName;
10 }
11
12 return Person;
13 });
Obietnice
http://andyshora.com/promises-angularjs-explained-as-cartoon.html
$q
warsztat
Dyrektywy
 Enkapsuluj logik zwizan z zachowaniem
elementu interfejsu
 Tworz widgety - mae aplikacje, klocki z kt坦rych
budujemy wiksze fragmenty
Directive De鍖nition Object
1 myApp.directive('awesome', function () {
2 return {
3 priority: 0,
4 template: '<div></div>',
5 replace: true,
6 transclude: true,
7 restrict: 'A',
8 scope: {},
9 link: function postLink(scope, element, attrs) {
10
11 }
12 };
13 })
Izolowany scope
<my-race start="race.start" days="race.days"
cheer="'Hurrah!'" on-finish="goDance()">
</my-race>
1 .directive('myRace', function () {
2 return {
 ...
4 scope: {
5 dateStart: '=start'
6 days: '=',
7 cheer: '@',
8 finishCallback: '&onFinish'
9 }
10 };
11 });
warsztat
Filtry
 Umo甜liwiaj przeksztacenie danych w trakcie
przejcia ze油$scope do widoku bez zmieniania
oryginalnej wartoci.
1 {{ user.firstName | uppercase }}
2 Jack -> JACK
3
4 {{ user.createdAt | date:'dd.MM.yyyy, HH:mm' }}
5 Wed Mar 05 2014 14:22:01 GMT+0100 (CET) -> 05.03.2014, 14:22
6 1394025721000 -> 05.03.2014, 14:22
7
8 {{ user.interests | orderBy:'toString()':true | limitTo:2 }}
9 ['movies','sports','gaming','travel'] -> ['travel','sports']
Wasne Filtry
De鍖niowanie wasnego 鍖ltra sprowadza si do油deklaracji
prostej funkcji:
1 myApp.filter('slice', function() {
2 return function(arr, start, end) {
3 return (arr || []).slice(start, end);
4 };
5 });
nazwa filtra
warto na wejciu kolejne parametry
warsztat
Formularze
Element <form name="sampleform" novalidate>
to油dyrektywa, kt坦ra dostarcza kilka przydatnych zachowa
dotyczcych pracy z油formularzami. 
Najwa甜niejszym jest obsuga walidacji.
1 <input type="email"
2 ng-model="{ string }"
3 name="{ string }"
4 required
5 ng-required="{ boolean }"
6 ng-minlength="{ number }"
7 ng-maxlength="{ number }"
8 ng-pattern="{ string }"
9 ng-change="{ string }">
10 </input>
Walidacja
<form name="userform">
<input type="email" name="mail" ng-model="field" required minlength="5"/>
<div ng-messages="userform.mail.$error" ng-messages-multiple>
<p ng-message="required">Pole obowizkowe</p>
<p ng-message="minlength">Zbyt kr坦tka warto</p>
<p ng-message="email">Warto nie jest e-mailem</p>
</div>
</form>
<button type="submit" class="btn btn-primary"
ng-disabled="userForm.$invalid">
Zapisz
</button>
form.ng-dirty { background: #e6f2ff }
.ng-invalid-max-length { border-color: red }
warsztat
Co dalej?
wicej na temat organizacji kodu i innych dobrych praktyk:

https://github.com/toddmotto/angularjs-styleguide
https://github.com/johnpapa/angularjs-styleguide
Co dalej?
Regularne szkolenia w grupach 4-8 os坦b
Wicej materiau
Wicej case坦w
Wicej elastycznoci i czasu
Wicej lunchy :)
A konkretnie?
Oraz
Pytania?
禽噛庄一顎逮
Podstawy AngularJS
Tomek Sukowski

More Related Content

What's hot (20)

Znaki mocy dla laik坦w Programowanie funkcyjne w JavaScript
Znaki mocy dla laik坦w  Programowanie funkcyjne w JavaScriptZnaki mocy dla laik坦w  Programowanie funkcyjne w JavaScript
Znaki mocy dla laik坦w Programowanie funkcyjne w JavaScript
The Software House
Angular Restmod
Angular RestmodAngular Restmod
Angular Restmod
Marcin Gajda
GraphQL w React z wykorzystaniem Apollo
GraphQL w React z wykorzystaniem ApolloGraphQL w React z wykorzystaniem Apollo
GraphQL w React z wykorzystaniem Apollo
Boldare
Angular 4 pragmatycznie
Angular 4 pragmatycznieAngular 4 pragmatycznie
Angular 4 pragmatycznie
Sages
Platforma Kontentowa
Platforma KontentowaPlatforma Kontentowa
Platforma Kontentowa
Rafa Filipek
Architektura ngrx w angular 2+
Architektura ngrx w angular 2+Architektura ngrx w angular 2+
Architektura ngrx w angular 2+
Pawe 纏urowski
PLNOG 22 - Krzysztof Zaski - Praktyczne zastosowanie narzdzi NetDevOps
PLNOG 22 - Krzysztof Zaski - Praktyczne zastosowanie narzdzi NetDevOpsPLNOG 22 - Krzysztof Zaski - Praktyczne zastosowanie narzdzi NetDevOps
PLNOG 22 - Krzysztof Zaski - Praktyczne zastosowanie narzdzi NetDevOps
PROIDEA
Allegro Tech Talks Pozna #4: Jak przyspieszy SOLRa w kilku prostych krokach.
Allegro Tech Talks Pozna #4: Jak przyspieszy SOLRa w kilku prostych krokach. Allegro Tech Talks Pozna #4: Jak przyspieszy SOLRa w kilku prostych krokach.
Allegro Tech Talks Pozna #4: Jak przyspieszy SOLRa w kilku prostych krokach.
allegro.tech
TypeScript as a runtime error terminator
TypeScript as a runtime error terminatorTypeScript as a runtime error terminator
TypeScript as a runtime error terminator
The Software House
RxJava & Hystrix - Perfect match for distributed applications
RxJava & Hystrix - Perfect match for distributed applicationsRxJava & Hystrix - Perfect match for distributed applications
RxJava & Hystrix - Perfect match for distributed applications
allegro.tech
Kickoff to Node.js
Kickoff to Node.jsKickoff to Node.js
Kickoff to Node.js
The Software House
Wprowadzenie do jzyka Swift, czyli nowe podejcie do programowania aplikacji...
Wprowadzenie do jzyka Swift, czyli nowe podejcie do programowania aplikacji...Wprowadzenie do jzyka Swift, czyli nowe podejcie do programowania aplikacji...
Wprowadzenie do jzyka Swift, czyli nowe podejcie do programowania aplikacji...
The Software House
4Developers 2015: Orleans - aplikacje, kt坦re skaluj i dystrybuuj si same -...
4Developers 2015: Orleans - aplikacje, kt坦re skaluj i dystrybuuj si same -...4Developers 2015: Orleans - aplikacje, kt坦re skaluj i dystrybuuj si same -...
4Developers 2015: Orleans - aplikacje, kt坦re skaluj i dystrybuuj si same -...
PROIDEA
Pawe Kucharski: Oswajamy Sonia czyli po co nam Hadoop
Pawe Kucharski: Oswajamy Sonia czyli po co nam HadoopPawe Kucharski: Oswajamy Sonia czyli po co nam Hadoop
Pawe Kucharski: Oswajamy Sonia czyli po co nam Hadoop
AnalyticsConf
AADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScriptAADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScript
Jacek Okrojek
Hugo - make webdev fun again
Hugo - make webdev fun againHugo - make webdev fun again
Hugo - make webdev fun again
Marcin Gajda
infoShare AI Roadshow 2018 - Magdalena W坦jcik (Data Love) - Data Science na d...
infoShare AI Roadshow 2018 - Magdalena W坦jcik (Data Love) - Data Science na d...infoShare AI Roadshow 2018 - Magdalena W坦jcik (Data Love) - Data Science na d...
infoShare AI Roadshow 2018 - Magdalena W坦jcik (Data Love) - Data Science na d...
Infoshare
GlusterFS
GlusterFSGlusterFS
GlusterFS
ukasz Jagieo
Webpack - Czym jest webpack i dlaczego chcesz go u甜ywa? - wersja kr坦tka
Webpack - Czym jest webpack i dlaczego chcesz go u甜ywa? - wersja kr坦tkaWebpack - Czym jest webpack i dlaczego chcesz go u甜ywa? - wersja kr坦tka
Webpack - Czym jest webpack i dlaczego chcesz go u甜ywa? - wersja kr坦tka
Marcin Gajda
Apache http server - proste i zaawansowane przypadki u甜ycia
Apache http server - proste i zaawansowane przypadki u甜yciaApache http server - proste i zaawansowane przypadki u甜ycia
Apache http server - proste i zaawansowane przypadki u甜ycia
Wojciech Lichota
Znaki mocy dla laik坦w Programowanie funkcyjne w JavaScript
Znaki mocy dla laik坦w  Programowanie funkcyjne w JavaScriptZnaki mocy dla laik坦w  Programowanie funkcyjne w JavaScript
Znaki mocy dla laik坦w Programowanie funkcyjne w JavaScript
The Software House
Angular Restmod
Angular RestmodAngular Restmod
Angular Restmod
Marcin Gajda
GraphQL w React z wykorzystaniem Apollo
GraphQL w React z wykorzystaniem ApolloGraphQL w React z wykorzystaniem Apollo
GraphQL w React z wykorzystaniem Apollo
Boldare
Angular 4 pragmatycznie
Angular 4 pragmatycznieAngular 4 pragmatycznie
Angular 4 pragmatycznie
Sages
Platforma Kontentowa
Platforma KontentowaPlatforma Kontentowa
Platforma Kontentowa
Rafa Filipek
Architektura ngrx w angular 2+
Architektura ngrx w angular 2+Architektura ngrx w angular 2+
Architektura ngrx w angular 2+
Pawe 纏urowski
PLNOG 22 - Krzysztof Zaski - Praktyczne zastosowanie narzdzi NetDevOps
PLNOG 22 - Krzysztof Zaski - Praktyczne zastosowanie narzdzi NetDevOpsPLNOG 22 - Krzysztof Zaski - Praktyczne zastosowanie narzdzi NetDevOps
PLNOG 22 - Krzysztof Zaski - Praktyczne zastosowanie narzdzi NetDevOps
PROIDEA
Allegro Tech Talks Pozna #4: Jak przyspieszy SOLRa w kilku prostych krokach.
Allegro Tech Talks Pozna #4: Jak przyspieszy SOLRa w kilku prostych krokach. Allegro Tech Talks Pozna #4: Jak przyspieszy SOLRa w kilku prostych krokach.
Allegro Tech Talks Pozna #4: Jak przyspieszy SOLRa w kilku prostych krokach.
allegro.tech
TypeScript as a runtime error terminator
TypeScript as a runtime error terminatorTypeScript as a runtime error terminator
TypeScript as a runtime error terminator
The Software House
RxJava & Hystrix - Perfect match for distributed applications
RxJava & Hystrix - Perfect match for distributed applicationsRxJava & Hystrix - Perfect match for distributed applications
RxJava & Hystrix - Perfect match for distributed applications
allegro.tech
Wprowadzenie do jzyka Swift, czyli nowe podejcie do programowania aplikacji...
Wprowadzenie do jzyka Swift, czyli nowe podejcie do programowania aplikacji...Wprowadzenie do jzyka Swift, czyli nowe podejcie do programowania aplikacji...
Wprowadzenie do jzyka Swift, czyli nowe podejcie do programowania aplikacji...
The Software House
4Developers 2015: Orleans - aplikacje, kt坦re skaluj i dystrybuuj si same -...
4Developers 2015: Orleans - aplikacje, kt坦re skaluj i dystrybuuj si same -...4Developers 2015: Orleans - aplikacje, kt坦re skaluj i dystrybuuj si same -...
4Developers 2015: Orleans - aplikacje, kt坦re skaluj i dystrybuuj si same -...
PROIDEA
Pawe Kucharski: Oswajamy Sonia czyli po co nam Hadoop
Pawe Kucharski: Oswajamy Sonia czyli po co nam HadoopPawe Kucharski: Oswajamy Sonia czyli po co nam Hadoop
Pawe Kucharski: Oswajamy Sonia czyli po co nam Hadoop
AnalyticsConf
AADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScriptAADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScript
Jacek Okrojek
Hugo - make webdev fun again
Hugo - make webdev fun againHugo - make webdev fun again
Hugo - make webdev fun again
Marcin Gajda
infoShare AI Roadshow 2018 - Magdalena W坦jcik (Data Love) - Data Science na d...
infoShare AI Roadshow 2018 - Magdalena W坦jcik (Data Love) - Data Science na d...infoShare AI Roadshow 2018 - Magdalena W坦jcik (Data Love) - Data Science na d...
infoShare AI Roadshow 2018 - Magdalena W坦jcik (Data Love) - Data Science na d...
Infoshare
Webpack - Czym jest webpack i dlaczego chcesz go u甜ywa? - wersja kr坦tka
Webpack - Czym jest webpack i dlaczego chcesz go u甜ywa? - wersja kr坦tkaWebpack - Czym jest webpack i dlaczego chcesz go u甜ywa? - wersja kr坦tka
Webpack - Czym jest webpack i dlaczego chcesz go u甜ywa? - wersja kr坦tka
Marcin Gajda
Apache http server - proste i zaawansowane przypadki u甜ycia
Apache http server - proste i zaawansowane przypadki u甜yciaApache http server - proste i zaawansowane przypadki u甜ycia
Apache http server - proste i zaawansowane przypadki u甜ycia
Wojciech Lichota

Viewers also liked (11)

Codepot - Pig i Hive: szybkie wprowadzenie / Pig and Hive crash course
Codepot - Pig i Hive: szybkie wprowadzenie / Pig and Hive crash courseCodepot - Pig i Hive: szybkie wprowadzenie / Pig and Hive crash course
Codepot - Pig i Hive: szybkie wprowadzenie / Pig and Hive crash course
Sages
Zr坦b dobrze swojej kom坦rce - programowanie urzdze mobilnych z wykorzystanie...
Zr坦b dobrze swojej kom坦rce - programowanie urzdze mobilnych z wykorzystanie...Zr坦b dobrze swojej kom坦rce - programowanie urzdze mobilnych z wykorzystanie...
Zr坦b dobrze swojej kom坦rce - programowanie urzdze mobilnych z wykorzystanie...
Sages
Bezpieczne dane w aplikacjach java
Bezpieczne dane w aplikacjach javaBezpieczne dane w aplikacjach java
Bezpieczne dane w aplikacjach java
Sages
Wprowadzenie do technologii Puppet
Wprowadzenie do technologii PuppetWprowadzenie do technologii Puppet
Wprowadzenie do technologii Puppet
Sages
Szybkie wprowadzenie do eksploracji danych z pakietem Weka
Szybkie wprowadzenie do eksploracji danych z pakietem WekaSzybkie wprowadzenie do eksploracji danych z pakietem Weka
Szybkie wprowadzenie do eksploracji danych z pakietem Weka
Sages
Jak zacz przetwarzanie maych i du甜ych danych tekstowych?
Jak zacz przetwarzanie maych i du甜ych danych tekstowych?Jak zacz przetwarzanie maych i du甜ych danych tekstowych?
Jak zacz przetwarzanie maych i du甜ych danych tekstowych?
Sages
Architektura aplikacji android
Architektura aplikacji androidArchitektura aplikacji android
Architektura aplikacji android
Sages
Wprowadzenie do technologii Big Data / Intro to Big Data Ecosystem
Wprowadzenie do technologii Big Data / Intro to Big Data EcosystemWprowadzenie do technologii Big Data / Intro to Big Data Ecosystem
Wprowadzenie do technologii Big Data / Intro to Big Data Ecosystem
Sages
Wprowadzenie do Big Data i Apache Spark
Wprowadzenie do Big Data i Apache SparkWprowadzenie do Big Data i Apache Spark
Wprowadzenie do Big Data i Apache Spark
Sages
Wprowadzenie do technologi Big Data i Apache Hadoop
Wprowadzenie do technologi Big Data i Apache HadoopWprowadzenie do technologi Big Data i Apache Hadoop
Wprowadzenie do technologi Big Data i Apache Hadoop
Sages
Vert.x v3 - high performance polyglot application toolkit
Vert.x v3 - high performance  polyglot application toolkitVert.x v3 - high performance  polyglot application toolkit
Vert.x v3 - high performance polyglot application toolkit
Sages
Codepot - Pig i Hive: szybkie wprowadzenie / Pig and Hive crash course
Codepot - Pig i Hive: szybkie wprowadzenie / Pig and Hive crash courseCodepot - Pig i Hive: szybkie wprowadzenie / Pig and Hive crash course
Codepot - Pig i Hive: szybkie wprowadzenie / Pig and Hive crash course
Sages
Zr坦b dobrze swojej kom坦rce - programowanie urzdze mobilnych z wykorzystanie...
Zr坦b dobrze swojej kom坦rce - programowanie urzdze mobilnych z wykorzystanie...Zr坦b dobrze swojej kom坦rce - programowanie urzdze mobilnych z wykorzystanie...
Zr坦b dobrze swojej kom坦rce - programowanie urzdze mobilnych z wykorzystanie...
Sages
Bezpieczne dane w aplikacjach java
Bezpieczne dane w aplikacjach javaBezpieczne dane w aplikacjach java
Bezpieczne dane w aplikacjach java
Sages
Wprowadzenie do technologii Puppet
Wprowadzenie do technologii PuppetWprowadzenie do technologii Puppet
Wprowadzenie do technologii Puppet
Sages
Szybkie wprowadzenie do eksploracji danych z pakietem Weka
Szybkie wprowadzenie do eksploracji danych z pakietem WekaSzybkie wprowadzenie do eksploracji danych z pakietem Weka
Szybkie wprowadzenie do eksploracji danych z pakietem Weka
Sages
Jak zacz przetwarzanie maych i du甜ych danych tekstowych?
Jak zacz przetwarzanie maych i du甜ych danych tekstowych?Jak zacz przetwarzanie maych i du甜ych danych tekstowych?
Jak zacz przetwarzanie maych i du甜ych danych tekstowych?
Sages
Architektura aplikacji android
Architektura aplikacji androidArchitektura aplikacji android
Architektura aplikacji android
Sages
Wprowadzenie do technologii Big Data / Intro to Big Data Ecosystem
Wprowadzenie do technologii Big Data / Intro to Big Data EcosystemWprowadzenie do technologii Big Data / Intro to Big Data Ecosystem
Wprowadzenie do technologii Big Data / Intro to Big Data Ecosystem
Sages
Wprowadzenie do Big Data i Apache Spark
Wprowadzenie do Big Data i Apache SparkWprowadzenie do Big Data i Apache Spark
Wprowadzenie do Big Data i Apache Spark
Sages
Wprowadzenie do technologi Big Data i Apache Hadoop
Wprowadzenie do technologi Big Data i Apache HadoopWprowadzenie do technologi Big Data i Apache Hadoop
Wprowadzenie do technologi Big Data i Apache Hadoop
Sages
Vert.x v3 - high performance polyglot application toolkit
Vert.x v3 - high performance  polyglot application toolkitVert.x v3 - high performance  polyglot application toolkit
Vert.x v3 - high performance polyglot application toolkit
Sages

Similar to Podstawy AngularJS (20)

Bohater UI bez front end developera ?
Bohater UI bez front end developera ?Bohater UI bez front end developera ?
Bohater UI bez front end developera ?
Quick-Solution
AngularJS - podstawy
AngularJS - podstawyAngularJS - podstawy
AngularJS - podstawy
Apptension
Automatyzacja utrzymania jakoci w rodowisku PHP
Automatyzacja utrzymania jakoci w rodowisku PHPAutomatyzacja utrzymania jakoci w rodowisku PHP
Automatyzacja utrzymania jakoci w rodowisku PHP
Laravel Poland MeetUp
PLNOG 8: Tomasz Sawiak - Log management i analizy > to czego nie wida
PLNOG 8: Tomasz Sawiak - Log management i analizy > to czego nie wida PLNOG 8: Tomasz Sawiak - Log management i analizy > to czego nie wida
PLNOG 8: Tomasz Sawiak - Log management i analizy > to czego nie wida
PROIDEA
Laravelowe paczki do uwierzytelniania
Laravelowe paczki do uwierzytelnianiaLaravelowe paczki do uwierzytelniania
Laravelowe paczki do uwierzytelniania
Laravel Poland MeetUp
Daj si wyrczy - Joomla Day Polska 2014
Daj si wyrczy - Joomla Day Polska 2014Daj si wyrczy - Joomla Day Polska 2014
Daj si wyrczy - Joomla Day Polska 2014
Tomasz Dziuda
Micha Dec - Quality in Clouds
Micha Dec - Quality in CloudsMicha Dec - Quality in Clouds
Micha Dec - Quality in Clouds
kraqa
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
Mariusz Koprowski
Monitoring sieci
Monitoring sieciMonitoring sieci
Monitoring sieci
Kamil Grabowski
[PLCUG] Power shell (PL)
[PLCUG] Power shell (PL)[PLCUG] Power shell (PL)
[PLCUG] Power shell (PL)
Jaroslaw Sobel
AngularJS szkolenie wewntrzne (into)
AngularJS szkolenie wewntrzne (into)AngularJS szkolenie wewntrzne (into)
AngularJS szkolenie wewntrzne (into)
Marcin Baran
Patronage 2016 Windows 10 Warsztaty
Patronage 2016 Windows 10 WarsztatyPatronage 2016 Windows 10 Warsztaty
Patronage 2016 Windows 10 Warsztaty
intive
"Administrator z przypadku" - Jak dziaa SQL Server i jak o niego dba
"Administrator z przypadku" - Jak dziaa SQL Server i jak o niego dba"Administrator z przypadku" - Jak dziaa SQL Server i jak o niego dba
"Administrator z przypadku" - Jak dziaa SQL Server i jak o niego dba
Bartosz Ratajczyk
Jak nie narobi sobie problem坦w korzystajc z EntityFramework
Jak nie narobi sobie problem坦w korzystajc z EntityFrameworkJak nie narobi sobie problem坦w korzystajc z EntityFramework
Jak nie narobi sobie problem坦w korzystajc z EntityFramework
HighWheelSoftware
Citrix NetScaler Gateway i Azure MFA
Citrix NetScaler Gateway i Azure MFACitrix NetScaler Gateway i Azure MFA
Citrix NetScaler Gateway i Azure MFA
Pawel Serwan
JavaScript, Moduy
JavaScript, ModuyJavaScript, Moduy
JavaScript, Moduy
Mariusz Nowak
ukasz Grala - WSKIZ 2009-04-07 It Academic - SQL Server 2008 - Nowoci Adm...
ukasz Grala - WSKIZ 2009-04-07 It Academic - SQL Server 2008 - Nowoci   Adm...ukasz Grala - WSKIZ 2009-04-07 It Academic - SQL Server 2008 - Nowoci   Adm...
ukasz Grala - WSKIZ 2009-04-07 It Academic - SQL Server 2008 - Nowoci Adm...
ukasz Grala
PLNOG22 - Piotr Stolarek - Bezpieczestwo u甜ytkowania platform usugowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczestwo u甜ytkowania platform usugowych Tel...PLNOG22 - Piotr Stolarek - Bezpieczestwo u甜ytkowania platform usugowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczestwo u甜ytkowania platform usugowych Tel...
PROIDEA
Bdy user坦w, niedor坦bki koder坦w
Bdy user坦w, niedor坦bki koder坦wBdy user坦w, niedor坦bki koder坦w
Bdy user坦w, niedor坦bki koder坦w
Arkadiusz Stplowski
Bohater UI bez front end developera ?
Bohater UI bez front end developera ?Bohater UI bez front end developera ?
Bohater UI bez front end developera ?
Quick-Solution
AngularJS - podstawy
AngularJS - podstawyAngularJS - podstawy
AngularJS - podstawy
Apptension
Automatyzacja utrzymania jakoci w rodowisku PHP
Automatyzacja utrzymania jakoci w rodowisku PHPAutomatyzacja utrzymania jakoci w rodowisku PHP
Automatyzacja utrzymania jakoci w rodowisku PHP
Laravel Poland MeetUp
PLNOG 8: Tomasz Sawiak - Log management i analizy > to czego nie wida
PLNOG 8: Tomasz Sawiak - Log management i analizy > to czego nie wida PLNOG 8: Tomasz Sawiak - Log management i analizy > to czego nie wida
PLNOG 8: Tomasz Sawiak - Log management i analizy > to czego nie wida
PROIDEA
Laravelowe paczki do uwierzytelniania
Laravelowe paczki do uwierzytelnianiaLaravelowe paczki do uwierzytelniania
Laravelowe paczki do uwierzytelniania
Laravel Poland MeetUp
Daj si wyrczy - Joomla Day Polska 2014
Daj si wyrczy - Joomla Day Polska 2014Daj si wyrczy - Joomla Day Polska 2014
Daj si wyrczy - Joomla Day Polska 2014
Tomasz Dziuda
Micha Dec - Quality in Clouds
Micha Dec - Quality in CloudsMicha Dec - Quality in Clouds
Micha Dec - Quality in Clouds
kraqa
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
Mariusz Koprowski
[PLCUG] Power shell (PL)
[PLCUG] Power shell (PL)[PLCUG] Power shell (PL)
[PLCUG] Power shell (PL)
Jaroslaw Sobel
AngularJS szkolenie wewntrzne (into)
AngularJS szkolenie wewntrzne (into)AngularJS szkolenie wewntrzne (into)
AngularJS szkolenie wewntrzne (into)
Marcin Baran
Patronage 2016 Windows 10 Warsztaty
Patronage 2016 Windows 10 WarsztatyPatronage 2016 Windows 10 Warsztaty
Patronage 2016 Windows 10 Warsztaty
intive
"Administrator z przypadku" - Jak dziaa SQL Server i jak o niego dba
"Administrator z przypadku" - Jak dziaa SQL Server i jak o niego dba"Administrator z przypadku" - Jak dziaa SQL Server i jak o niego dba
"Administrator z przypadku" - Jak dziaa SQL Server i jak o niego dba
Bartosz Ratajczyk
Jak nie narobi sobie problem坦w korzystajc z EntityFramework
Jak nie narobi sobie problem坦w korzystajc z EntityFrameworkJak nie narobi sobie problem坦w korzystajc z EntityFramework
Jak nie narobi sobie problem坦w korzystajc z EntityFramework
HighWheelSoftware
Citrix NetScaler Gateway i Azure MFA
Citrix NetScaler Gateway i Azure MFACitrix NetScaler Gateway i Azure MFA
Citrix NetScaler Gateway i Azure MFA
Pawel Serwan
JavaScript, Moduy
JavaScript, ModuyJavaScript, Moduy
JavaScript, Moduy
Mariusz Nowak
ukasz Grala - WSKIZ 2009-04-07 It Academic - SQL Server 2008 - Nowoci Adm...
ukasz Grala - WSKIZ 2009-04-07 It Academic - SQL Server 2008 - Nowoci   Adm...ukasz Grala - WSKIZ 2009-04-07 It Academic - SQL Server 2008 - Nowoci   Adm...
ukasz Grala - WSKIZ 2009-04-07 It Academic - SQL Server 2008 - Nowoci Adm...
ukasz Grala
PLNOG22 - Piotr Stolarek - Bezpieczestwo u甜ytkowania platform usugowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczestwo u甜ytkowania platform usugowych Tel...PLNOG22 - Piotr Stolarek - Bezpieczestwo u甜ytkowania platform usugowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczestwo u甜ytkowania platform usugowych Tel...
PROIDEA
Bdy user坦w, niedor坦bki koder坦w
Bdy user坦w, niedor坦bki koder坦wBdy user坦w, niedor坦bki koder坦w
Bdy user坦w, niedor坦bki koder坦w
Arkadiusz Stplowski

More from Sages (6)

Python szybki start
Python   szybki startPython   szybki start
Python szybki start
Sages
Budowanie rozwiza serverless w chmurze Azure
Budowanie rozwiza serverless w chmurze AzureBudowanie rozwiza serverless w chmurze Azure
Budowanie rozwiza serverless w chmurze Azure
Sages
Docker praktyczne podstawy
Docker  praktyczne podstawyDocker  praktyczne podstawy
Docker praktyczne podstawy
Sages
Jak dziaa blockchain?
Jak dziaa blockchain?Jak dziaa blockchain?
Jak dziaa blockchain?
Sages
Qgis szybki start
Qgis szybki startQgis szybki start
Qgis szybki start
Sages
Architektura SOA - wstp
Architektura SOA - wstpArchitektura SOA - wstp
Architektura SOA - wstp
Sages
Python szybki start
Python   szybki startPython   szybki start
Python szybki start
Sages
Budowanie rozwiza serverless w chmurze Azure
Budowanie rozwiza serverless w chmurze AzureBudowanie rozwiza serverless w chmurze Azure
Budowanie rozwiza serverless w chmurze Azure
Sages
Docker praktyczne podstawy
Docker  praktyczne podstawyDocker  praktyczne podstawy
Docker praktyczne podstawy
Sages
Jak dziaa blockchain?
Jak dziaa blockchain?Jak dziaa blockchain?
Jak dziaa blockchain?
Sages
Qgis szybki start
Qgis szybki startQgis szybki start
Qgis szybki start
Sages
Architektura SOA - wstp
Architektura SOA - wstpArchitektura SOA - wstp
Architektura SOA - wstp
Sages

Podstawy AngularJS

  • 3. Agenda Wprowadzenie / kontekst / narzdzia Teoria / demo Warsztat Teoria / demo Warsztat Q & A
  • 6. Narzdzia WebStorm (IDE) SublimeText 3 Atom 1.0 Brackets Vim?
  • 7. Node Packaged Modules system zarzdzania zale甜nociami dla油 server-side js zale甜noci opisywane w油pliku package.json npm install - instaluje pakiety, kt坦rych jeszcze nie ma w projekcie npm update - sprawdza, czy istniej nowsze wersje pakiet坦w + instaluje npm install nazwa-pakietu save-dev - instaluje pakiet, dodaje go do package.json
  • 8. Bower npm install -g bower zarzdzanie zale甜nociami dla油client-side js zale甜noci opisywane w bower.json bower install - instaluje pakiety, kt坦rych jeszcze nie ma w projekcie bower update - sprawdza, czy istniej nowsze wersje pakiet坦w + instaluje bower install nazwa-pakietu --save - instaluje pakiet, dodaje go do bower.json pakiety instalowane s do katalogu /bower_components/nazwa-pakietu/ - stamtd nale甜y je linkowa w plikach html
  • 10. Module Con鍖g [ module1, module2, module3, ] Routing View (template) Controller Service Directive $scope
  • 11. Moduy, struktura aplikacji Moduy wskazuj na zale甜noci od zewntrznych bibliotek Moduy nie separuj zawieranych komponent坦w (namespaces) Poszczeg坦lne fragmenty aplikacji jako moduy, o hierarchii odzwierciedlonej w strukturze katalog坦w Form Follows Function OPINIA
  • 12. Routing ngRoute ui.router $stateProvider .state('state1.list', { url: "/list", templateUrl: "partials/state1.list.html", controller: "ListController" }) demo: http://plnkr.co/edit/u18KQc .config(function($routeProvider) { $routeProvider.when('/view1', { templateUrl: 'view1/view1.html', controller: 'View1Ctrl' }); })
  • 14. Widok Zwyczajny dokument HTML rozszerzony o: dyrektywy, np. ng-init wyra甜enia w klamrach, np. {{ age + 8 }} 1 <div ng-controller="PersonCtrl"> 2 <input type="text" ng-model="firstName"> 3 <input type="text" ng-model="lastName"> 4 5 <p>Witaj {{ firstName }} {{ lastName }}</p> 6 7 <a ng-click="clearName()">wykasuj dane</a> 8 </div>
  • 15. Controller Zwyka JavaScriptowa funkcja Powizanie z widokiem odbywa si przez $scope 1 myApp.controller('PersonCtrl', function($scope) 2 { 3 $scope.firstName = 'John'; 4 $scope.lastName = 'Smith'; 5 6 $scope.clearName = function() { 7 $scope.firstName = $scope.lastName = ''; 8 }; 9 });
  • 17. demo
  • 18. Usugi Miejsce na logik biznesow Metody pomocnicze, powtarzalny kod Wsp坦dzielone dane / model Po co? Jak? .constant( .value( .service( .factory( .provider( usugi wbudowane: https://docs.angularjs.org/api/ng/service
  • 19. Service 1 myApp.service('helloService', function () { 2 3 this.sayHello = function () { 4 return this.greeting + ' world!'; 5 }; 6 7 this.greeting = 'Hello'; 8 9 });
  • 20. Factory 1 myApp.factory('Person', function() { 2 function Person(firstName, lastName) { 3 this.firstName = firstName; 4 this.lastName = lastName; 5 this.age = 0; 6 } 7 8 Person.prototype.getFullName = function () { 9 return this.firstName + ' ' + this.lastName; 10 } 11 12 return Person; 13 });
  • 23. Dyrektywy Enkapsuluj logik zwizan z zachowaniem elementu interfejsu Tworz widgety - mae aplikacje, klocki z kt坦rych budujemy wiksze fragmenty
  • 24. Directive De鍖nition Object 1 myApp.directive('awesome', function () { 2 return { 3 priority: 0, 4 template: '<div></div>', 5 replace: true, 6 transclude: true, 7 restrict: 'A', 8 scope: {}, 9 link: function postLink(scope, element, attrs) { 10 11 } 12 }; 13 })
  • 25. Izolowany scope <my-race start="race.start" days="race.days" cheer="'Hurrah!'" on-finish="goDance()"> </my-race> 1 .directive('myRace', function () { 2 return { ... 4 scope: { 5 dateStart: '=start' 6 days: '=', 7 cheer: '@', 8 finishCallback: '&onFinish' 9 } 10 }; 11 });
  • 27. Filtry Umo甜liwiaj przeksztacenie danych w trakcie przejcia ze油$scope do widoku bez zmieniania oryginalnej wartoci. 1 {{ user.firstName | uppercase }} 2 Jack -> JACK 3 4 {{ user.createdAt | date:'dd.MM.yyyy, HH:mm' }} 5 Wed Mar 05 2014 14:22:01 GMT+0100 (CET) -> 05.03.2014, 14:22 6 1394025721000 -> 05.03.2014, 14:22 7 8 {{ user.interests | orderBy:'toString()':true | limitTo:2 }} 9 ['movies','sports','gaming','travel'] -> ['travel','sports']
  • 28. Wasne Filtry De鍖niowanie wasnego 鍖ltra sprowadza si do油deklaracji prostej funkcji: 1 myApp.filter('slice', function() { 2 return function(arr, start, end) { 3 return (arr || []).slice(start, end); 4 }; 5 }); nazwa filtra warto na wejciu kolejne parametry
  • 30. Formularze Element <form name="sampleform" novalidate> to油dyrektywa, kt坦ra dostarcza kilka przydatnych zachowa dotyczcych pracy z油formularzami. Najwa甜niejszym jest obsuga walidacji. 1 <input type="email" 2 ng-model="{ string }" 3 name="{ string }" 4 required 5 ng-required="{ boolean }" 6 ng-minlength="{ number }" 7 ng-maxlength="{ number }" 8 ng-pattern="{ string }" 9 ng-change="{ string }"> 10 </input>
  • 31. Walidacja <form name="userform"> <input type="email" name="mail" ng-model="field" required minlength="5"/> <div ng-messages="userform.mail.$error" ng-messages-multiple> <p ng-message="required">Pole obowizkowe</p> <p ng-message="minlength">Zbyt kr坦tka warto</p> <p ng-message="email">Warto nie jest e-mailem</p> </div> </form> <button type="submit" class="btn btn-primary" ng-disabled="userForm.$invalid"> Zapisz </button> form.ng-dirty { background: #e6f2ff } .ng-invalid-max-length { border-color: red }
  • 33. Co dalej? wicej na temat organizacji kodu i innych dobrych praktyk: https://github.com/toddmotto/angularjs-styleguide https://github.com/johnpapa/angularjs-styleguide
  • 34. Co dalej? Regularne szkolenia w grupach 4-8 os坦b Wicej materiau Wicej case坦w Wicej elastycznoci i czasu Wicej lunchy :)
  • 36. Oraz