SlideShare una empresa de Scribd logo
1 de 32
Descargar para leer sin conexión
Jak psát mobilní webové
       aplikace.
      Daniel Steigerwald
Kdo jsem
●   software gardener
●   školím, píšu, přednáším
●   evangelizuji Google Closure, Coffeescript, Stylus, TDD
●   podílím se na zajímavých projektech (Proactify)
Obsah
● UX
● Architektura
● Implementace
UX
● lidé používají mobil všude
● post pc éra
● omezený výkon, rozlišení, ovládání
UX - konsekvence
● omezené možnosti přirozeně vedou k MVP
● MVP - Minimal Viable Product

  Oč   méně fičur, o to lépe musejí fungovat.
UX
● nativní nebo webové (HTML5) apps?
● je dobré znát "zone of awesome" obou
  technologií
UX - Nativní aplikace
●   rychlé
●   touch a gesta
●   offline z principu
●   eye candy
●   shop
●   přístup k HW
A webové aplikace?
Konvergují.
UX - Webové aplikace
●   stále rychlejší
●   touch a gesta také
●   offline možný a preferovaný
●   eye candy #css3
●   shop (možný)
●   přístup k HW (otázka času)
Navíc...
Zone of awesome webových apps
●   web browser je vlastně shop
●   instalace zadáním URL
●   odinstalace zavřením tabu
●   linkování stavu, historie
●   konzistentní back button
●   více instancí současně
●   žádné licenční poplatky třetí straně
Proto webové aplikace
nesmí imitovat nativní.
Proto webové aplikace nesmí
imitovat nativní*
● vlastní tlačítka zpět, špatně
● fancy animace
● imitace nativní aplikace je zlo

* pokud tedy neděláte platform specific product, pro poslední release, a máte na to moře času
Architektura
● Tlustý nebo tenký klient?
● Server's dead baby, Server's dead.
● Catch all versus elite only strategy
Architektura
Tlustý nebo tenký klient?
Architektura
Tlustý klient
● cestuje HTML

Tenký klient
● cestuje JSON
Architektura
Co je na tenkém klientu dobré
● rychlé na vývoj
● indexovatelný web
● a tím to končí
Architektura
Co je na tenkém klientu špatné
● limitované UX
● round tripy
● těsná vazba mezi client - server
  ○ duplikování kódu
  ○ náročnost pro programátory
  ○ nutnost paralelního vývoje
Architektura
Co je na tlustém klientu dobré
● future proof
● rychlost
● nezávyslost na serveru
● offline first!
   ○ local storage
   ○ database storage
   ○ synchronizace
● UI client only
Architektura
Co je na tlustém klientu problematické
● nutnost vědět jak na to
  ○ dev stack ftw
● fragmentace
● reimplementace browseru
Architektura
Reimplementace browseru?

●   historie a back button
●   práce se scroll position
●   asynchronní routing
●   last click win
●   persistence formulářů (localstorage)
Architektura
Server's dead baby, Server's dead.

  "If you're thinking about the server when
  you'are writing a web app, you're doing it
  wrong. Develop as an offline app, then add
  server." goo.gl/foO2S
Architektura
Server reincarnation. Server je
● kontrakt
● storage
● model
Architektura
Catch all or elite only strategy
● kterou zvolit
● jedna app = více UI
Implementace
● HR
● JS knihovny
● Pasti a pastičky
Implementace
HR

"Je těžké nabrat lidi, co umí. Snažší je nabrat
lidi, co chtějí umět."
Implementace
HR - Paradox Javascriptu

Pro firmy: JS umí trochu skoro každý,
programátora není nemožné sehnat.

Pro zaměstnance: Dobře JS neumí skoro
nikdo, naučte se ho, a firmy vám utrhnou ruce.
Implementace
JS knihovny
● jakou JS knihovnu?
  ○ zepto
  ○ touch and gestures
● proč je Google Closure na mobilní
  development nejlepší?
Implementace
AJAX
  ○ timeout
  ○ preload
  ○ no connection


