Transcript
Page 2: Cordova: un viaggio di sola andata

Cordova: un viaggio di sola andataSuggerimenti e buone pratiche per lo sviluppo di app ibride con Apache Cordova

Prato

Front

End

12

Dicembre

2017

SOFTEC

Prato

Page 3: Cordova: un viaggio di sola andata

Hello World!Diego La Monica

https://diegolamonica.info

Page 4: Cordova: un viaggio di sola andata

Hello World!

Full Stack Developer

Diego La Monica

https://diegolamonica.info

Page 5: Cordova: un viaggio di sola andata

Hello World!

Full Stack Developer

Owner @ toSend.it

Diego La Monica

https://diegolamonica.info

Page 6: Cordova: un viaggio di sola andata

Hello World!

Full Stack Developer

Owner @ toSend.it

Web/Mobile App Developer

Diego La Monica

https://diegolamonica.info

Page 7: Cordova: un viaggio di sola andata

Hello World!

Full Stack Developer

Owner @ toSend.it

Web/Mobile App Developer

Parlo molto di tecnologia… Diego La Monica

https://diegolamonica.info

Page 8: Cordova: un viaggio di sola andata

Hello World!

Full Stack Developer

Owner @ toSend.it

Web/Mobile App Developer

Parlo molto di tecnologia…

… ma solo di quello che so!

Diego La Monica

https://diegolamonica.info

Page 9: Cordova: un viaggio di sola andata

Hello World!

Full Stack Developer

Owner @ toSend.it

Web/Mobile App Developer

Parlo molto di tecnologia…

… ma solo di quello che so!

Diego La Monica

Twitter: @jast

Page 10: Cordova: un viaggio di sola andata

Incipt

[…] Il mondo è cambiato. Lo sento nell'acqua.

Lo sento nella terra. Lo avverto nell'aria. Molto

di ciò che era si è perduto, perché ora non vive

nessuno che lo ricorda. […]

Page 11: Cordova: un viaggio di sola andata

A.D. 2011 Adobe.

acquisisce Nitobi.

Page 12: Cordova: un viaggio di sola andata

Cloud CompilerAcquisiti i diritti da Adobe con il

nome PhoneGap

Codice SorgenteDonato ad Apache Foundation e

viene battezzato infineApache Cordova

Page 13: Cordova: un viaggio di sola andata

Tutto ebbe inizio con la forgiatura dei grandi Anelli.

[…] Tre furono dati agli elfi, gli

esseri immortali più saggi e leali

di tutti. […]

Page 14: Cordova: un viaggio di sola andata

Ionic

Page 15: Cordova: un viaggio di sola andata

IonicBuilt on top of Angular

Ionic is a front-end SDK for building cross-platform mobile apps. Built on top of Angular, Ionic also provides a platform for integrating services like push notifications and analytics.

Page 16: Cordova: un viaggio di sola andata

Tutto ebbe inizio con la forgiatura dei grandi Anelli.

[…] Sette ai re dei nani, grandi

minatori e costruttori di città

nelle montagne. […]

Page 17: Cordova: un viaggio di sola andata

Ionic

Cocoon

Page 18: Cordova: un viaggio di sola andata

Cocoonis focused on providing

the best webview engines

Cocoon is a Cordova based cloud service for building native HTML5 apps and games. Cocoon is focused on providing the best webview engines and features like Canvas+, JS encryption or a custom Developer App.

Page 19: Cordova: un viaggio di sola andata

Tutto ebbe inizio con la forgiatura dei grandi Anelli.

[…] E nove, nove Anelli furono dati alla razza degli

uomini che più di qualunque cosa desiderano il

potere. Perché in questi anelli erano sigillati la

forza e la volontà di governare tutte le razze. […]

Page 20: Cordova: un viaggio di sola andata

Ionic Adobe PhoneGap

Cocoon

Page 21: Cordova: un viaggio di sola andata

Adobe PhoneGap the original and most popular distribution of

Apache Cordova

PhoneGap is the original and most popular distribution of Apache Cordova. Turn your HTML, CSS and JavaScript into an app on your device in minutes using our simple desktop and developer apps.

Page 22: Cordova: un viaggio di sola andata

[…] Ma tutti loro furono ingannati, perché venne creato un altro

anello. Nella terra di Mordor, tra le fiamme del Monte Fato,

Sauron, l'Oscuro Signore, forgiò in segreto un Anello sovrano, per

controllare tutti gli altri e in questo anello riversò la sua crudeltà,

la sua malvagità e la sua volontà di dominare ogni forma di vita:

un Anello per domarli tutti.[…]

