XeDotNet meeting del 5 Marzo 2013
In questa sessione vedremo come Knockout.js permetta di scrivere codice JavaScript in modo pulito e organizzato, semplificando la scrittura del codice e la sua manutenzione. Come lo si utilizza KO? Quali vantaggi ci offre? Quali librerie ci vengono in aiuto? Quali sarebbe meglio evitare?
Workshop Ideare e creare Web Applications, Introduzione ad AngularJSGiovanni Buffa
Gli argomenti trattati durante il Workshop gratuito sull'ideazione e creazione di Web Applications con AngularJS:
- Metodologie innovative di ideazione e creazione di Web Applications;
- Sfide e problemi del lavoro in team;
- Introduzione ad AngularJS e alle sue componenti principali;
- Dimostrazione pratica di una WebApp
Workshop Ideare e creare Web Applications, Introduzione ad AngularJSGiovanni Buffa
Gli argomenti trattati durante il Workshop gratuito sull'ideazione e creazione di Web Applications con AngularJS:
- Metodologie innovative di ideazione e creazione di Web Applications;
- Sfide e problemi del lavoro in team;
- Introduzione ad AngularJS e alle sue componenti principali;
- Dimostrazione pratica di una WebApp
Asp.Net MVC 3 - Il Model View Controller secondo MicrosoftStefano Benedetti
Il pattern architetturale MVC (Model View Controller) favorisce la manutenzione delle applicazioni web tramite una architettura elegante ed una chiara ed esplicita separazione delle competenze, l'impiego dei più diffusi pattern di software engineering, il controllo completo dell'HTML generato e degli URL, la testabilità ed estendibilità.
In questa sessione vedremo le novità principali di Asp.Net MVC in versione 3.
La sessione è stata tenuta a SMAU Business Bologna il 9 giugno 2011
ASP.NET MVC è un framework sviluppato da Microsoft che permette di sviluppare applicazioni web utilizzando il pattern Model-View-Controller. Questo pattern, e (in questa sessione) la sua implementazione realizzata da Microsoft, si propone di apportare alcuni benefici: Maggiore controllo del markup della pagina, URL più leggibili Facilità di integrazione con librerie AJAX, chiara separazione dei ruoli/responsabilità tra layer, facilitando i test e la manutenzione dell'applicazione, supporto per test-driven development. Nella sessione andremo in dettaglio nella versione 2 di ASP.NET MVC, e con esempi pratici daremo risposta alle domande più frequenti, e a molte altre. Quando si utilizza ASP.NET MVC? Come si utilizza ASP.NET MVC? Semplifica davvero la manutenzione dell'applicazione? E' realmente testabile? Cosa guadagno ad usare ASP.NET MVC?
Rich client application: MVC4 + MVVM = Knockout.jsGiorgio Di Nardo
La sempre maggiore diffusione di device diversificati (PC, Notebook, Tablet, Smartphone, ecc.) su piattaforme diverse, rilancia l'utilizzo delle Web Application come strumento per raggiungere il maggior numero di potenziali clienti con il minimo sforzo. Le capacità avanzate dei nuovi device e le ultime tecnologie ci consentono però di evolvere il concetto classico di applicazione Web in una declinazione più veloce, più responsiva, più accattivante: vediamo come.
What's New in ASP.NET 4.5 and Visual Studio 2012Andrea Dottor
Slide e codice lo potete trovare a questo link:
http://blog.dottor.net/post/2012/09/18/Codice-e-slide-della-sessione-Whats-New-in-ASPNET-45-and-Visual-Studio-2012.aspx
Il Microsoft .NET Framework è in continua evoluzione, e con la prossima versione verranno rilasciate interessanti funzionalità riguardanti ASP.NET.All'interno di questa sessione conosceremo tutte queste novità, ed andremo invece più in dettaglio in alcune di esse, permettendo a chi conosce già ASP.NET di poter essere più produttivo (Strongly Typed Data Controls, Model Binding, Asynchronous, WebSocket, ... ), mentre, per chi invece non ha molta esperienza con questa tecnologia, potrà vedere come i nuovi template di progetto e Visual Studio 2012 potranno aiutarlo ad approcciare correttamente queste tipologie di applicazioni.
Windows azure - abbattere tempi e costi di sviluppoAndrea Dottor
In questa sessione vedremo come utilizzare Windows Azure per velocizzare e semplificare la realizzazione di applicazioni ASP.NET. Dallo sviluppo al deploy, passando per lo storage...andremo in dettaglio su varie funzionalità che ci faranno apprezzare ancora più la piattaforma Windows Azure.
Asp.Net MVC 3 - Il Model View Controller secondo MicrosoftStefano Benedetti
Il pattern architetturale MVC (Model View Controller) favorisce la manutenzione delle applicazioni web tramite una architettura elegante ed una chiara ed esplicita separazione delle competenze, l'impiego dei più diffusi pattern di software engineering, il controllo completo dell'HTML generato e degli URL, la testabilità ed estendibilità.
In questa sessione vedremo le novità principali di Asp.Net MVC in versione 3.
La sessione è stata tenuta a SMAU Business Bologna il 9 giugno 2011
ASP.NET MVC è un framework sviluppato da Microsoft che permette di sviluppare applicazioni web utilizzando il pattern Model-View-Controller. Questo pattern, e (in questa sessione) la sua implementazione realizzata da Microsoft, si propone di apportare alcuni benefici: Maggiore controllo del markup della pagina, URL più leggibili Facilità di integrazione con librerie AJAX, chiara separazione dei ruoli/responsabilità tra layer, facilitando i test e la manutenzione dell'applicazione, supporto per test-driven development. Nella sessione andremo in dettaglio nella versione 2 di ASP.NET MVC, e con esempi pratici daremo risposta alle domande più frequenti, e a molte altre. Quando si utilizza ASP.NET MVC? Come si utilizza ASP.NET MVC? Semplifica davvero la manutenzione dell'applicazione? E' realmente testabile? Cosa guadagno ad usare ASP.NET MVC?
Rich client application: MVC4 + MVVM = Knockout.jsGiorgio Di Nardo
La sempre maggiore diffusione di device diversificati (PC, Notebook, Tablet, Smartphone, ecc.) su piattaforme diverse, rilancia l'utilizzo delle Web Application come strumento per raggiungere il maggior numero di potenziali clienti con il minimo sforzo. Le capacità avanzate dei nuovi device e le ultime tecnologie ci consentono però di evolvere il concetto classico di applicazione Web in una declinazione più veloce, più responsiva, più accattivante: vediamo come.
What's New in ASP.NET 4.5 and Visual Studio 2012Andrea Dottor
Slide e codice lo potete trovare a questo link:
http://blog.dottor.net/post/2012/09/18/Codice-e-slide-della-sessione-Whats-New-in-ASPNET-45-and-Visual-Studio-2012.aspx
Il Microsoft .NET Framework è in continua evoluzione, e con la prossima versione verranno rilasciate interessanti funzionalità riguardanti ASP.NET.All'interno di questa sessione conosceremo tutte queste novità, ed andremo invece più in dettaglio in alcune di esse, permettendo a chi conosce già ASP.NET di poter essere più produttivo (Strongly Typed Data Controls, Model Binding, Asynchronous, WebSocket, ... ), mentre, per chi invece non ha molta esperienza con questa tecnologia, potrà vedere come i nuovi template di progetto e Visual Studio 2012 potranno aiutarlo ad approcciare correttamente queste tipologie di applicazioni.
Windows azure - abbattere tempi e costi di sviluppoAndrea Dottor
In questa sessione vedremo come utilizzare Windows Azure per velocizzare e semplificare la realizzazione di applicazioni ASP.NET. Dallo sviluppo al deploy, passando per lo storage...andremo in dettaglio su varie funzionalità che ci faranno apprezzare ancora più la piattaforma Windows Azure.
Il buon programmatore - consigli pratici per una vita feliceAndrea Dottor
Lavorando come consulente mi sono trovato spesso di fronte a problematiche (a volte banali), ma che erano la causa di gravi problemi di performance dell'appliccazione realizzata, oppure più banali, ma che rendevano il codice meno manutenibile e gestibile, specialmente lavorando in team. Vedere che nel tempo, persone/realtà diverse, commettono gli stessi errori mi ha fatto pensare a questa sessione...dove intendo elencare i problemi più comuni, che per causa di tempo o scarsa conoscenza, vengono commessi, e proporre delle soluzioni semplici da poter applicare fin da subito. (ASP.NET, ma non solo)
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del webAndrea Dottor
Una sessione alla scoperta delle grandi novità che ASP.NET 5 introduce. Questo nuovo aggiornamento del framework non porta solo un'evoluzione alla tecnologia che già conosciamo, ma porta importanti e radicali cambiamenti (una "rivoluzione" di molte cose che già conosciamo e utilizziamo) che dobbiamo essere pronti a sfruttare il prima possibile per dare una marcia in più alle nostre applicazioni. ASP.NET MVC 6, nuovo template di progetto, cross-platform.
Sessione tenuto presso la fiera "Punto di incontro" di Pordenone in data 03.11.2016
"L’evoluzione del web. Andrea Dottor, consulente informatico,
Microsoft MVP e docente ITS, illustra il percorso di
studi dando spazio ad alcune tecnologie/framework come
AngularJS e Bootstrap, spiegando perché saranno alla
base delle applicazioni del futuro."
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaAndrea Dottor
Sfrutta le tue abilità come sviluppatore web per creare app mobile per Windows Phone, iOS ed Android utilizzando una unica code-base (composta da codice HTML, CSS e JavaScript) e lavora direttamente in Visual Studio. Questo è ora possibile grazie all'estensione "Multi-Device Hybrid Apps for Visual Studio" ed all'uso di Apache Cordova. Un unico IDE ed un singolo progetto per sviluppare per le più diffuse piattaforme mobile.
In questa sessione scopriremo i vantaggi di questa combinazione e daremo risposta ad alcune domande: Quali vantaggi abbiamo dall'utilizzare Visual Studio? Perchè e quando sviluppare un'app ibrida? ...
In questa sessione andremo in dettaglio sul come poter migliorare le nostre applicazioni ASP.NET dal punto delle vista delle performance: Come capire dove interventire? Cosa possiamo migliorare? A cosa dobbiamo prestare attenzione? E nel caso di un'applicazione esistente, dove possiamo intervenire per migliorarla ulteriormente?
Prepariamoci al cambiamento. ASP.NET MVC e ASP.NET Web API saranno unificati in un unico framework chiamato ASP.NET MVC 6, e questo è solo la prima di una serie di novità che stanno per arrivare.
Tutto si semplifica. Le performance migliorano. Un altro salto tecnologico in avanti portato da ASP.NET 5.
In questa sessione, infatti, vedremo tutte le novità che ASP.NET MVC 6 porta con se, e cercheremo di andare in dettaglio in modo da capire cosa voglia dire realizzare (da zero) o migrare (un'applicazione essitente) a questa nuova versione
All matter, no matter how complex, can be broken down into molecules which can be broken down further into atomic elements. All web interfaces can be broken down down the same way. Atomic Design provides a methodology for building an effective design system. It consists of five distint stages: atoms, molecules, organisms, templates and pages.
Alessandro Forte e Michele Aponte, co-fondatori di DotNetCampania, intervengono sul confronto tra i due pattern MVP e MVC per lo sviluppo di applicazioni Web.
Con l'avvento su scala globale di HTML5 le tecnologie web si sono evolute cercando di offrire all'utente una migliore esperienza applicativa sempre più simile a quella desktop. Sul piano tecnico questo viene realizzato spostando la logica di presentazione sul browser client facendo leva su Javascript e CSS3. In questa sessione vedremo come KnockoutJS, un presentation framework Javascript basato sul pattern Model-View-ViewModel, permette di sviluppare Rich Internet Application (RIA) analizzando le sue caratteristiche implementative e mostrando esempi di casi reali anche in ambito mobile.
Asp.NET MVC è un nuovo framework per lo sviluppo di applicazioni web alternativo al modello webform. Questo consente di utilizzare il pattern MVC per lo sviluppo di applicazioni Asp.NET, permettendo quindi una miglior separazione delle responsabilità che a sua volta porta ad una maggior manutenibilità, riusabilità e facilità nel testing.
La sessione illustrerà i motivi che hanno portato alla nascita di Asp.NET MVC e le sue caratteristiche fondamentali.
Agenda:
- Storia dei framework MS per lo sviluppo web
- Introduzione a Asp.NET MVC
- Vantaggi di Asp.NET MVC
- Il pattern MVC
- Hello MVC: DEMO
- Componenti di MVC: Routing, Controller, Model, View
Grazie a Team Foundation Build è possibile adottare pratiche di integrazione continua nel proprio progetto. In questa presentazione viene introdotta la struttura di tfs build assieme alle tecniche base per effettuare una customizzazione della build.
Tech Webinar: Advanced AngularJS, tecniche avanzate per padroneggiare il fram...Codemotion
Matteo Ronchi e Fabio Biondi ci spiegano come padroneggiare le tecniche per creare componenti ed architetture avanzate in AngularJS.
Iscriviti qui per partecipare ad altri Tech Webinar: http://goo.gl/iW81VD
Per info sul Bootcamp AngularJS Advanced Class clicca qui: https://goo.gl/NHbv9D
Scrivici a training@codemotion.it
Tw: @codemotionTR
Applicazioni Web ultra-performanti con Vue.js e DelphiMarco Breveglieri
Vue.js è un framework per creare interfacce utente estremamente performanti e che può essere introdotto progressivamente nelle vostre applicazioni Web, nel modo meno invasivo possibile. In questo talk scoprirete come utilizzarlo con Delphi creando una soluzione frontend e backend ad elevate prestazioni.
Slide e riferimenti al codice del Meetup del 28/02/2019 del Vue JS Milano dove parlo di creazione di componenti, passaggio di parametri, computed properties
Slide della sessione tenuta alla Blazor Conf 2022 (https://blazorconf.it/)
Sono convinto che uno sviluppatore Blazor debba conoscere JavaScript in quanto molte librerie (d'uso comune) non le troviamo disponibili su NuGet. Interagire con Google Maps, visualizzare dei grafici, utilizzare API del browser, ... In questa sessione vedremo come far dialogare questi due mondi che sono molto più vicini e lagati di quello che si pensa, ed il tutto con una serie di esempi pratici (e reali).
Stanco delle solite sessioni introduttive o generiche su blazor? Bene, questa è la serata che fa per te.
In questa sessione ho raccolto una serie di argomenti, problematiche e tips derivanti da due anni di utilizzo di Blazor (praticamente dal suo lancio). Casi reali affrontanti e risolti.
E come nel (ormai) classico format online di XE, ci sarà ampio spazio per le domande ed il confronto.
Dal RenderFragment ai Generics, tips for Blazor developersAndrea Dottor
Sessione tenuta alla Blazor Conference 2021 del 13.04.2021.
(https://www.aspitalia.com/eventi/87/Blazor-Conference-2021-Online.aspx)
Una sessione dove verranno presentati una serie di tips per migliorare e facilitare la scrittura delle nostre applicazioni: da codice html dinamico, al miglioramento ed organizzazione dello stesso. Il tutto per poter sfruttare ogni bit che Blazor può dare. Dal RenderFragment ai Generics. Consigli che arrivano da esperienze reali
Codice: https://github.com/andreadottor/XE.Dottor.Demo.BlazorWebApp
In questa sessione vedremo come uno sviluppatore WebForm possa essere velocemente produttivo (utilizzando le ultime versioni di ASP.NET Core) grazie a Blazor. Vedremo quindi cosa differenza un'applicazione ASP.NET Core, rispetto a quelle WebForm (.NET Framework) fino ad arrivare a comprendere perchè e come Blazor possa agevolare questa transizione.
Quindi una sessione non solo per chi è nuovo a Blazor, ma anche perchì ancora non ha migrato ad ASP.NET Core.
Come sta la nostra applicazione? Un viaggio alla scoperta degli Health Check ...Andrea Dottor
In questa sessione scopriremo come utilizzare al meglio di Health Check, funzionalità che è stata introdotta in ASP.NET ancora dalla versione 2.2, ma che poche applicazioni sfruttano.
Uno strumento davvero utile anche per un primo debug, o per una semplice verifica dello stato delle nostre applicazioni...e non solo per chi utilizza container e orchestratori.
Cosa ci permettono di sapere gli Health Check?
Come possiamo essere notificati se qualcosa non va nel verso giusto?
A queste e ad altre domande daremo risposta nel corso della sessione
In questa serata cercheremo di capire perchè Blazor ha riscosso così tanto successo, e lo faremo analizzando casi presi da applicazioni reali dove questa tecnologia è stata introdotta, così da capirne meglio le potenzialità (ma anche le eventuali criticità).
Come di consuetudine, faremo poi un confronto, così da condividere i vari punti di vista.
In questa sessione andremo in dettaglio sulle principali novità introdotte nella versione 3.0 di ASP.NET Core.
Code: https://github.com/andreadottor/VSSaturdayPN2019
In ASP.NET Core 3.0 è stato introdotto il supporto a gRPC, una framework altamente performante per fare Remote Procedure Call (RPC). Leggero e molto efficiente, supportato da molti linguaggi, supporto ad una comunicazione bidirezionale, riduzione del consumo di banda...solo questi solo alcuni dei vantaggi che descrivono gRPC, e che durante la sessione cercheremo di capire se siano reali o meno.
Fatto sta che è una tecnologia assolutamente da conoscere e sfruttare nello sviluppo di app moderno, e non solamente in ambito web.
Codice: https://github.com/andreadottor/XE.Dottor.gRPC
Evento: https://www.xedotnet.org/eventi/grpc-and-c-optimising-night/
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Andrea Dottor
Molte applicazione sono (ancora) sviluppate in WebForm e non possono essere convertite automaticamente ad ASP.NET Core. Una riscrittura completa in molti casi è impossibile o impensabile da attuare. In questa sessione vedremo come migrare in modo graduale queste tipologie di applicazioni verso ASP.NET Core, andando in dettaglio nelle varie problematiche che solitamente si possono presentare. La sessione deriva da un'esperienza reale, che ha permesso di conoscere (nel bene o nel male) le difficoltà che si nascondo in queste migrazioni.
Evento: https://www.xedotnet.org/eventi/one-day-enterprise-application/
Real case: migrate from Web Forms to ASP.NET Core graduallyAndrea Dottor
Many application are developed in Web Forms and cannot be automatically converted to ASP.NET Core. Wait for rewrite all application in many case are impossible.
In this session are explained a way to gradually migrate to the new tecnology, and all the tricks for run the applications side by side (during the migration). And only when all are complete, dismiss the old. A real world case.
Non stiamo parlando di un ritorno a WebForm ma di un'evoluzione (o meglio) di un'alternativa al pattern MVC. Le Razor Pages possono essere un buon motore per smuovere le migrazioni di vecchie applicazioni, utilizzando un paradigma di pagina (vicino a quello che chi utilizza WebForm già conosce) ma con una visione e pulizia degna delle migliori applicazioni MVC .
Ecco che le Razor Pages si stanno ritagliano il loro spazio, ed in questa sessione cercheremo di affrontare i pro e contro del loro utilizzo, capendone al meglio i casi duso ideali.
Dependency injection questa sconosciutaAndrea Dottor
L'uscita di ASP.NET Core ha portato a una maggiore diffusione dell'utilizzo della DI (Dependency Injection) ma spesso senza che lo sviluppatore sappia la sua reale utilità o potenzialità.
Dependency Injection, uno dei design pattern della programmazione OOP. Una best-practice dello sviluppo che può portare alla semplificazione del codice scritto, facilitare il disacoppiamento, e migliorare la testabilità.
In questa sessione vedremo cos'è la DI e come utilizzarla intelligentemente all'interno dei nostri progetti.
Slide dell'evento "XE One Day - Good code" tenuto il 15.09.2018.
Il codice è disponibile alla pagina dell'evento https://www.xedotnet.org/eventi/one-day-good-code/
Slide dell'evento One Day Cache (http://www.xedotnet.org/eventi/one-day-performance-optimization/)
ABSTRACT: Cache, amica e nemica di molti dev.
Uno dei modi per incrementare le performance di un'applicativo è l'utilizzo della cache, ma non è tutto oro quel che luccica.
In questa sessione vedremo quali tipologie di cache esistono, ed il come poterle utilizzare al meglio. Output cache, cache applicativa, Redis, Memcached...cerchiamo di fare un pò di chiarezza e capiamo i pro e contro delle varie soluzioni.
ASP.NET Core 2.0 è stato ufficialmente rilasciato e porta con se parecchie novità come le Razor Pages, template aggiornati e l'integrazione con Application Insights migliorata. In questa cercheremo capiremo la vera maturità di questo framework, e quanto questo rilascio sia importante per noi dev.
Creare API pubbliche, come evitare gli errori comuniAndrea Dottor
Cerchiamo di capire cosa vuol dire creare delle API pubbliche. Cerchiamo di capire cosa offre ad oggi ASP.NET, e come utilizzare al meglio la tecnologia. L'intenzione è di andare in dettaglio su problematiche spesso sottovalutate: serve sempre ASP.NET Web API? E' meglio WCF? Quali problematiche possono capitare? Come faccio il versionamento? Quali oggetti/classi espongo? E la documentazione?
1. Andrea Dottor – Microsoft MVP ASP.NET/IIS
Migliora il tuo codice con Knockout.js
2. ...permette di scrivere codice
Disordinato
Difficile da leggere
Difficile da mantenere
...non tutti ci sanno metter mano
Capita spesso che lo sviluppatore che ha scritto
"quel" codice sia l'unico a conoscere come
realmente funziona
JavaScript è un linguaggio potente ma...
3. Semplificare il codice il più possibile
Più il codice è semplice e più sviluppatori ci
sanno metter mano
Scrivere meno codice
Meno codice si scrive e meno probabilità di errori
(ci dovrebbe essere)
Utilizzare una metodologia
Esistono molti pattern/librerie che semplificano la
scrittura di codice JavaScript
Soluzioni al disordine
4. Esistono molti Design Pattern possibili
MVC
MVP
MVVM
...
Dobbiamo/possiamo scegliere tra
quelli che conosciamo
Se sviluppiamo in WPF o per Windows Phone o
per Windows 8...conosciamo già MVVM
Quali metodologie possiamo adottare?
6. Libreria che porta MVVM nel client
http://knockoutjs.com/
"Knockout is a JavaScript library that
helps you to create rich, responsive
display and editor user interfaces with a
clean underlying data model. Any time
you have sections of UI that update
dynamically (e.g., changing depending on
the user’s actions or when an external data
source changes), KO can help you
implement it more simply and
maintainably."
Che cos’è Knockout JS
7. Free, open source
MIT license
Pure JavaScript
works with any web framework
Small & lightweight
40kb minified... reduces to 14kb when using HTTP
compression
No dependencies
Supports all mainstream browsers
IE 6+, Firefox 2+, Chrome, Opera, Safari
(desktop/mobile)
Fully documentedAPI
docs, live examples, and interactive tutorials included
Alcune info su knockout
8. Model
I dati forniti dall'applicazione. Una visualizzazione dei
dati indipendente dalla UI.
Dati esposti tramite servizi, Web API, ...
View-Model
Una rappresentazione dei dati strutturata
appositamente per l'UI. Esposizione delle proprietà e
metodi che possono essere utilizzati nella View
Scritto in JavaScript
View
Si occupa di visualizzare le informazioni che il
ViewModel espone, e permette di chiamarne i metodi
Uso di HTML5
MVVM: Model-View-ViewModel
9. Qualsiasi servizio esposto utilizzando
REST è un ottimo model da utilizzare
per knockout
WCF con WebHttpBinding
Web API
JsonResult
...
Qualsiasi informazioni che siano in
grado di arrivare al client
JSON contenuto in input[type=hidden]
...
Model
10. E' un oggetto JavaScript che espone
metodi e proprietà
Deve essere la corretta rappresentazione dei
dati per la View che si intende realizzare
Non ha nessun legame con le View
Non viene eseguito nessun $('#id') oppure
document.getElementById('id')
ViewModel
function AppViewModel() {
this.firstName = ko.observable("Bert");
this.lastName = ko.observable("Bertington");
this.fullName = ko.computed(function() {
return this.firstName() + " " + this.lastName();
}, this);
}
11. Definisce una proprietà "Observable"
Ad ogni cambiamento di valore della
proprietà, la View viene subito
notificata ed aggiornata
Genera un proxy sulla proprietà che fa si che
Knockout possa aggiornare l'interfaccia, oppure
tutte le proprietà che dipendono da essa
Si può agganciare una funzione che
venga invocata al cambio di valore
viewModel.firstName.subscribe(function(newValue) { ...});
Simile al INotifyPropertyChanged
ko.observable()
12. Definisce un array di tipo "Observable"
Un oggetto observableArray dispone di tutti i metodi
degli array javascript
pop, push, shift, unshift, reverse, sort, splice, …
Può essere inizializzato e popolato direttamente nel
costruttore
Ad ogni aggiunta, rimozione o
cancellazione di un elemento, la View
viene subito notificata del cambiamento
Paragonabile ad una
ObservableCollection
ko.observableArray()
13. Permette di definire proprietà di tipo
calcolato
Sono anche queste "Observable"
Al cambiamento di una proprietà da cui questa
dipende, viene ricalcolato il nuovo valore ed
aggiornata la View
ko.computed()
this.fullName = ko.computed(function() {
return this.firstName() + " " + this.lastName();
}, this);
14. Si deve fare uso di HTML5
KO fa uso dell'attributo data-bind per agganciare
proprietà e metodi esposti dal ViewModel
Uso di template, foreach, with
Permette di ripetere facilmente porzioni di
codice, usando un binding "innestato"
L'unico legame con il ViewModel è nel
corretto utilizzo dei nomi di proprietà e
metodi
View
<p>First name: <strong data-bind="text: firstName"></strong></p>
<p>Last name: <strong data-bind="text: lastName"></strong></p>
<p>First name: <input data-bind="value: firstName" /></p>
<p>Last name: <input data-bind="value: lastName" /></p>
<p>Full name: <strong data-bind="text: fullName"></strong></p>
15. La magia che unisce View e
ViewModel è racchiusa in una
semplice riga
Unisce un ViewModel utilizzando l'intera pagina
come View
E' possibile associare il ViewModel ad
una porzione di pagina
Permette di indentificare più View all'interno della
stessa pagina HTML
Collegare View e ViewModel
ko.applyBindings(new AppViewModel());
ko.applyBindings(viewModelA, document.getElementById("one"));
ko.applyBindings(viewModelB, document.getElementById("two"));
17. Il template di progetto di ASP.NET MVC
4 Single Page Application fa uso di
knockout
Un valido esempio di SPA
E' possibile utilizzare JQuery Mobile in
combinazione con KO
Attenzione, che JQM e KO lavorano entrambi dopo il
caricamento del DOM e lo modificano
Da knockout spesso di deve richiamare il 'refresh' dei
controlli
Esistono framework di SPA costruiti su
Knockout
Pager.js
Durandal
KO e Single Page Application
19. Libreria JavaScript basata su KO e
JQuery che permette la realizzazione
di applicazioni SPA
http://pagerjs.com/
Semplice da utilizzare
Non ha dipendende con framework
CSS
A differenza di JQuery Mobile, pager.js si occupa
solamente della navigazione tra pagine e non
degli stili di visualizzazione
Pager.js
20. Si occupa solo della parte di Single
Page Application
Spesso si ha bisogno di un "qualcosa" che ci
permetta di visualizzare/nascondere pagine
Non tutte le app hanno bisogno di
framework complessi come JQuery
Mobile
JQM forza l'uso ai suoi CSS
KO e JQM non lavorano sempre in
coordianzione.
Spesso si deve fare refresh manuali di componenti della
UI
Perchè Pager.js?
23. Framework per la realizzazione di
applicazioni SPA, che
migliora/estende l'idea di MVVM di
knockout
http://durandaljs.com/
Non solo Single Page Application
Clean MV* Architecture
JS & HTML Modularity
Simple App Lifecycle
Eventing, Modals, Message Boxes, etc.
Navigation & Screen State Management
Built on top of jQuery, Knockout & RequireJS
Durandal
24. Organizzazione del codice
View e ViewModel splittati in file separati, e
collegati solamente dal nome
Facilità nella manutenzione del codice
Ogni View e ViewModel è realizzato con uno
specifico ruolo
La complessità è splittata/ridotta
Meno possibilità di conflitti al commit nel
controllo sorgente
Implementazione di MVVM migliorata
rispetto al solo Knockout
Netta separazione tra View e ViewModel
Perchè Durandal?
26. Migliora il tuo codice
Librerie JavaScript come Knockout,
Durandal possono essere di aiuto per
organizzare al meglio codice client
Librerie esterne non fanno miracoli
Richiedono disciplina e metodo nel loro utilizzo
L'ordine e la complessità di ciò che si
scrive è nelle mani dello sviluppatore
L'impegno di scrivere codice migliore deve arrivare
direttamente dallo sviluppatore
Pensa al principio KISS
Keep it simple, stupid
Più mantieni il codice semplice e più facile sarà
leggerlo e manutenerlo
27.
28. feedback
10
o feedback su:
• http://xedotnet.org/feedback
• Codice: APR02
Email: andrea@dottor.net
Blog: http://blog.dottor.net
Twitter: http://twitter.com/dottor
feedback