"Pokud neumíte udělat timeout u async
operací, tak se do AJAXu vůbec nepouštějte.
Čumět 5 minut na spinner nikoho nebaví. A F5
udělá bůhvíco." @spazef0rze
Implementace
●   mobile html5 boilerplate
●   animace a HW akcelerace
●   -webkit-overflow-scrolling: touch;
●   HTML5 form fields
●   .focus() does not work*
●   hide address bar with CSS scrollability
Děkuji za pozornost
    daniel@steigerwald.cz
  http://javascript-skoleni.cz

Más contenido relacionado

Similar a Daniel Steigerwald: Jak psát mobilní webové aplikace

User eXitus - Nenechte sve navstevniky odchazet BarCamp 2011 Ostrava
User eXitus - Nenechte sve navstevniky odchazet BarCamp 2011 OstravaUser eXitus - Nenechte sve navstevniky odchazet BarCamp 2011 Ostrava
User eXitus - Nenechte sve navstevniky odchazet BarCamp 2011 Ostravajirikomar
 
Internship u Google - jaké to bylo a jak se tam dostat + soutěž o ceny
Internship u Google - jaké to bylo a jak se tam dostat + soutěž o cenyInternship u Google - jaké to bylo a jak se tam dostat + soutěž o ceny
Internship u Google - jaké to bylo a jak se tam dostat + soutěž o cenyDavid Vávra
 
Hobby Developer 3.0: Tipy a triky pro web
Hobby Developer 3.0: Tipy a triky pro webHobby Developer 3.0: Tipy a triky pro web
Hobby Developer 3.0: Tipy a triky pro webTomáš Muchka
 
Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)Pavel Růžička
 
Pohled na mobilní bankovní aplikace shora
Pohled na mobilní bankovní aplikace shoraPohled na mobilní bankovní aplikace shora
Pohled na mobilní bankovní aplikace shoraPetr Dvorak
 
Pavel Cvetler: Jeden kód, co vládne všem? Žádný problém pro Android i iOS
Pavel Cvetler: Jeden kód, co vládne všem? Žádný problém pro Android i iOSPavel Cvetler: Jeden kód, co vládne všem? Žádný problém pro Android i iOS
Pavel Cvetler: Jeden kód, co vládne všem? Žádný problém pro Android i iOSmdevtalk
 
Čtvrtkon #71 - Marian Benčat - Angular a NativeScript
Čtvrtkon #71 - Marian Benčat - Angular a NativeScriptČtvrtkon #71 - Marian Benčat - Angular a NativeScript
Čtvrtkon #71 - Marian Benčat - Angular a NativeScriptCtvrtkoncz
 
Jádro aplikace, rozhraní webových služeb a prezentační vrstva pro systém Part...
Jádro aplikace, rozhraní webových služeb a prezentační vrstva pro systém Part...Jádro aplikace, rozhraní webových služeb a prezentační vrstva pro systém Part...
Jádro aplikace, rozhraní webových služeb a prezentační vrstva pro systém Part...Antonín Neumann
 
Jan Barbořík - Tvoříme fotografický web ve wordpressu aneb jak na funkční web?
Jan Barbořík - Tvoříme fotografický web ve wordpressu aneb jak na funkční web? Jan Barbořík - Tvoříme fotografický web ve wordpressu aneb jak na funkční web?
Jan Barbořík - Tvoříme fotografický web ve wordpressu aneb jak na funkční web? Jan Barbořík
 
Ochutnávka studie WebTop100: Srovnání kvality českých webů a dalších digitáln...
Ochutnávka studie WebTop100: Srovnání kvality českých webů a dalších digitáln...Ochutnávka studie WebTop100: Srovnání kvality českých webů a dalších digitáln...
Ochutnávka studie WebTop100: Srovnání kvality českých webů a dalších digitáln...Sherpas
 
Ondřej Hlaváček: Životní cyklus featury
Ondřej Hlaváček: Životní cyklus featuryOndřej Hlaváček: Životní cyklus featury
Ondřej Hlaváček: Životní cyklus featuryDevelcz
 
Protože design není dekorace
Protože design není dekoraceProtože design není dekorace
Protože design není dekoraceJan Brašna
 
SEO a UX: Rivalové, nebo parťáci? Rozsekneme to! | SEORestart | 16. 6. 2017
SEO a UX: Rivalové, nebo parťáci? Rozsekneme to! | SEORestart | 16. 6. 2017SEO a UX: Rivalové, nebo parťáci? Rozsekneme to! | SEORestart | 16. 6. 2017
SEO a UX: Rivalové, nebo parťáci? Rozsekneme to! | SEORestart | 16. 6. 2017Jan Kvasnička
 