Page 23: Cordova: un viaggio di sola andata

Ionic Adobe PhoneGap

Cocoon Cordova CLI

Page 24: Cordova: un viaggio di sola andata
Page 25: Cordova: un viaggio di sola andata

Apache Cordova

Le App sviluppate con Apache Cordova sono scritte

in HTML, CSS e Javascript e sono in grado di

accedere anche alle funzionalità native del device.

Page 26: Cordova: un viaggio di sola andata

Stesso code-base per tutte le piattaforme supportate

=

Page 27: Cordova: un viaggio di sola andata

Esperimenti sociali

Qual è la risposta giusta?

a) 1 = Android - 2 = iPhone

b) 1 = iPhone - 2 = Android

c) Entrambe Android

d) Entrambe iPhone

21

Page 28: Cordova: un viaggio di sola andata

Esperimenti sociali

Qual è la risposta giusta?

❌ 1 = Android - 2 = iPhone

✔ 1 = iPhone - 2 = Android

❌ Entrambe Android

❌ Entrambe iPhone

21

iPho

ne

Andr

oid

Page 29: Cordova: un viaggio di sola andata

Qual è la risposta giusta?

a) 1 = Android - 2 = iPhone

b) 1 = iPhone - 2 = Android

c) Entrambe Android

d) Entrambe iPhone

Esperimenti sociali

21

Page 30: Cordova: un viaggio di sola andata

Esperimenti sociali

Qual è la risposta giusta?

✔ 1 = Android - 2 = iPhone

❌ 1 = iPhone - 2 = Android

❌ Entrambe Android

❌ Entrambe iPhone

21

Andr

oid

iPho

ne

Page 31: Cordova: un viaggio di sola andata

Regola #1. Identificare il device

Page 32: Cordova: un viaggio di sola andata

Questo giorno non appartiene a un uomo solo, ma a tutti. Insieme ricostruiamo questo mondo, da poter condividere nei giorni di pace.

Aragorn - Il signore degli anelli - Il ritorno del re

Page 33: Cordova: un viaggio di sola andata

Command Linecordova plugin add cordova-plugin-device

Javascriptvar deviceName = device

.platform

.toLowerCase()

.replace( '-', '' );document

.querySelector('body')

.classList.add(deviceName);

Page 34: Cordova: un viaggio di sola andata

…<body class="android">

… </body>

…<body class="ios">

… </body>

…<body class="windows">

… </body>

body.android a.back-button,body.windows a.back-button{

display: none;}body.windows{ background-image:

url(images/windows.png);}body.android{

background-image: url(images/android.png);

}body.ios{

background-image: url(images/apple.png);

}

Page 35: Cordova: un viaggio di sola andata

Visualizzazione esclusiva

Se si hanno elementi specifici per un device si visualizzano

solo quando serve.

body:not(.ios) .ios-only,

body:not(.android) .android-only,

body:not(.windows) .windows-only{

display: none;

}

...

Page 36: Cordova: un viaggio di sola andata

Regola #2.Ottimizzare il DOM

Page 37: Cordova: un viaggio di sola andata

Non posso portare l'anello per voi.. ma posso portare voi!Sam - Il signore degli anelli - Le due torri

Page 38: Cordova: un viaggio di sola andata

Document Object Modelhttps://giuseppetoto.it/sencha-touch-2-sviluppare-applicazioni-mobile-multipiattaforma-4a5a55eacae3

Page 39: Cordova: un viaggio di sola andata

The HTML DOM is always tree-structured - which is allowed by the structure of HTML document. This is cool because we can traverse trees fairly easily. Unfortunately, easily doesn’t mean quickly here.

http://reactkungfu.com/2015/10/the-difference-between-virtual-dom-and-dom/

Page 40: Cordova: un viaggio di sola andata

DOM complesso● Richiesta maggiore di

potenza computazionale● Deterioramento delle

performance applicative

DOM leggero● Minore necessità di potenza

computazionale● Applicazione performante

Page 41: Cordova: un viaggio di sola andata

Virtualizzazione del DOM

● Rimuovere dalla pagina i contenuti che non sono visibili a schermo

DOM leggeroI contenuti sono comunque disponibili ma non renderizzati.

Esempio:

https://github.com/sergi/virtual-list

Page 42: Cordova: un viaggio di sola andata

Regola #3.Razionalizzare le differenze

Page 43: Cordova: un viaggio di sola andata

Possiamo soltanto decidere cosa fare con il tempo che ci è stato concesso…Gandalf - Il signore degli anelli - La compagnia dell’anello

Page 44: Cordova: un viaggio di sola andata

Uniformare il codice

