SlideShare a Scribd company logo
plan wycieczki
• Jestem przytłoczony. pomocy!
• 1 - Architektura UI w stylu ROCA
• 2 - Node.js jako Backend for Frontend
• 3 - Dependency Injection w node.js
• 4 - Stabilny klient HTTP do produkcyjnych zastosowań
• 5 - Asynchroniczność: tresura asynchronicznej bestii
• 6 - Styl kodowania: dlaczego jestem gruby od tego JS
(node.js )
web development
prościej
wersja prelekcji: 0.10.0
o Was
2015
2016
efekt Lindy
mój kontekst
publicznie dostępne
serwisy informacyjne
Devs
HTML/JS
http://realgamernewz.com/wp-content/uploads/2014/06/GameDev-Denis-Rozaj-of-IzBoot-Abusing-Applicants.jpg
http://sportsradiopd.com/wp-content/uploads/2014/10/phoneyeller.jpg
http://pixabay.com/static/uploads/photo/2012/02/28/15/40/adult-18377_640.jpg
500kB of JS
HTML+CSS
http://realgamernewz.com/wp-content/uploads/2014/06/GameDev-Denis-Rozaj-of-IzBoot-Abusing-Applicants.jpg
http://sportsradiopd.com/wp-content/uploads/2014/10/phoneyeller.jpg
http://pixabay.com/static/uploads/photo/2012/02/28/15/40/adult-18377_640.jpg
curl
wget
bot
1. ARCHITEKTURA APLIKACJI
Resource-Oriented Client Architecture
Resource-Oriented Client
Architecture
• A collection of simple recommendations for decent
Web application frontends
http://roca-style.org/
ROCA
=
REST (backend)
+
Progressive Enhancement (frontend)
REST
2000
article front page
zasoby
(Resources)
baza danych
stan zasobów
(State)
article front page
zasoby
(Resources)
reprezentacja
(REpresentation)JSON XML
HTML
(hypermedia)
baza danych
stan zasobów
(State)
article front page
zasoby
(Resources)
reprezentacja
(REpresentation)JSON XML HTML
przeglądarka bot wget/curl
baza danych
stan zasobów
(State)
Transfer
stan
aplikacji/interakcji
Progressive
Enhancement
2003
Unobtrusive JS
2002
HTML CSS JS
http://roca-airways.herokuapp.com/
czynnik ludzki
wow!
ale
data
binding
wow
uniflow
ale
vdom
flux reflux redux
nie ma
thisa!
ale
FRP
mercury ? ?
Efekt IKEA
stawka w grze
(ang. skin in the game)
2. NODE.js w naszym
ekosystemie
Wzorzec: Backends For Frontends
Web
Web
Native
Web
Web
Native
strona
główna
artykuł WebTV quizy
strona
główna
artykuł WebTV quizy
node.js
BFF
Java
monolithSPA
backend
PHPgroovyJavanode
node.js
BFF
strona
główna
artykuł WebTV quizy
node.js
BFF
Java
monolith
SPA
PHPgroovyJavanode
node.js
BFF
http://scs-architecture.org/
złożone zasoby
header
article
footer
varnish/nginx
wywołanie funkcji
var processed = new ESI().process(html);
http://upload.wikimedia.org/wikipedia/commons/5/53/Server-multiple.svg
http://upload.wikimedia.org/wikipedia/commons/5/53/Server-multiple.svg
https://openclipart.org/image/300px/svg_to_png/16073/kml-Document.png
article video
article text
link - sport widget
core content
article text
<a role="widget"
class="widget-link"
href=”//example.com/sportWidget”>
sport widget
</a>
link - sport widget
read URL
article video
article text
link - sport widget
article text
HTTPGET
article video
article text
link - sport widget
article text
HTML + (CSS) + (JS)
article video
article text
sport widget
article text
HTML only
HTML+CSS+JS
moja pierwsza aplikacja w node.js
3. dependency injection
struktura, testowalność i zastępowalność komponentów w
nietrywialnych aplikacjach
Q: jak nadpisać require w testach?
A: użyj modułu rewire/proxyquire
ja: proszę nie
Q: jak nadpisać require w testach?
A: użyj modułu rewire/proxyquire
ja: proszę nie
Q: jak nadpisać require w testach?
A: użyj modułu rewire/proxyquire
ja: proszę nie
Q: jak robić DI w node.js?
A: ktoś pracuje nad klonem Springa
ja: oby nie!
Q: jak robić DI w node.js?
A: ktoś pracuje nad klonem Springa
ja: oby nie!
Q: jak robić DI w node.js?
A: ktoś pracuje nad klonem Springa
ja: oby nie!
new A(new B(), new C());
a(b(), c());
tylko bezstanowe ‘require’
rozsiane po kodzie
np. require(‘lodash’), require(‘url’), require(‘q’)
http://www.schibsted.pl/2015/12/
how-to-do-dependency-
injection-in-node-js/
4. w poszukiwaniu idealnego
klienta HTTP
gdy request to za mało
mikroserwisy
APIklient
much starrrs
such popular
maaany forks
ponawianie
nieudanych
zapytań
APIklient
APIklient
APIklient
APIklient
odpowiedź API
“śpieszmy się kochać odpowiedzi z API,
tak szybko odchodzą”
APIklient
5. AsynCHORNICZNOŚĆ
tresura aynchronicznej bestii
Java —> JS
sync —> async
callbacks async.js
promises
generators
async functions
streams
observables
event emitter
CALLBACKs
Nawet Kapitan Oczywisty to wie
• callback hell
• niewygodna obsługa wyjątków
• wymaga dodatkowych bibliotek (e.g. async.js)
bardziej subtelne problemy
łatwo wymieszać
kod synchroniczny i
asynchroniczny
inversion of control
trust issues
Hey I just met you
And this is crazy
but here’s my handler
Promisy na ratunek
jQuery Deferred
native
bluebird
Q
same ol’ callback hell
not synchronous enough?
http://mcfunley.com/choose-boring-technology-slides
6. STYL PROGRAMOWANIA
this Javascript makes me fat
spójny styl
konwencje nazewnicze
i
formatowanie?
idomy
JS - the annoying parts
• var self = this;
• fn.bind(this);
• new i funkcje konstruktora
przeciętne książki
przyzwoite książki
świetne książki
look ma no this, new and
prototype
Siła woli i aktywność umysłowa
korzystają z tej samej puli zasobów
this-full JS makes me fat
https://github.com/kwasniew
https://twitter.com/kwasniew
http://www.slideshare.net/kwasniew
https://www.linkedin.com/pub/mateusz-kwasniewski/6/a97/583
Mateusz Kwaśniewski
(node.js) Web development - prościej (pl)