Poskytování aplikací z cloudu
Poskytování aplikací z clouduPoskytování aplikací z cloudu
Poskytování aplikací z clouduJaroslav Smarda
 
Responzivní webdesign (pro MS Fest)
Responzivní webdesign (pro MS Fest)Responzivní webdesign (pro MS Fest)
Responzivní webdesign (pro MS Fest)Martin Michálek
 

Similar a Daniel Steigerwald: Jak psát mobilní webové aplikace (20)

User eXitus - Nenechte sve navstevniky odchazet BarCamp 2011 Ostrava
User eXitus - Nenechte sve navstevniky odchazet BarCamp 2011 OstravaUser eXitus - Nenechte sve navstevniky odchazet BarCamp 2011 Ostrava
User eXitus - Nenechte sve navstevniky odchazet BarCamp 2011 Ostrava
 
TNPW2-2013-02
TNPW2-2013-02TNPW2-2013-02
TNPW2-2013-02
 
Internship u Google - jaké to bylo a jak se tam dostat + soutěž o ceny
Internship u Google - jaké to bylo a jak se tam dostat + soutěž o cenyInternship u Google - jaké to bylo a jak se tam dostat + soutěž o ceny
Internship u Google - jaké to bylo a jak se tam dostat + soutěž o ceny
 
Hobby Developer 3.0: Tipy a triky pro web
Hobby Developer 3.0: Tipy a triky pro webHobby Developer 3.0: Tipy a triky pro web
Hobby Developer 3.0: Tipy a triky pro web
 
TNPW2-2014-05
TNPW2-2014-05TNPW2-2014-05
TNPW2-2014-05
 
Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)
 
Pohled na mobilní bankovní aplikace shora
Pohled na mobilní bankovní aplikace shoraPohled na mobilní bankovní aplikace shora
Pohled na mobilní bankovní aplikace shora
 
Pavel Cvetler: Jeden kód, co vládne všem? Žádný problém pro Android i iOS
Pavel Cvetler: Jeden kód, co vládne všem? Žádný problém pro Android i iOSPavel Cvetler: Jeden kód, co vládne všem? Žádný problém pro Android i iOS
Pavel Cvetler: Jeden kód, co vládne všem? Žádný problém pro Android i iOS
 
Čtvrtkon #71 - Marian Benčat - Angular a NativeScript
Čtvrtkon #71 - Marian Benčat - Angular a NativeScriptČtvrtkon #71 - Marian Benčat - Angular a NativeScript
Čtvrtkon #71 - Marian Benčat - Angular a NativeScript
 
TNPW2-2016-05
TNPW2-2016-05TNPW2-2016-05
TNPW2-2016-05
 
Jádro aplikace, rozhraní webových služeb a prezentační vrstva pro systém Part...
Jádro aplikace, rozhraní webových služeb a prezentační vrstva pro systém Part...Jádro aplikace, rozhraní webových služeb a prezentační vrstva pro systém Part...
Jádro aplikace, rozhraní webových služeb a prezentační vrstva pro systém Part...
 
Jan Barbořík - Tvoříme fotografický web ve wordpressu aneb jak na funkční web?
Jan Barbořík - Tvoříme fotografický web ve wordpressu aneb jak na funkční web? Jan Barbořík - Tvoříme fotografický web ve wordpressu aneb jak na funkční web?
Jan Barbořík - Tvoříme fotografický web ve wordpressu aneb jak na funkční web?
 
Ochutnávka studie WebTop100: Srovnání kvality českých webů a dalších digitáln...
Ochutnávka studie WebTop100: Srovnání kvality českých webů a dalších digitáln...Ochutnávka studie WebTop100: Srovnání kvality českých webů a dalších digitáln...
Ochutnávka studie WebTop100: Srovnání kvality českých webů a dalších digitáln...
 
Ondřej Hlaváček: Životní cyklus featury
Ondřej Hlaváček: Životní cyklus featuryOndřej Hlaváček: Životní cyklus featury
Ondřej Hlaváček: Životní cyklus featury
 