Per comportamenti differenti, bisogna trovare il minimo

comune multiplo.

function base64toFile( buffer, file){

/*

* alcuni device forniscono il base64

* con il data-uri

* data:image/gif;base64,<contenuto>

*/

buffer = buffer.replace(/^[^,]*,/,'');

/*

* Codice comune a tutti i device

*/

}

Page 45: Cordova: un viaggio di sola andata

Regola #4.Essere comunicativi

Page 46: Cordova: un viaggio di sola andata

Ti vedo!!!Sauron - Il signore degli anelli - Il ritorno del re

Page 47: Cordova: un viaggio di sola andata

Avvisare dei tempi di attesa

Se l’applicazione richiede tempo per svolgere un’operazione,

comunicarlo all’utente.

Page 48: Cordova: un viaggio di sola andata

Avvisare dei tempi di attesa

Se l’applicazione richiede tempo per svolgere un’operazione,

comunicarlo all’utente.

Page 49: Cordova: un viaggio di sola andata

Percezione di non funzionamento

Potrebbe essere mostrata per diversi secondi un’interfaccia

vuota oppure l’interfaccia precedente con effetto freeze

zzz...

Page 50: Cordova: un viaggio di sola andata

Percezione di non funzionamento

L’utente si sente frustrato perché non riesce a conseguire il

proprio obiettivo

zzz… zzz…

Page 51: Cordova: un viaggio di sola andata

Percezione di non funzionamento

L’utente si sente frustrato perché non riesce a conseguire il

proprio obiettivo

zzz… zzz…

Page 52: Cordova: un viaggio di sola andata

Percezione di non funzionamento

L’utente si sente frustrato perché non riesce a conseguire il

proprio obiettivo

zzz… zzz…

Page 53: Cordova: un viaggio di sola andata

Percezione di non funzionamento

L’utente si sente frustrato perché non riesce a conseguire il

proprio obiettivo

zzz… zzz…

Page 54: Cordova: un viaggio di sola andata

Percezione di non funzionamento

L’utente si sente frustrato perché non riesce a conseguire il

proprio obiettivo

zzz… zzz…

Page 55: Cordova: un viaggio di sola andata

Percezione di non funzionamento

L’utente si sente frustrato perché non riesce a conseguire il

proprio obiettivo

zzz… zzz…

Page 56: Cordova: un viaggio di sola andata

Percezione di non funzionamento

L’utente si sente frustrato perché non riesce a conseguire il

proprio obiettivo

zzz… zzz…

Page 57: Cordova: un viaggio di sola andata

Percezione di non funzionamentoTalvolta decide di non voler continuare oltre nell’utilizzo

dell’app.Un utente insoddisfatto è un

utente perso!

zzz… zzz… zzz…

Page 58: Cordova: un viaggio di sola andata

Funziona… ma… Finalmente un po’ di luce

Page 59: Cordova: un viaggio di sola andata

Riavvolgiamo il nastro.

Page 60: Cordova: un viaggio di sola andata

Regola #4.Essere comunicativi

Page 61: Cordova: un viaggio di sola andata

Avvisare dei tempi di attesa

Se l’applicazione richiede tempo per svolgere un’operazione,

comunicarlo all’utente.

Page 62: Cordova: un viaggio di sola andata

Avvisare dei tempi di attesa

L’utente è consapevole che l’app non è bloccata.

Page 63: Cordova: un viaggio di sola andata

È maggiormente disponibile all’attesa

Gli stessi secondi di attesa risulteranno più brevi.

Page 64: Cordova: un viaggio di sola andata

È maggiormente disponibile all’attesa

Tutte le trasmissioni verso il server, avviate a seguito di

interazione tra l’utente e l’app, devono essere evidenti per

l’utente.

Page 65: Cordova: un viaggio di sola andata

Avviso su richieste AJAX

<body>… <div id="ajax-loader">

Caricamento in corso… </div>

</body>

$( document )

.ajaxStart( function () {

$( 'body' ).addClass( 'loading' );

} )

.ajaxStop( function () {

$( 'body' ).removeClass( 'loading' );

} );

Page 66: Cordova: un viaggio di sola andata

Avviso su richieste AJAX

<body class="loading">… <div id="ajax-loader">

Caricamento in corso… </div>

</body>

#ajax-loader{

display: none;

position: fixed;

top: 0;

right: 0;

bottom: 0;

left: 0;

}

body.loading #ajax-loader{

display: block;

opacity: 0.4;

}

Page 67: Cordova: un viaggio di sola andata

Altri suggerimenti?.Ritroviamoci al prossimo meetup!


Recommended