More Related Content

What's hot

Word up warszawa 2015
Word up warszawa 2015Word up warszawa 2015
Word up warszawa 2015
Tomasz Dziuda
 
Jak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayJak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training Day
Tomasz Dziuda
 
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp SilesiaJak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
Tomasz Dziuda
 
Word up łódź kwiecień 2015
Word up łódź   kwiecień 2015Word up łódź   kwiecień 2015
Word up łódź kwiecień 2015
Tomasz Dziuda
 
Czy Gutenberg wygryzie page buildery?
Czy Gutenberg wygryzie page buildery?Czy Gutenberg wygryzie page buildery?
Czy Gutenberg wygryzie page buildery?
Agnieszka Bury
 
Motywy dla WordPressa - historia prawdziwa - WordUp Katowice
Motywy dla WordPressa - historia prawdziwa - WordUp KatowiceMotywy dla WordPressa - historia prawdziwa - WordUp Katowice
Motywy dla WordPressa - historia prawdziwa - WordUp Katowice
Tomasz Dziuda
 
Wprowadzenie do WP-API
Wprowadzenie do WP-APIWprowadzenie do WP-API
Wprowadzenie do WP-API
Tomasz Dziuda
 
Wtyczkowe Kompendium - WordUp Lublin
Wtyczkowe Kompendium - WordUp LublinWtyczkowe Kompendium - WordUp Lublin
Wtyczkowe Kompendium - WordUp Lublin
Tomasz Dziuda
 
Świadoma praca zdalna
Świadoma praca zdalnaŚwiadoma praca zdalna
Świadoma praca zdalna
Pawel Wrzeszcz
 