Protože design není dekorace
Protože design není dekoraceProtože design není dekorace
Protože design není dekorace
 
SEO a UX: Rivalové, nebo parťáci? Rozsekneme to! | SEORestart | 16. 6. 2017
SEO a UX: Rivalové, nebo parťáci? Rozsekneme to! | SEORestart | 16. 6. 2017SEO a UX: Rivalové, nebo parťáci? Rozsekneme to! | SEORestart | 16. 6. 2017
SEO a UX: Rivalové, nebo parťáci? Rozsekneme to! | SEORestart | 16. 6. 2017
 
Poskytování aplikací z cloudu
Poskytování aplikací z clouduPoskytování aplikací z cloudu
Poskytování aplikací z cloudu
 
TNPW2-2014-02
TNPW2-2014-02TNPW2-2014-02
TNPW2-2014-02
 
TNPW2-2016-02
TNPW2-2016-02TNPW2-2016-02
TNPW2-2016-02
 
Responzivní webdesign (pro MS Fest)
Responzivní webdesign (pro MS Fest)Responzivní webdesign (pro MS Fest)
Responzivní webdesign (pro MS Fest)
 

Más de Develcz

Daniel Steigerwald: WYSIWYG je šik! (když funguje)
Daniel Steigerwald: WYSIWYG je šik! (když funguje)Daniel Steigerwald: WYSIWYG je šik! (když funguje)
Daniel Steigerwald: WYSIWYG je šik! (když funguje)Develcz
 
Martin Hassman: Jak se tvoří addony pro World of Warcraft
Martin Hassman: Jak se tvoří addony pro World of WarcraftMartin Hassman: Jak se tvoří addony pro World of Warcraft
Martin Hassman: Jak se tvoří addony pro World of WarcraftDevelcz
 
Ondřej Voves: Jak přepsat monolit do mikroslužeb
Ondřej Voves: Jak přepsat monolit do mikroslužebOndřej Voves: Jak přepsat monolit do mikroslužeb
Ondřej Voves: Jak přepsat monolit do mikroslužebDevelcz
 
Marcel Šulek: Zpraste svoje kódy
Marcel Šulek: Zpraste svoje kódyMarcel Šulek: Zpraste svoje kódy
Marcel Šulek: Zpraste svoje kódyDevelcz
 
Michal Illich: Vývojáři staví letadlo
Michal Illich: Vývojáři staví letadloMichal Illich: Vývojáři staví letadlo
Michal Illich: Vývojáři staví letadloDevelcz
 
Ondřej Kokeš: Zpracování dat z veřejných zdrojů
Ondřej Kokeš: Zpracování dat z veřejných zdrojůOndřej Kokeš: Zpracování dat z veřejných zdrojů
Ondřej Kokeš: Zpracování dat z veřejných zdrojůDevelcz
 
Patrick Zandl: Open source software, hardware, 3D tiskárny a tvrdý business -...
Patrick Zandl: Open source software, hardware, 3D tiskárny a tvrdý business -...Patrick Zandl: Open source software, hardware, 3D tiskárny a tvrdý business -...
Patrick Zandl: Open source software, hardware, 3D tiskárny a tvrdý business -...Develcz
 
Štěpán Bechynský: Hardware pro IoT projekty nejen pro hobby, ale i pro průmysl
Štěpán Bechynský: Hardware pro IoT projekty nejen pro hobby, ale i pro průmyslŠtěpán Bechynský: Hardware pro IoT projekty nejen pro hobby, ale i pro průmysl
Štěpán Bechynský: Hardware pro IoT projekty nejen pro hobby, ale i pro průmyslDevelcz
 
Tomáš Vondra: Paralelizace dotazu a partitioning v PostgreSQL
Tomáš Vondra: Paralelizace dotazu a partitioning v PostgreSQLTomáš Vondra: Paralelizace dotazu a partitioning v PostgreSQL
Tomáš Vondra: Paralelizace dotazu a partitioning v PostgreSQLDevelcz
 
Tomáš Zvěřina: Flutter.io - multiplatformní vývoj mobilních aplikací
Tomáš Zvěřina: Flutter.io - multiplatformní vývoj mobilních aplikacíTomáš Zvěřina: Flutter.io - multiplatformní vývoj mobilních aplikací
Tomáš Zvěřina: Flutter.io - multiplatformní vývoj mobilních aplikacíDevelcz
 
