Knockout.js

24
Knockout js Simplify dynamic Javascript UIs by applying the Model View ViewModel Pattern”

description

Applicazione del pattern MVVM lato client con Knockout.js

Transcript of Knockout.js

Page 1: Knockout.js

Knockout js

“Simplify dynamic Javascript UIs by applying the Model View ViewModel Pattern”

Page 2: Knockout.js

Premessa

Negli ultimi anni le applicazioni web

sono diventate sempre più complesse

Page 3: Knockout.js

Con l’introduzione di AJAX le abbiamo

fatte andare sempre più veloci

Page 4: Knockout.js

Knockout.js

Abbiamo cominciato a far lavorare

di più il browser spostando la

logica dal server al client

Page 5: Knockout.js

E ci siamo trovati con vecchi

problemi che pensavamo di

aver risolto …

Page 6: Knockout.js

Knockout.js Knockout è un’API JavaScript che facilita la costruzione di interfacce utente introducendo il pattern MVVM lato client

Model View ViewModel

Page 7: Knockout.js

MVC vs MVVM Ci è stato detto più volte che il modo migliore per sviluppare una applicazione web è quello di seguire il pattern MVC

Page 8: Knockout.js

MVC vs MVVM MVVM si differenzia da MVC perché introduce il concetto di ViewModel, un oggetto che gestisce le interazioni tra il Model e gli elementi della View

Page 9: Knockout.js

MVC vs MVVM MVVM non è alternativo a MVC, lo completa, in quanto permette di demandare al client le operazioni che interessano soltanto la modifica degli elementi della View

Page 10: Knockout.js

Knockout.js In questo senso Knockout ci permette di implementare facilmente MVVM riducendo al minimo il codice da scrivere

Page 11: Knockout.js

Knockout.js Caratteristiche principali

Page 12: Knockout.js

Declarative binding Associazione tra le proprietà del ViewModel e gli elementi di una View attraverso una sintassi dichiarativa all’interno dell’attributo data-bind

Page 13: Knockout.js

Definiamo il ViewModel 1 Realizziamo ad esempio un viewModel che permetta di visualizzare le caratteristiche di una playlist

E’ un semplice oggetto JavaScript con proprietà e metodi

Page 14: Knockout.js

Associamo le proprietà del ViewModel agli elementi della View

2

Proprietà del ViewModel

Attributo dell’elemento della View

Page 15: Knockout.js

Ordiniamo a knockout di applicare le associazioni

3

Deve essere fatto dopo il caricamento del DOM

Page 16: Knockout.js

Automatic UI refresh Grazie alla definizione di oggetti “observable” knockout mantiene sincronizzata l’interfaccia utente con i valori del ViewModel

Page 17: Knockout.js

ko.observable( ) 4

Se modifico il valore tramite il campo input il titolo rifletterà la modifica

Page 18: Knockout.js

Dependency tracking Ogni volta che un elemento della View o un’altra proprietà del ViewModel fanno riferimento ad un observable knockout registra una dipendenza che risolve automaticamente secondo lo schema publish-subscribe

Page 19: Knockout.js

ko.computed( ) 5

Campo calcolato che dipende dal valore di altre proprietà, ci pensa knockout a gestirne l’aggiornamento al modificare di una delle sue dipendenze

Page 20: Knockout.js

Templating Se il normale html non basta ed il codice diventa ripetitivo possiamo ricorrere ai template

Page 21: Knockout.js

template: { name: … 6

Nome del template

Page 22: Knockout.js

Knockout + MVC In qualche modo le informazioni devono passare da e per il server. In ASP.NET MVC3 lo facciamo con JSON, AJAX e il Model Binder

Page 23: Knockout.js

Slide 1: http://www.flickr.com/photos/jnyemb/5200175187/in/photostream/

Slide 2: http://www.flickr.com/photos/theilr/345056969/in/photostream/

Slide 3: http://www.flickr.com/photos/damianmorysfotos/4388501292/in/photostream/

Slide 5: http://www.flickr.com/photos/su-lin/131551438/in/photostream/

Credits

Le immagini contenute in questa presentazione hanno licenza Creative Commons

Page 24: Knockout.js

Thank You

MANUEL SCAPOLAN website: www.manuelscapolan.it twitter: manuelscapolan e-mail: [email protected]