WordUp Kraków - maj 2015
WordUp Kraków - maj 2015WordUp Kraków - maj 2015
WordUp Kraków - maj 2015Tomasz Dziuda
 
Dokąd zmierza WordPress?
Dokąd zmierza WordPress?Dokąd zmierza WordPress?
Dokąd zmierza WordPress?
Tomasz Dziuda
 
Nie takie bloki straszne… czyli wstęp do Gutenberga
Nie takie bloki straszne… czyli wstęp do GutenbergaNie takie bloki straszne… czyli wstęp do Gutenberga
Nie takie bloki straszne… czyli wstęp do Gutenberga
Krzysztof Grabania
 
4Developers 2018: Graceful Degradation kontra Progressive Enhancement (Jacek ...
4Developers 2018: Graceful Degradation kontra Progressive Enhancement (Jacek ...4Developers 2018: Graceful Degradation kontra Progressive Enhancement (Jacek ...
4Developers 2018: Graceful Degradation kontra Progressive Enhancement (Jacek ...
PROIDEA
 
Wordpress - czyli ponad 17% wszystkich istniejących serwisów www
Wordpress - czyli ponad 17% wszystkich istniejących serwisów wwwWordpress - czyli ponad 17% wszystkich istniejących serwisów www
Wordpress - czyli ponad 17% wszystkich istniejących serwisów www
B-MIND Software House
 
Gdzie są umiejscowione polskie wordpressy
Gdzie są umiejscowione polskie wordpressyGdzie są umiejscowione polskie wordpressy
Gdzie są umiejscowione polskie wordpressy
Arkadiusz Stęplowski
 

What's hot (16)

Responsive Web Design
Responsive Web DesignResponsive Web Design
Responsive Web Design
 
Word up warszawa 2015
Word up warszawa 2015Word up warszawa 2015
Word up warszawa 2015
 
Jak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayJak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training Day
 
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp SilesiaJak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
 
Word up łódź kwiecień 2015
Word up łódź   kwiecień 2015Word up łódź   kwiecień 2015
Word up łódź kwiecień 2015
 
Czy Gutenberg wygryzie page buildery?
Czy Gutenberg wygryzie page buildery?Czy Gutenberg wygryzie page buildery?
Czy Gutenberg wygryzie page buildery?
 
Motywy dla WordPressa - historia prawdziwa - WordUp Katowice
Motywy dla WordPressa - historia prawdziwa - WordUp KatowiceMotywy dla WordPressa - historia prawdziwa - WordUp Katowice
Motywy dla WordPressa - historia prawdziwa - WordUp Katowice
 
Wprowadzenie do WP-API
Wprowadzenie do WP-APIWprowadzenie do WP-API
Wprowadzenie do WP-API
 
Wtyczkowe Kompendium - WordUp Lublin
Wtyczkowe Kompendium - WordUp LublinWtyczkowe Kompendium - WordUp Lublin
Wtyczkowe Kompendium - WordUp Lublin
 
Świadoma praca zdalna
Świadoma praca zdalnaŚwiadoma praca zdalna
Świadoma praca zdalna
 
WordUp Kraków - maj 2015
WordUp Kraków - maj 2015WordUp Kraków - maj 2015
WordUp Kraków - maj 2015
 
Dokąd zmierza WordPress?
Dokąd zmierza WordPress?Dokąd zmierza WordPress?
Dokąd zmierza WordPress?
 
Nie takie bloki straszne… czyli wstęp do Gutenberga
Nie takie bloki straszne… czyli wstęp do GutenbergaNie takie bloki straszne… czyli wstęp do Gutenberga
Nie takie bloki straszne… czyli wstęp do Gutenberga
 
4Developers 2018: Graceful Degradation kontra Progressive Enhancement (Jacek ...
4Developers 2018: Graceful Degradation kontra Progressive Enhancement (Jacek ...4Developers 2018: Graceful Degradation kontra Progressive Enhancement (Jacek ...
4Developers 2018: Graceful Degradation kontra Progressive Enhancement (Jacek ...
 
Wordpress - czyli ponad 17% wszystkich istniejących serwisów www
Wordpress - czyli ponad 17% wszystkich istniejących serwisów wwwWordpress - czyli ponad 17% wszystkich istniejących serwisów www
Wordpress - czyli ponad 17% wszystkich istniejących serwisów www
 
Gdzie są umiejscowione polskie wordpressy
Gdzie są umiejscowione polskie wordpressyGdzie są umiejscowione polskie wordpressy
Gdzie są umiejscowione polskie wordpressy
 

Similar to (node.js) Web development - prościej (pl)

Środowisko PWA
Środowisko PWAŚrodowisko PWA
HYC - Angular stań się kanciastym
HYC - Angular stań się kanciastymHYC - Angular stań się kanciastym
HYC - Angular stań się kanciastym
Dariusz Jagieło
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
The Software House
 
Responsive Web Design - Michał Rachowski Squiz
Responsive Web Design - Michał Rachowski SquizResponsive Web Design - Michał Rachowski Squiz
Responsive Web Design - Michał Rachowski Squiz
Fundacja Rozwoju Branży Internetowej Netcamp
 
Wordpress dla początkujących szkolenie / warsztat 07/10 Sidebary, Widgety, Mo...
Wordpress dla początkujących szkolenie / warsztat 07/10 Sidebary, Widgety, Mo...Wordpress dla początkujących szkolenie / warsztat 07/10 Sidebary, Widgety, Mo...
Wordpress dla początkujących szkolenie / warsztat 07/10 Sidebary, Widgety, Mo...
Mariusz Szatkowski
 
Alternatywne podejście do baz danych - MongoDb
Alternatywne podejście do baz danych - MongoDbAlternatywne podejście do baz danych - MongoDb
Alternatywne podejście do baz danych - MongoDbWojciech Soczyński
 
Błędy userów, niedoróbki koderów
Błędy userów, niedoróbki koderówBłędy userów, niedoróbki koderów
Błędy userów, niedoróbki koderów
Arkadiusz Stęplowski
 
ITAD BB 2014 - ASP.NET 5 - What's new?
ITAD BB 2014 - ASP.NET 5 - What's new?ITAD BB 2014 - ASP.NET 5 - What's new?
ITAD BB 2014 - ASP.NET 5 - What's new?
Michał Dudak
 
Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?
tkryskiewicz
 
Tomasz Głogosz: SharePoint Framework - nowa jakość w client-side development
Tomasz Głogosz: SharePoint Framework - nowa jakość w client-side developmentTomasz Głogosz: SharePoint Framework - nowa jakość w client-side development
Tomasz Głogosz: SharePoint Framework - nowa jakość w client-side development
SharePoint Saturday Warsaw
 
4Developers 2015: Szybciej niż Struś Pędziwiatr - WebSockets w aplikacjach we...
4Developers 2015: Szybciej niż Struś Pędziwiatr - WebSockets w aplikacjach we...4Developers 2015: Szybciej niż Struś Pędziwiatr - WebSockets w aplikacjach we...
4Developers 2015: Szybciej niż Struś Pędziwiatr - WebSockets w aplikacjach we...
PROIDEA
 
Wydajny frontend 2024 - nowości optymalizacyjne
Wydajny frontend 2024 - nowości optymalizacyjneWydajny frontend 2024 - nowości optymalizacyjne
Wydajny frontend 2024 - nowości optymalizacyjne
Bartłomiej Miś
 
Testowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackTestowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStack
The Software House
 
Platforma Kontentowa
Platforma KontentowaPlatforma Kontentowa
Platforma Kontentowa
Rafał Filipek
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
Tomasz Borowski
 
Jak nadążyć za światem front-endu?
Jak nadążyć za światem front-endu?Jak nadążyć za światem front-endu?
Jak nadążyć za światem front-endu?
Tomasz Dziuda
 
RxJS okiem doświadczonego inżyniera - Angular Warsaw #13
RxJS okiem doświadczonego inżyniera - Angular Warsaw #13RxJS okiem doświadczonego inżyniera - Angular Warsaw #13
RxJS okiem doświadczonego inżyniera - Angular Warsaw #13
Piotr Kowalski
 
Trendy na rok 2015
Trendy na rok 2015Trendy na rok 2015
Trendy na rok 2015
Tomasz Dziuda
 
Webinar - Podstawy Node.js
Webinar - Podstawy Node.jsWebinar - Podstawy Node.js
Webinar - Podstawy Node.js
Wojciech Kaniuka
 
Przyszłość c# 6.0 i nawet c# 7.0
Przyszłość c# 6.0 i nawet c# 7.0 Przyszłość c# 6.0 i nawet c# 7.0
Przyszłość c# 6.0 i nawet c# 7.0
Cezary Walenciuk
 

Similar to (node.js) Web development - prościej (pl) (20)

Środowisko PWA
Środowisko PWAŚrodowisko PWA
Środowisko PWA
 
HYC - Angular stań się kanciastym
HYC - Angular stań się kanciastymHYC - Angular stań się kanciastym
HYC - Angular stań się kanciastym
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
 
Responsive Web Design - Michał Rachowski Squiz
Responsive Web Design - Michał Rachowski SquizResponsive Web Design - Michał Rachowski Squiz
Responsive Web Design - Michał Rachowski Squiz
 
Wordpress dla początkujących szkolenie / warsztat 07/10 Sidebary, Widgety, Mo...
Wordpress dla początkujących szkolenie / warsztat 07/10 Sidebary, Widgety, Mo...Wordpress dla początkujących szkolenie / warsztat 07/10 Sidebary, Widgety, Mo...
Wordpress dla początkujących szkolenie / warsztat 07/10 Sidebary, Widgety, Mo...
 
Alternatywne podejście do baz danych - MongoDb
Alternatywne podejście do baz danych - MongoDbAlternatywne podejście do baz danych - MongoDb
Alternatywne podejście do baz danych - MongoDb
 
Błędy userów, niedoróbki koderów
Błędy userów, niedoróbki koderówBłędy userów, niedoróbki koderów
Błędy userów, niedoróbki koderów
 
ITAD BB 2014 - ASP.NET 5 - What's new?
ITAD BB 2014 - ASP.NET 5 - What's new?ITAD BB 2014 - ASP.NET 5 - What's new?
ITAD BB 2014 - ASP.NET 5 - What's new?
 
Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?
 
Tomasz Głogosz: SharePoint Framework - nowa jakość w client-side development
Tomasz Głogosz: SharePoint Framework - nowa jakość w client-side developmentTomasz Głogosz: SharePoint Framework - nowa jakość w client-side development
Tomasz Głogosz: SharePoint Framework - nowa jakość w client-side development
 
4Developers 2015: Szybciej niż Struś Pędziwiatr - WebSockets w aplikacjach we...
4Developers 2015: Szybciej niż Struś Pędziwiatr - WebSockets w aplikacjach we...4Developers 2015: Szybciej niż Struś Pędziwiatr - WebSockets w aplikacjach we...
4Developers 2015: Szybciej niż Struś Pędziwiatr - WebSockets w aplikacjach we...
 
Wydajny frontend 2024 - nowości optymalizacyjne
Wydajny frontend 2024 - nowości optymalizacyjneWydajny frontend 2024 - nowości optymalizacyjne
Wydajny frontend 2024 - nowości optymalizacyjne
 
Testowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackTestowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStack
 
Platforma Kontentowa
Platforma KontentowaPlatforma Kontentowa
Platforma Kontentowa
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 
Jak nadążyć za światem front-endu?
Jak nadążyć za światem front-endu?Jak nadążyć za światem front-endu?
Jak nadążyć za światem front-endu?
 
RxJS okiem doświadczonego inżyniera - Angular Warsaw #13
RxJS okiem doświadczonego inżyniera - Angular Warsaw #13RxJS okiem doświadczonego inżyniera - Angular Warsaw #13
RxJS okiem doświadczonego inżyniera - Angular Warsaw #13
 
Trendy na rok 2015
Trendy na rok 2015Trendy na rok 2015
Trendy na rok 2015
 
Webinar - Podstawy Node.js
Webinar - Podstawy Node.jsWebinar - Podstawy Node.js
Webinar - Podstawy Node.js
 
Przyszłość c# 6.0 i nawet c# 7.0
Przyszłość c# 6.0 i nawet c# 7.0 Przyszłość c# 6.0 i nawet c# 7.0
Przyszłość c# 6.0 i nawet c# 7.0
 

(node.js) Web development - prościej (pl)