Jakub Vrána: Dokazatelná bezpečnost
Jakub Vrána: Dokazatelná bezpečnostJakub Vrána: Dokazatelná bezpečnost
Jakub Vrána: Dokazatelná bezpečnostDevelcz
 
Roman Schejbal: From Madness To Reason
Roman Schejbal: From Madness To ReasonRoman Schejbal: From Madness To Reason
Roman Schejbal: From Madness To ReasonDevelcz
 
Michal Illich: Zuri aneb Vývojáři staví letadlo
Michal Illich: Zuri aneb Vývojáři staví letadloMichal Illich: Zuri aneb Vývojáři staví letadlo
Michal Illich: Zuri aneb Vývojáři staví letadloDevelcz
 
Ondřej Šika: Docker, Traefik a CI - Mějte nasazené všeny větve na kterých pra...
Ondřej Šika: Docker, Traefik a CI - Mějte nasazené všeny větve na kterých pra...Ondřej Šika: Docker, Traefik a CI - Mějte nasazené všeny větve na kterých pra...
Ondřej Šika: Docker, Traefik a CI - Mějte nasazené všeny větve na kterých pra...Develcz
 
David Majda: Autoformátování kódu
David Majda: Autoformátování kóduDavid Majda: Autoformátování kódu
David Majda: Autoformátování kóduDevelcz
 
David Grudl: Open source: The Good, the Bad and the Ugly
David Grudl: Open source: The Good, the Bad and the UglyDavid Grudl: Open source: The Good, the Bad and the Ugly
David Grudl: Open source: The Good, the Bad and the UglyDevelcz
 
Ondřej Machulda: Začíná zlatá doba end-to-end testů!
Ondřej Machulda: Začíná zlatá doba end-to-end testů!Ondřej Machulda: Začíná zlatá doba end-to-end testů!
Ondřej Machulda: Začíná zlatá doba end-to-end testů!Develcz
 
Adam Kudrna: Headless WordPress/Drupal
Adam Kudrna: Headless WordPress/DrupalAdam Kudrna: Headless WordPress/Drupal
Adam Kudrna: Headless WordPress/DrupalDevelcz
 
Jaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světě
Jaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světěJaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světě
Jaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světěDevelcz
 
Martin Michálek: Bootstrap 4 - Jednou to muselo přijít
Martin Michálek: Bootstrap 4 - Jednou to muselo přijítMartin Michálek: Bootstrap 4 - Jednou to muselo přijít
Martin Michálek: Bootstrap 4 - Jednou to muselo přijítDevelcz
 

Más de Develcz (20)

Daniel Steigerwald: WYSIWYG je šik! (když funguje)
Daniel Steigerwald: WYSIWYG je šik! (když funguje)Daniel Steigerwald: WYSIWYG je šik! (když funguje)
Daniel Steigerwald: WYSIWYG je šik! (když funguje)
 
Martin Hassman: Jak se tvoří addony pro World of Warcraft
Martin Hassman: Jak se tvoří addony pro World of WarcraftMartin Hassman: Jak se tvoří addony pro World of Warcraft
Martin Hassman: Jak se tvoří addony pro World of Warcraft
 
Ondřej Voves: Jak přepsat monolit do mikroslužeb
Ondřej Voves: Jak přepsat monolit do mikroslužebOndřej Voves: Jak přepsat monolit do mikroslužeb
Ondřej Voves: Jak přepsat monolit do mikroslužeb
 
Marcel Šulek: Zpraste svoje kódy
Marcel Šulek: Zpraste svoje kódyMarcel Šulek: Zpraste svoje kódy
Marcel Šulek: Zpraste svoje kódy
 
Michal Illich: Vývojáři staví letadlo
Michal Illich: Vývojáři staví letadloMichal Illich: Vývojáři staví letadlo
Michal Illich: Vývojáři staví letadlo
 
Ondřej Kokeš: Zpracování dat z veřejných zdrojů
Ondřej Kokeš: Zpracování dat z veřejných zdrojůOndřej Kokeš: Zpracování dat z veřejných zdrojů
Ondřej Kokeš: Zpracování dat z veřejných zdrojů
 
