SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Typescript, Angular e Bootstrap
assieme per applicazioni real world
Andrea Boschin – Microsoft MVP - Consultant
andrea@boschin.it
http://blog.boschin.it
http://www.xedotnet.org
Typescript – Angular - Bootstrap
Nuovi requisiti sviluppo web
• Sempre maggiore interattività
• Utilizzo pesante di codice client-side (javascript)
• Supporto ai device mobile (responsività)
• Capacità del sito/applicazione di adeguarsi a diverse dimensioni dello schermo
• Feedback simile alle applicazioni desktop
• Eliminazione ovunque possibile di navigazione e post-back
• Utilizzo di chiamate AJAX/AJAJ
• Architetture manutenibili
• Strutturazione migliore del codice
• Richiesto soprattutto per le applicazioni enterprise
Typescript – Angular - Bootstrap
Strumenti a supporto
– Responsività
• Foundation 4
• Bootstrap 3
– Componenti di interfaccia
• Bootstrap 3
• AngularJS
• jQuery UI
• jQuery Mobile
– Data binding
• KnockoutJS
• AngularJS
– SPA
• Durandal
• AngularJS
– Pattern MVC/MVVM
• Durandal
• AngularJS
– Accesso al dom
• jQuery
– Utilizzo di AJAX/AJAJ
• jQuery
• AngularJS (ngHttpService)
– Unit Test
• AngularJS
– Altre librerie
• MomentJS
Typescript – Angular - Bootstrap
Strumenti a supporto
– Responsività
• Foundation 4
• Bootstrap 3
– Componenti di interfaccia
• Bootstrap 3
• AngularJS
• jQuery UI
• jQuery Mobile
– Data binding
• KnockoutJS
• AngularJS
– SPA
• Durandal
• AngularJS
– Pattern MVC/MVVM
• Durandal
• AngularJS
– Accesso al dom
• jQuery
– Utilizzo di AJAX/AJAJ
• jQuery
• AngularJS (ngHttpService)
– Unit Test
• AngularJS
– Altre librerie
• MomentJS
Typescript – Angular - Bootstrap
La selezione
• Angular (google)
• Framework per lo svilluppo di applicazioni
• Bootstrap (twitter)
• Framework per la user interface responsiva
• jQuery
• Chi non lo conosce?
• Prerequisito per l’utilizzo di Angular (versione minified)
• MomentJS
• Gestione delle date
Typescript – Angular - Bootstrap
Javascript?
• Javascript è affascinante... Non c’è dubbio 
• E’ un linguaggio molto divertente
• Si ottengono risultati inattesi
• Flessibilità incredibile
• Però
• È difficile da imparare
• È difficile da controllare
• È difficile da manutenere
• in una azienda questi sono problemi reali
Typescript – Angular - Bootstrap
Typescript cosa non è?
• Un framework
• Un nuovo linguaggio
• Un plugin per il browser
• Una tecnologia «vincolante»
Typescript – Angular - Bootstrap
Typescript cosa è?
• E’ un superset di Javascript
• qualunque codice Javascript è Typescript valido
• L’output del compilatore è Javascript
• non è richiesto alcun plugin per usarlo nel browser
• Aggiunge le necessarie tutele a Javascript
• Ad esempio static type checking, classi, moduli, interfacce
• Il codice scritto è più semplice e strutturato secondo OOP
• Il codice prodotto è comprensibile e manutenibile
• Non si perdono le potenzialità di Javascript
• Implementa già oggi lo standard Ecma Script 6
Typescript – Angular - Bootstrap
Typescript e le librerie di terze parti
• E’ possibile importare le definizioni dei tipi usando dei file di definizione
• Analoghi a file «.h» di C
• Hanno estensione «.d.ts»
• Si trovano definizioni per quasi ogni libreria esistente.
• Vedere «DefinitelyTyped»
• Le definizioni possono essere importate in Visual Studio
• Sono elaborate senza necessità di inclusioni
• Danno accesso ai membri delle classi e alle funzioni
• Non importano automaticamente la libreria! Bisogna sempre usare il tag <script />
• Possiamo scrivere noi stessi definizioni per nostre librerie esistenti
Qualche esempio…
Typescript – Angular - Bootstrap
Interfacce o classi?
• Uno dei vantaggi di Typescript è la tipizzazione che ci tutela da errori
• E’ possibile creare propri tipi (classi)
var myCar = new Car();
myCar.Plate = ‘EF 000 AH’;
• E’ molto più vantaggioso usare le interfacce
var myCar: ICar;
myCar.Plate = ‘EF 000 AH’;
• Le interfacce non generano codice Javascript.
• Godiamo del controllo dei tipi ma non paghiamo lo scotto di scaricare molto codice.
Typescript – Angular - Bootstrap
Organizzare il codice
• Typescript consente di dichiarare moduli
• Un modulo è analogo ad un namespace di C#
• I moduli hanno membri pubblici e privati
• Possono essere suddivisi in diversi file per ottimizzarne il caricamento
Come
• Usare «export» sugli elementi che devono essere pubblici
• Usare moduli annidati per una migliore organizzazione
Typescript – Angular - Bootstrap
Il contesto di «this»
• In Javascript è usuale che «this» assuma diversi significati in base al
contesto.
• Il seguente codice è normale
var _this = this;
$(function() { _this.doSomething(); })
• In Typescript la sintassi lambda gestisce questo caso automaticamente
$(() => { this.doSomething(); }
Typescript – Angular - Bootstrap
Angular: Controller
• Tecnica:
• Dichiariamo una classe
• Grazie a Controller As usiamo la classe al posto dello $scope
• Risultato
• La classe diventa un controller
• Il codice è meglio organizzato e comprensibile
• Possiamo sfruttare ereditarietà
• Visual Studio: L’intellisense è il nostro migliore amico!
Typescript – Angular - Bootstrap
Angular: Directive
• Una direttiva è?
• Si presenta come un tag HTML
• Incapsula una porzione di HTML e della eventuale logica associata
• Utili per:
• Creare componenti riutilizzabili
• Consentono di non sporcare il controller con elementi di interfaccia
• Regola: solo in una direttiva posso usare jQuery e accedere al DOM
• Posso
• Esporre proprietà per customizzare
• Rendere le proprietà «bindabili»
Typescript – Angular - Bootstrap
Bootstrap: Usare i componenti
• Bootstrap contiene molti «controlli»
• Conviene sempre privilegiare questi rispetto a quelli di Angular
• Per utilizzarli al meglio usare
• Direttive
• Servizi
Typescript – Angular - Bootstrap
Angular: Gestire l’asincronia (degli altri)
Problema
• Le operazioni asincrone sono tipiche delle applicazioni Javascript
Soluzioni
• jQuery supporta le «Promise» che risolvono in modo elegante
• Angular supporta le promise in proprio mediante Qservice
• N.B. Preferire sempre QService a jQuery per il supporto al Databinding
Come
• I metodi asincroni ritornano un oggetto «IPromise»
• Questo espone metodi callback come
• then() = successo
• catch() = eccezione
• finally() = analogo a «finally» di C#
Typescript – Angular - Bootstrap
Angular: Gestire l’asincronia (propria)
Problema
• E se devo creare le mie operazioni asincrone?
Soluzione
• Il QService che consente di gestire le proprie «Promise»
• L’uso di Callback classici impedisce il corretto Databinding.
Come
• Richiedere $q service
• Usare defer – resolve - reject
Typescript – Angular - Bootstrap
Prendiamo un «moment»
Lo so, la battuta è scontata... 
• Moment è la migliore libreria per gestire il tipo Data in Javascript
• Fa tutto... 
• http://www.momentjs.com
Andrea Boschin – Elite Agency
Email: andrea@boschin.it
Facebook: https://www.facebook.com/thelittlegrove
Twitter: http://twitter.com/aboschin
Blog: http://blog.boschin.it
Contact me

Weitere ähnliche Inhalte

Was ist angesagt?

Le novità di Visual Studio 2015 per lo sviluppatore ASP.NET
Le novità di Visual Studio 2015 per lo sviluppatore ASP.NETLe novità di Visual Studio 2015 per lo sviluppatore ASP.NET
Le novità di Visual Studio 2015 per lo sviluppatore ASP.NETEmanuele Bartolesi
 
Applicazioni Web ultra-performanti con Vue.js e Delphi
Applicazioni Web ultra-performanti con Vue.js e DelphiApplicazioni Web ultra-performanti con Vue.js e Delphi
Applicazioni Web ultra-performanti con Vue.js e DelphiMarco Breveglieri
 
Creare App per Office 365 con ASP.NET MVC 5
Creare App per Office 365 con ASP.NET MVC 5Creare App per Office 365 con ASP.NET MVC 5
Creare App per Office 365 con ASP.NET MVC 5Emanuele Bartolesi
 
Asp.net web form 4.5 - what's new!!
Asp.net web form 4.5 - what's new!!Asp.net web form 4.5 - what's new!!
Asp.net web form 4.5 - what's new!!Massimo Bonanni
 
Cosa c'è di nuovo in asp.net core 2 0
Cosa c'è di nuovo in asp.net core 2 0Cosa c'è di nuovo in asp.net core 2 0
Cosa c'è di nuovo in asp.net core 2 0Andrea Dottor
 
Delphi & Dintorni Webinar - Diventa un mago del Testing
Delphi & Dintorni Webinar - Diventa un mago del TestingDelphi & Dintorni Webinar - Diventa un mago del Testing
Delphi & Dintorni Webinar - Diventa un mago del TestingMarco Breveglieri
 
Antica presentazione AJAX
Antica presentazione AJAXAntica presentazione AJAX
Antica presentazione AJAXTommaso Torti
 
Introduzione a Ruby On Rails
Introduzione a Ruby On RailsIntroduzione a Ruby On Rails
Introduzione a Ruby On RailsLuca Mearelli
 
Blazor per uno sviluppatore Web Form
Blazor per uno sviluppatore Web FormBlazor per uno sviluppatore Web Form
Blazor per uno sviluppatore Web FormAndrea Dottor
 
Be01 web devclientvsserver
Be01   web devclientvsserverBe01   web devclientvsserver
Be01 web devclientvsserverDotNetCampus
 
Sviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailSviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailDotNetMarche
 
Creare API pubbliche, come evitare gli errori comuni
 Creare API pubbliche, come evitare gli errori comuni Creare API pubbliche, come evitare gli errori comuni
Creare API pubbliche, come evitare gli errori comuniAndrea Dottor
 
Blazor: are we ready for the launch?
Blazor: are we ready for the launch?Blazor: are we ready for the launch?
Blazor: are we ready for the launch?Andrea Agnoletto
 
Generazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NETGenerazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NETStefano Ottaviani
 
Wordpress Boilerplate Plugin Powered
Wordpress Boilerplate Plugin PoweredWordpress Boilerplate Plugin Powered
Wordpress Boilerplate Plugin PoweredDaniele Scasciafratte
 

Was ist angesagt? (20)

Le novità di Visual Studio 2015 per lo sviluppatore ASP.NET
Le novità di Visual Studio 2015 per lo sviluppatore ASP.NETLe novità di Visual Studio 2015 per lo sviluppatore ASP.NET
Le novità di Visual Studio 2015 per lo sviluppatore ASP.NET
 
Applicazioni Web ultra-performanti con Vue.js e Delphi
Applicazioni Web ultra-performanti con Vue.js e DelphiApplicazioni Web ultra-performanti con Vue.js e Delphi
Applicazioni Web ultra-performanti con Vue.js e Delphi
 
Creare App per Office 365 con ASP.NET MVC 5
Creare App per Office 365 con ASP.NET MVC 5Creare App per Office 365 con ASP.NET MVC 5
Creare App per Office 365 con ASP.NET MVC 5
 
Php for ASP.NET Developers
Php for ASP.NET DevelopersPhp for ASP.NET Developers
Php for ASP.NET Developers
 
Asp.net web form 4.5 - what's new!!
Asp.net web form 4.5 - what's new!!Asp.net web form 4.5 - what's new!!
Asp.net web form 4.5 - what's new!!
 
Cosa c'è di nuovo in asp.net core 2 0
Cosa c'è di nuovo in asp.net core 2 0Cosa c'è di nuovo in asp.net core 2 0
Cosa c'è di nuovo in asp.net core 2 0
 
Delphi & Dintorni Webinar - Diventa un mago del Testing
Delphi & Dintorni Webinar - Diventa un mago del TestingDelphi & Dintorni Webinar - Diventa un mago del Testing
Delphi & Dintorni Webinar - Diventa un mago del Testing
 
Angular and beyond
Angular and beyondAngular and beyond
Angular and beyond
 
Antica presentazione AJAX
Antica presentazione AJAXAntica presentazione AJAX
Antica presentazione AJAX
 
Introduzione a Ruby On Rails
Introduzione a Ruby On RailsIntroduzione a Ruby On Rails
Introduzione a Ruby On Rails
 
Blazor per uno sviluppatore Web Form
Blazor per uno sviluppatore Web FormBlazor per uno sviluppatore Web Form
Blazor per uno sviluppatore Web Form
 
Be01 web devclientvsserver
Be01   web devclientvsserverBe01   web devclientvsserver
Be01 web devclientvsserver
 
Corso 3 giorni Angular 2+
Corso 3 giorni Angular 2+Corso 3 giorni Angular 2+
Corso 3 giorni Angular 2+
 
Sviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailSviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle Monorail
 
Creare API pubbliche, come evitare gli errori comuni
 Creare API pubbliche, come evitare gli errori comuni Creare API pubbliche, come evitare gli errori comuni
Creare API pubbliche, come evitare gli errori comuni
 
Blazor: are we ready for the launch?
Blazor: are we ready for the launch?Blazor: are we ready for the launch?
Blazor: are we ready for the launch?
 
Generazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NETGenerazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NET
 
Wordpress Boilerplate Plugin Powered
Wordpress Boilerplate Plugin PoweredWordpress Boilerplate Plugin Powered
Wordpress Boilerplate Plugin Powered
 
Tutto su ASP.NET Identity
Tutto su ASP.NET IdentityTutto su ASP.NET Identity
Tutto su ASP.NET Identity
 
Angularjs
AngularjsAngularjs
Angularjs
 

Andere mochten auch

Nakov at Fuck Up Nights - July 2015 @ Sofia
Nakov at Fuck Up Nights - July 2015 @ SofiaNakov at Fuck Up Nights - July 2015 @ Sofia
Nakov at Fuck Up Nights - July 2015 @ SofiaSvetlin Nakov
 
SUE AGILE MVVM (Italian)
SUE AGILE MVVM (Italian)SUE AGILE MVVM (Italian)
SUE AGILE MVVM (Italian)Sabino Labarile
 
Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")
Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")
Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")Svetlin Nakov
 
Introduzione a MVVM e Caliburn.Micro
Introduzione a MVVM e Caliburn.MicroIntroduzione a MVVM e Caliburn.Micro
Introduzione a MVVM e Caliburn.MicroMassimo Bonanni
 
Slide Prelaurea. Alessandro Andreosè
Slide Prelaurea. Alessandro AndreosèSlide Prelaurea. Alessandro Andreosè
Slide Prelaurea. Alessandro Andreosèguesta10af3
 
Професия "програмист"
Професия "програмист"Професия "програмист"
Професия "програмист"Svetlin Nakov
 
Dependency Injection and Inversion Of Control
Dependency Injection and Inversion Of ControlDependency Injection and Inversion Of Control
Dependency Injection and Inversion Of ControlSimone Busoli
 
Inversion of Control @ CD2008
Inversion of Control @ CD2008Inversion of Control @ CD2008
Inversion of Control @ CD2008Mauro Servienti
 
Как да станем софтуерни инженери и да стартираме ИТ бизнес?
Как да станем софтуерни инженери и да стартираме ИТ бизнес?Как да станем софтуерни инженери и да стартираме ИТ бизнес?
Как да станем софтуерни инженери и да стартираме ИТ бизнес?Svetlin Nakov
 
Model-View-ViewModel
Model-View-ViewModelModel-View-ViewModel
Model-View-ViewModelDotNetMarche
 
Работа с Естествен Интелект – Личност – Време – 3 юли 2013 @ НЛП клуб
Работа с Естествен Интелект – Личност – Време – 3 юли 2013 @ НЛП клубРабота с Естествен Интелект – Личност – Време – 3 юли 2013 @ НЛП клуб
Работа с Естествен Интелект – Личност – Време – 3 юли 2013 @ НЛП клубSvetlin Nakov
 
Regular Expressions: QA Challenge Accepted Conf (March 2015)
Regular Expressions: QA Challenge Accepted Conf (March 2015)Regular Expressions: QA Challenge Accepted Conf (March 2015)
Regular Expressions: QA Challenge Accepted Conf (March 2015)Svetlin Nakov
 
Architetttura Della Soluzione
Architetttura Della SoluzioneArchitetttura Della Soluzione
Architetttura Della SoluzioneLuca Milan
 
Entity Framework: Nakov @ BFU Hackhaton 2015
Entity Framework: Nakov @ BFU Hackhaton 2015Entity Framework: Nakov @ BFU Hackhaton 2015
Entity Framework: Nakov @ BFU Hackhaton 2015Svetlin Nakov
 
Architectural Patterns and Software Architectures: Client-Server, Multi-Tier,...
Architectural Patterns and Software Architectures: Client-Server, Multi-Tier,...Architectural Patterns and Software Architectures: Client-Server, Multi-Tier,...
Architectural Patterns and Software Architectures: Client-Server, Multi-Tier,...Svetlin Nakov
 

Andere mochten auch (20)

System.AddIn @ Xe.Net
System.AddIn @ Xe.NetSystem.AddIn @ Xe.Net
System.AddIn @ Xe.Net
 
Nakov at Fuck Up Nights - July 2015 @ Sofia
Nakov at Fuck Up Nights - July 2015 @ SofiaNakov at Fuck Up Nights - July 2015 @ Sofia
Nakov at Fuck Up Nights - July 2015 @ Sofia
 
SUE AGILE MVVM (Italian)
SUE AGILE MVVM (Italian)SUE AGILE MVVM (Italian)
SUE AGILE MVVM (Italian)
 
Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")
Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")
Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")
 
Introduzione a MVVM e Caliburn.Micro
Introduzione a MVVM e Caliburn.MicroIntroduzione a MVVM e Caliburn.Micro
Introduzione a MVVM e Caliburn.Micro
 
Slide Prelaurea. Alessandro Andreosè
Slide Prelaurea. Alessandro AndreosèSlide Prelaurea. Alessandro Andreosè
Slide Prelaurea. Alessandro Andreosè
 
Професия "програмист"
Професия "програмист"Професия "програмист"
Професия "програмист"
 
Dependency Injection and Inversion Of Control
Dependency Injection and Inversion Of ControlDependency Injection and Inversion Of Control
Dependency Injection and Inversion Of Control
 
Inversion of Control @ CD2008
Inversion of Control @ CD2008Inversion of Control @ CD2008
Inversion of Control @ CD2008
 
Как да станем софтуерни инженери и да стартираме ИТ бизнес?
Как да станем софтуерни инженери и да стартираме ИТ бизнес?Как да станем софтуерни инженери и да стартираме ИТ бизнес?
Как да станем софтуерни инженери и да стартираме ИТ бизнес?
 
Model-View-ViewModel
Model-View-ViewModelModel-View-ViewModel
Model-View-ViewModel
 
Работа с Естествен Интелект – Личност – Време – 3 юли 2013 @ НЛП клуб
Работа с Естествен Интелект – Личност – Време – 3 юли 2013 @ НЛП клубРабота с Естествен Интелект – Личност – Време – 3 юли 2013 @ НЛП клуб
Работа с Естествен Интелект – Личност – Време – 3 юли 2013 @ НЛП клуб
 
Regular Expressions: QA Challenge Accepted Conf (March 2015)
Regular Expressions: QA Challenge Accepted Conf (March 2015)Regular Expressions: QA Challenge Accepted Conf (March 2015)
Regular Expressions: QA Challenge Accepted Conf (March 2015)
 
Architetttura Della Soluzione
Architetttura Della SoluzioneArchitetttura Della Soluzione
Architetttura Della Soluzione
 
UI Composition
UI CompositionUI Composition
UI Composition
 
Dependency Injection
Dependency InjectionDependency Injection
Dependency Injection
 
Entity Framework: Nakov @ BFU Hackhaton 2015
Entity Framework: Nakov @ BFU Hackhaton 2015Entity Framework: Nakov @ BFU Hackhaton 2015
Entity Framework: Nakov @ BFU Hackhaton 2015
 
Introduzione WPF
Introduzione WPFIntroduzione WPF
Introduzione WPF
 
WPF MVVM Toolkit
WPF MVVM ToolkitWPF MVVM Toolkit
WPF MVVM Toolkit
 
Architectural Patterns and Software Architectures: Client-Server, Multi-Tier,...
Architectural Patterns and Software Architectures: Client-Server, Multi-Tier,...Architectural Patterns and Software Architectures: Client-Server, Multi-Tier,...
Architectural Patterns and Software Architectures: Client-Server, Multi-Tier,...
 

Ähnlich wie Slide typescript - xe dotnet - Codemotion Rome 2015

TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDTYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDDotNetCampus
 
SUE AGILE Framework (Italiano)
SUE AGILE Framework (Italiano)SUE AGILE Framework (Italiano)
SUE AGILE Framework (Italiano)Sabino Labarile
 
Introduzione a TypeScript
Introduzione a TypeScriptIntroduzione a TypeScript
Introduzione a TypeScriptSinergia Totale
 
Cert03 70-486 developing asp.net mvc 4 web applications
Cert03   70-486 developing asp.net mvc 4 web applicationsCert03   70-486 developing asp.net mvc 4 web applications
Cert03 70-486 developing asp.net mvc 4 web applicationsDotNetCampus
 
ASP.NET MVC: Andare oltre il 100% (Web@work)
ASP.NET MVC: Andare oltre il 100% (Web@work)ASP.NET MVC: Andare oltre il 100% (Web@work)
ASP.NET MVC: Andare oltre il 100% (Web@work)Giorgio Di Nardo
 
Sviluppare Azure Web Apps
Sviluppare Azure Web AppsSviluppare Azure Web Apps
Sviluppare Azure Web AppsAndrea Dottor
 
Introduzione a JavaScript e jQuery (1/2)
Introduzione a JavaScript e jQuery (1/2)Introduzione a JavaScript e jQuery (1/2)
Introduzione a JavaScript e jQuery (1/2)Giuseppe Vizzari
 
Cert04 70-484 - essentials of developing windows store apps
Cert04   70-484 - essentials of developing windows store appsCert04   70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store appsDotNetCampus
 
Da JavaScript a TypeScript
Da JavaScript a TypeScriptDa JavaScript a TypeScript
Da JavaScript a TypeScriptRoberto Messora
 
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Andrea Dottor
 
Azure dayroma java, il lato oscuro del cloud
Azure dayroma   java, il lato oscuro del cloudAzure dayroma   java, il lato oscuro del cloud
Azure dayroma java, il lato oscuro del cloudRiccardo Zamana
 
Single Page Applications
Single Page ApplicationsSingle Page Applications
Single Page ApplicationsRoberto Messora
 
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013Luca Zulian
 
Introduzione ai Coded UI Tests
Introduzione ai Coded UI TestsIntroduzione ai Coded UI Tests
Introduzione ai Coded UI TestsPietro Libro
 
Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Come sfruttare tutte le potenzialità di Symfony in Drupal 8Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Come sfruttare tutte le potenzialità di Symfony in Drupal 8Wellnet srl
 
Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Come sfruttare tutte le potenzialità di Symfony in Drupal 8Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Come sfruttare tutte le potenzialità di Symfony in Drupal 8Eugenio Minardi
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformGabriele Gaggi
 
Meetup ASP.NET Core Angular
Meetup ASP.NET Core AngularMeetup ASP.NET Core Angular
Meetup ASP.NET Core Angulardotnetcode
 
Agileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastrutturaAgileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastrutturaXPeppers
 

Ähnlich wie Slide typescript - xe dotnet - Codemotion Rome 2015 (20)

TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDTYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
 
SUE AGILE Framework (Italiano)
SUE AGILE Framework (Italiano)SUE AGILE Framework (Italiano)
SUE AGILE Framework (Italiano)
 
Introduzione a TypeScript
Introduzione a TypeScriptIntroduzione a TypeScript
Introduzione a TypeScript
 
Cert03 70-486 developing asp.net mvc 4 web applications
Cert03   70-486 developing asp.net mvc 4 web applicationsCert03   70-486 developing asp.net mvc 4 web applications
Cert03 70-486 developing asp.net mvc 4 web applications
 
ASP.NET MVC: Andare oltre il 100% (Web@work)
ASP.NET MVC: Andare oltre il 100% (Web@work)ASP.NET MVC: Andare oltre il 100% (Web@work)
ASP.NET MVC: Andare oltre il 100% (Web@work)
 
Sviluppare Azure Web Apps
Sviluppare Azure Web AppsSviluppare Azure Web Apps
Sviluppare Azure Web Apps
 
Introduzione a JavaScript e jQuery (1/2)
Introduzione a JavaScript e jQuery (1/2)Introduzione a JavaScript e jQuery (1/2)
Introduzione a JavaScript e jQuery (1/2)
 
Cert04 70-484 - essentials of developing windows store apps
Cert04   70-484 - essentials of developing windows store appsCert04   70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store apps
 
Tesi8
Tesi8Tesi8
Tesi8
 
Da JavaScript a TypeScript
Da JavaScript a TypeScriptDa JavaScript a TypeScript
Da JavaScript a TypeScript
 
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
 
Azure dayroma java, il lato oscuro del cloud
Azure dayroma   java, il lato oscuro del cloudAzure dayroma   java, il lato oscuro del cloud
Azure dayroma java, il lato oscuro del cloud
 
Single Page Applications
Single Page ApplicationsSingle Page Applications
Single Page Applications
 
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
 
Introduzione ai Coded UI Tests
Introduzione ai Coded UI TestsIntroduzione ai Coded UI Tests
Introduzione ai Coded UI Tests
 
Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Come sfruttare tutte le potenzialità di Symfony in Drupal 8Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Come sfruttare tutte le potenzialità di Symfony in Drupal 8
 
Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Come sfruttare tutte le potenzialità di Symfony in Drupal 8Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Come sfruttare tutte le potenzialità di Symfony in Drupal 8
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
 
Meetup ASP.NET Core Angular
Meetup ASP.NET Core AngularMeetup ASP.NET Core Angular
Meetup ASP.NET Core Angular
 
Agileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastrutturaAgileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastruttura
 

Mehr von Codemotion

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Codemotion
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyCodemotion
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaCodemotion
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserCodemotion
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Codemotion
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Codemotion
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Codemotion
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 - Codemotion
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Codemotion
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Codemotion
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Codemotion
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Codemotion
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Codemotion
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Codemotion
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Codemotion
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...Codemotion
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Codemotion
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Codemotion
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Codemotion
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Codemotion
 

Mehr von Codemotion (20)

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending story
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storia
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard Altwasser
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
 

Slide typescript - xe dotnet - Codemotion Rome 2015

  • 1. Typescript, Angular e Bootstrap assieme per applicazioni real world Andrea Boschin – Microsoft MVP - Consultant andrea@boschin.it http://blog.boschin.it http://www.xedotnet.org
  • 2. Typescript – Angular - Bootstrap Nuovi requisiti sviluppo web • Sempre maggiore interattività • Utilizzo pesante di codice client-side (javascript) • Supporto ai device mobile (responsività) • Capacità del sito/applicazione di adeguarsi a diverse dimensioni dello schermo • Feedback simile alle applicazioni desktop • Eliminazione ovunque possibile di navigazione e post-back • Utilizzo di chiamate AJAX/AJAJ • Architetture manutenibili • Strutturazione migliore del codice • Richiesto soprattutto per le applicazioni enterprise
  • 3. Typescript – Angular - Bootstrap Strumenti a supporto – Responsività • Foundation 4 • Bootstrap 3 – Componenti di interfaccia • Bootstrap 3 • AngularJS • jQuery UI • jQuery Mobile – Data binding • KnockoutJS • AngularJS – SPA • Durandal • AngularJS – Pattern MVC/MVVM • Durandal • AngularJS – Accesso al dom • jQuery – Utilizzo di AJAX/AJAJ • jQuery • AngularJS (ngHttpService) – Unit Test • AngularJS – Altre librerie • MomentJS
  • 4. Typescript – Angular - Bootstrap Strumenti a supporto – Responsività • Foundation 4 • Bootstrap 3 – Componenti di interfaccia • Bootstrap 3 • AngularJS • jQuery UI • jQuery Mobile – Data binding • KnockoutJS • AngularJS – SPA • Durandal • AngularJS – Pattern MVC/MVVM • Durandal • AngularJS – Accesso al dom • jQuery – Utilizzo di AJAX/AJAJ • jQuery • AngularJS (ngHttpService) – Unit Test • AngularJS – Altre librerie • MomentJS
  • 5. Typescript – Angular - Bootstrap La selezione • Angular (google) • Framework per lo svilluppo di applicazioni • Bootstrap (twitter) • Framework per la user interface responsiva • jQuery • Chi non lo conosce? • Prerequisito per l’utilizzo di Angular (versione minified) • MomentJS • Gestione delle date
  • 6. Typescript – Angular - Bootstrap Javascript? • Javascript è affascinante... Non c’è dubbio  • E’ un linguaggio molto divertente • Si ottengono risultati inattesi • Flessibilità incredibile • Però • È difficile da imparare • È difficile da controllare • È difficile da manutenere • in una azienda questi sono problemi reali
  • 7. Typescript – Angular - Bootstrap Typescript cosa non è? • Un framework • Un nuovo linguaggio • Un plugin per il browser • Una tecnologia «vincolante»
  • 8. Typescript – Angular - Bootstrap Typescript cosa è? • E’ un superset di Javascript • qualunque codice Javascript è Typescript valido • L’output del compilatore è Javascript • non è richiesto alcun plugin per usarlo nel browser • Aggiunge le necessarie tutele a Javascript • Ad esempio static type checking, classi, moduli, interfacce • Il codice scritto è più semplice e strutturato secondo OOP • Il codice prodotto è comprensibile e manutenibile • Non si perdono le potenzialità di Javascript • Implementa già oggi lo standard Ecma Script 6
  • 9. Typescript – Angular - Bootstrap Typescript e le librerie di terze parti • E’ possibile importare le definizioni dei tipi usando dei file di definizione • Analoghi a file «.h» di C • Hanno estensione «.d.ts» • Si trovano definizioni per quasi ogni libreria esistente. • Vedere «DefinitelyTyped» • Le definizioni possono essere importate in Visual Studio • Sono elaborate senza necessità di inclusioni • Danno accesso ai membri delle classi e alle funzioni • Non importano automaticamente la libreria! Bisogna sempre usare il tag <script /> • Possiamo scrivere noi stessi definizioni per nostre librerie esistenti
  • 11. Typescript – Angular - Bootstrap Interfacce o classi? • Uno dei vantaggi di Typescript è la tipizzazione che ci tutela da errori • E’ possibile creare propri tipi (classi) var myCar = new Car(); myCar.Plate = ‘EF 000 AH’; • E’ molto più vantaggioso usare le interfacce var myCar: ICar; myCar.Plate = ‘EF 000 AH’; • Le interfacce non generano codice Javascript. • Godiamo del controllo dei tipi ma non paghiamo lo scotto di scaricare molto codice.
  • 12. Typescript – Angular - Bootstrap Organizzare il codice • Typescript consente di dichiarare moduli • Un modulo è analogo ad un namespace di C# • I moduli hanno membri pubblici e privati • Possono essere suddivisi in diversi file per ottimizzarne il caricamento Come • Usare «export» sugli elementi che devono essere pubblici • Usare moduli annidati per una migliore organizzazione
  • 13. Typescript – Angular - Bootstrap Il contesto di «this» • In Javascript è usuale che «this» assuma diversi significati in base al contesto. • Il seguente codice è normale var _this = this; $(function() { _this.doSomething(); }) • In Typescript la sintassi lambda gestisce questo caso automaticamente $(() => { this.doSomething(); }
  • 14. Typescript – Angular - Bootstrap Angular: Controller • Tecnica: • Dichiariamo una classe • Grazie a Controller As usiamo la classe al posto dello $scope • Risultato • La classe diventa un controller • Il codice è meglio organizzato e comprensibile • Possiamo sfruttare ereditarietà • Visual Studio: L’intellisense è il nostro migliore amico!
  • 15. Typescript – Angular - Bootstrap Angular: Directive • Una direttiva è? • Si presenta come un tag HTML • Incapsula una porzione di HTML e della eventuale logica associata • Utili per: • Creare componenti riutilizzabili • Consentono di non sporcare il controller con elementi di interfaccia • Regola: solo in una direttiva posso usare jQuery e accedere al DOM • Posso • Esporre proprietà per customizzare • Rendere le proprietà «bindabili»
  • 16. Typescript – Angular - Bootstrap Bootstrap: Usare i componenti • Bootstrap contiene molti «controlli» • Conviene sempre privilegiare questi rispetto a quelli di Angular • Per utilizzarli al meglio usare • Direttive • Servizi
  • 17. Typescript – Angular - Bootstrap Angular: Gestire l’asincronia (degli altri) Problema • Le operazioni asincrone sono tipiche delle applicazioni Javascript Soluzioni • jQuery supporta le «Promise» che risolvono in modo elegante • Angular supporta le promise in proprio mediante Qservice • N.B. Preferire sempre QService a jQuery per il supporto al Databinding Come • I metodi asincroni ritornano un oggetto «IPromise» • Questo espone metodi callback come • then() = successo • catch() = eccezione • finally() = analogo a «finally» di C#
  • 18. Typescript – Angular - Bootstrap Angular: Gestire l’asincronia (propria) Problema • E se devo creare le mie operazioni asincrone? Soluzione • Il QService che consente di gestire le proprie «Promise» • L’uso di Callback classici impedisce il corretto Databinding. Come • Richiedere $q service • Usare defer – resolve - reject
  • 19. Typescript – Angular - Bootstrap Prendiamo un «moment» Lo so, la battuta è scontata...  • Moment è la migliore libreria per gestire il tipo Data in Javascript • Fa tutto...  • http://www.momentjs.com
  • 20. Andrea Boschin – Elite Agency Email: andrea@boschin.it Facebook: https://www.facebook.com/thelittlegrove Twitter: http://twitter.com/aboschin Blog: http://blog.boschin.it Contact me