Patrick Zandl: Open source software, hardware, 3D tiskárny a tvrdý business -...
Patrick Zandl: Open source software, hardware, 3D tiskárny a tvrdý business -...Patrick Zandl: Open source software, hardware, 3D tiskárny a tvrdý business -...
Patrick Zandl: Open source software, hardware, 3D tiskárny a tvrdý business -...
 
Štěpán Bechynský: Hardware pro IoT projekty nejen pro hobby, ale i pro průmysl
Štěpán Bechynský: Hardware pro IoT projekty nejen pro hobby, ale i pro průmyslŠtěpán Bechynský: Hardware pro IoT projekty nejen pro hobby, ale i pro průmysl
Štěpán Bechynský: Hardware pro IoT projekty nejen pro hobby, ale i pro průmysl
 
Tomáš Vondra: Paralelizace dotazu a partitioning v PostgreSQL
Tomáš Vondra: Paralelizace dotazu a partitioning v PostgreSQLTomáš Vondra: Paralelizace dotazu a partitioning v PostgreSQL
Tomáš Vondra: Paralelizace dotazu a partitioning v PostgreSQL
 
Tomáš Zvěřina: Flutter.io - multiplatformní vývoj mobilních aplikací
Tomáš Zvěřina: Flutter.io - multiplatformní vývoj mobilních aplikacíTomáš Zvěřina: Flutter.io - multiplatformní vývoj mobilních aplikací
Tomáš Zvěřina: Flutter.io - multiplatformní vývoj mobilních aplikací
 
Jakub Vrána: Dokazatelná bezpečnost
Jakub Vrána: Dokazatelná bezpečnostJakub Vrána: Dokazatelná bezpečnost
Jakub Vrána: Dokazatelná bezpečnost
 
Roman Schejbal: From Madness To Reason
Roman Schejbal: From Madness To ReasonRoman Schejbal: From Madness To Reason
Roman Schejbal: From Madness To Reason
 
Michal Illich: Zuri aneb Vývojáři staví letadlo
Michal Illich: Zuri aneb Vývojáři staví letadloMichal Illich: Zuri aneb Vývojáři staví letadlo
Michal Illich: Zuri aneb Vývojáři staví letadlo
 
Ondřej Šika: Docker, Traefik a CI - Mějte nasazené všeny větve na kterých pra...
Ondřej Šika: Docker, Traefik a CI - Mějte nasazené všeny větve na kterých pra...Ondřej Šika: Docker, Traefik a CI - Mějte nasazené všeny větve na kterých pra...
Ondřej Šika: Docker, Traefik a CI - Mějte nasazené všeny větve na kterých pra...
 
David Majda: Autoformátování kódu
David Majda: Autoformátování kóduDavid Majda: Autoformátování kódu
David Majda: Autoformátování kódu
 
David Grudl: Open source: The Good, the Bad and the Ugly
David Grudl: Open source: The Good, the Bad and the UglyDavid Grudl: Open source: The Good, the Bad and the Ugly
David Grudl: Open source: The Good, the Bad and the Ugly
 
Ondřej Machulda: Začíná zlatá doba end-to-end testů!
Ondřej Machulda: Začíná zlatá doba end-to-end testů!Ondřej Machulda: Začíná zlatá doba end-to-end testů!
Ondřej Machulda: Začíná zlatá doba end-to-end testů!
 
Adam Kudrna: Headless WordPress/Drupal
Adam Kudrna: Headless WordPress/DrupalAdam Kudrna: Headless WordPress/Drupal
Adam Kudrna: Headless WordPress/Drupal
 
Jaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světě
Jaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světěJaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světě
Jaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světě
 
Martin Michálek: Bootstrap 4 - Jednou to muselo přijít
Martin Michálek: Bootstrap 4 - Jednou to muselo přijítMartin Michálek: Bootstrap 4 - Jednou to muselo přijít
Martin Michálek: Bootstrap 4 - Jednou to muselo přijít
 

Daniel Steigerwald: Jak psát mobilní webové aplikace

  • 1. Jak psát mobilní webové aplikace. Daniel Steigerwald
  • 2. Kdo jsem ● software gardener ● školím, píšu, přednáším ● evangelizuji Google Closure, Coffeescript, Stylus, TDD ● podílím se na zajímavých projektech (Proactify)
  • 4. UX ● lidé používají mobil všude ● post pc éra ● omezený výkon, rozlišení, ovládání
  • 5. UX - konsekvence ● omezené možnosti přirozeně vedou k MVP ● MVP - Minimal Viable Product Oč méně fičur, o to lépe musejí fungovat.
  • 6. UX ● nativní nebo webové (HTML5) apps? ● je dobré znát "zone of awesome" obou technologií
  • 7. UX - Nativní aplikace ● rychlé ● touch a gesta ● offline z principu ● eye candy ● shop ● přístup k HW
  • 10. UX - Webové aplikace ● stále rychlejší ● touch a gesta také ● offline možný a preferovaný ● eye candy #css3 ● shop (možný) ● přístup k HW (otázka času)
  • 12. Zone of awesome webových apps ● web browser je vlastně shop ● instalace zadáním URL ● odinstalace zavřením tabu ● linkování stavu, historie ● konzistentní back button ● více instancí současně ● žádné licenční poplatky třetí straně
  • 13. Proto webové aplikace nesmí imitovat nativní.
  • 14. Proto webové aplikace nesmí imitovat nativní* ● vlastní tlačítka zpět, špatně ● fancy animace ● imitace nativní aplikace je zlo * pokud tedy neděláte platform specific product, pro poslední release, a máte na to moře času
  • 15. Architektura ● Tlustý nebo tenký klient? ● Server's dead baby, Server's dead. ● Catch all versus elite only strategy
  • 17. Architektura Tlustý klient ● cestuje HTML Tenký klient ● cestuje JSON
  • 18. Architektura Co je na tenkém klientu dobré ● rychlé na vývoj ● indexovatelný web ● a tím to končí
  • 19. Architektura Co je na tenkém klientu špatné ● limitované UX ● round tripy ● těsná vazba mezi client - server ○ duplikování kódu ○ náročnost pro programátory ○ nutnost paralelního vývoje
  • 20. Architektura Co je na tlustém klientu dobré ● future proof ● rychlost ● nezávyslost na serveru ● offline first! ○ local storage ○ database storage ○ synchronizace ● UI client only
  • 21. Architektura Co je na tlustém klientu problematické ● nutnost vědět jak na to ○ dev stack ftw ● fragmentace ● reimplementace browseru
  • 22. Architektura Reimplementace browseru? ● historie a back button ● práce se scroll position ● asynchronní routing ● last click win ● persistence formulářů (localstorage)
  • 23. Architektura Server's dead baby, Server's dead. "If you're thinking about the server when you'are writing a web app, you're doing it wrong. Develop as an offline app, then add server." goo.gl/foO2S
  • 24. Architektura Server reincarnation. Server je ● kontrakt ● storage ● model
  • 25. Architektura Catch all or elite only strategy ● kterou zvolit ● jedna app = více UI
  • 26. Implementace ● HR ● JS knihovny ● Pasti a pastičky
  • 27. Implementace HR "Je těžké nabrat lidi, co umí. Snažší je nabrat lidi, co chtějí umět."
  • 28. Implementace HR - Paradox Javascriptu Pro firmy: JS umí trochu skoro každý, programátora není nemožné sehnat. Pro zaměstnance: Dobře JS neumí skoro nikdo, naučte se ho, a firmy vám utrhnou ruce.
  • 29. Implementace JS knihovny ● jakou JS knihovnu? ○ zepto ○ touch and gestures ● proč je Google Closure na mobilní development nejlepší?
  • 30. Implementace AJAX ○ timeout ○ preload ○ no connection "Pokud neumíte udělat timeout u async operací, tak se do AJAXu vůbec nepouštějte. Čumět 5 minut na spinner nikoho nebaví. A F5 udělá bůhvíco." @spazef0rze
  • 31. Implementace ● mobile html5 boilerplate ● animace a HW akcelerace ● -webkit-overflow-scrolling: touch; ● HTML5 form fields ● .focus() does not work* ● hide address bar with CSS scrollability
  • 32. Děkuji za pozornost daniel@steigerwald.cz http://javascript-skoleni.cz