SlideShare a Scribd company logo
Template designed by
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
Chi siamo
• User group attivo nel nord-est d’Italia (Mestre/Padova/Treviso)
• Più di 1000 utenti registrati
• 12 eventi serali annui con cadenza mensile
• Altri eventi propri o in collaborazione con Microsoft e altre community
XeDotNet
Elite Agency
Formazione, Consulenza, Architettura, Analisi, Progettazione, Talks
Andrea Boschin
MVP Windows Development Platform
Consulente Freelance
chi siamo / chi sono
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
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
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
Contact me
Andrea Boschin – Elite Agency
Email: andrea@boschin.it
Facebook: https://www.facebook.com/thelittlegrove
Twitter: http://twitter.com/aboschin
Blog: http://blog.boschin.it

More Related Content

What's hot (20)

PPTX
AngularJS: accessibility
Vittorio Conte
 
PPTX
Angular framework
Luca Modica
 
PDF
Workshop Ideare e creare Web Applications, Introduzione ad AngularJS
Giovanni Buffa
 
PPTX
Angular js: routing
Vittorio Conte
 
PPTX
Migliora il tuo codice con knockout.js
Andrea Dottor
 
PPTX
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVM
Codemotion
 
PDF
Zend Framework Workshop Parte1
massimiliano.wosz
 
PPTX
Fe04 angular js-101
DotNetCampus
 
PPTX
AngularJS: server communication
Vittorio Conte
 
PDF
Acadevmy - Angular Overview
Francesco Sciuti
 
PPTX
ASP.NET MVC 3: se non ora, quando?
Giorgio Di Nardo
 
PPTX
Angular and beyond
Michele Aponte
 
PPT
Zend Framework Workshop Parte2
massimiliano.wosz
 
PDF
Angular - DI tricks
Michele Stieven
 
PPTX
Require js
Rajashekar Bhagavatula
 
ODP
Corso angular js base
Beniamino Ferrari
 
PDF
Java Spring Basics - Donato Andrisani - Gabriele Manfredi
Gabriele Manfredi
 
PPTX
Blazor with .net 5 - di Gerardo Greco
Giuneco S.r.l
 
PPTX
Javascript Unit Testing
Roberto Messora
 
PPTX
Selenium e testing web - di Alessio Benedetti
Giuneco S.r.l
 
AngularJS: accessibility
Vittorio Conte
 
Angular framework
Luca Modica
 
Workshop Ideare e creare Web Applications, Introduzione ad AngularJS
Giovanni Buffa
 
Angular js: routing
Vittorio Conte
 
Migliora il tuo codice con knockout.js
Andrea Dottor
 
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVM
Codemotion
 
Zend Framework Workshop Parte1
massimiliano.wosz
 
Fe04 angular js-101
DotNetCampus
 
AngularJS: server communication
Vittorio Conte
 
Acadevmy - Angular Overview
Francesco Sciuti
 
ASP.NET MVC 3: se non ora, quando?
Giorgio Di Nardo
 
Angular and beyond
Michele Aponte
 
Zend Framework Workshop Parte2
massimiliano.wosz
 
Angular - DI tricks
Michele Stieven
 
Corso angular js base
Beniamino Ferrari
 
Java Spring Basics - Donato Andrisani - Gabriele Manfredi
Gabriele Manfredi
 
Blazor with .net 5 - di Gerardo Greco
Giuneco S.r.l
 
Javascript Unit Testing
Roberto Messora
 
Selenium e testing web - di Alessio Benedetti
Giuneco S.r.l
 

Similar to TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD (20)

PPTX
Introduzione a TypeScript
Sinergia Totale
 
PDF
DotNetToscana - Sessione TypeScript
Sinergia Totale
 
PPTX
Da JavaScript a TypeScript
Roberto Messora
 
PDF
Data binding libera tutti!
Salvatore Laisa
 
PDF
Data binding libera tutti!
Appsterdam Milan
 
PDF
TypeScript, ovvero JavaScript che "non si rompe"
BENTOSA
 
PDF
Acadevmy - TypeScript Overview
Francesco Sciuti
 
PPTX
Corso 3 giorni Angular 2+
Emanuele Benedetti
 
PPTX
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
Gabriele Gaggi
 
PPTX
Come sviluppare applicazioni cross device con HTML
Sinergia Totale
 
PPTX
Angular in produzione: Best Practices e Performance Improvements
Michele Aponte
 
PDF
Introduzione ad ECMAScript 6 (ES6) e TypeScript
Giovanni Buffa
 
PPTX
Meetup ASP.NET Core Angular
dotnetcode
 
PDF
Introduzione ad angular 7/8
Valerio Radice
 
PDF
Angular kit e Design system del Paese - Meetup ngRome 30 Gennaio 2023
AndreaStagi3
 
PDF
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
Andrea Picchi
 
PPTX
Single Page Application con Angular 2
Michele Aponte
 
PPTX
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Gabriele Gaggi
 
PPTX
Bootstrap
Marco Buttolo
 
PPT
Presentazione Corso - Parte 3
Giorgio Carpoca
 
Introduzione a TypeScript
Sinergia Totale
 
DotNetToscana - Sessione TypeScript
Sinergia Totale
 
Da JavaScript a TypeScript
Roberto Messora
 
Data binding libera tutti!
Salvatore Laisa
 
Data binding libera tutti!
Appsterdam Milan
 
TypeScript, ovvero JavaScript che "non si rompe"
BENTOSA
 
Acadevmy - TypeScript Overview
Francesco Sciuti
 
Corso 3 giorni Angular 2+
Emanuele Benedetti
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
Gabriele Gaggi
 
Come sviluppare applicazioni cross device con HTML
Sinergia Totale
 
Angular in produzione: Best Practices e Performance Improvements
Michele Aponte
 
Introduzione ad ECMAScript 6 (ES6) e TypeScript
Giovanni Buffa
 
Meetup ASP.NET Core Angular
dotnetcode
 
Introduzione ad angular 7/8
Valerio Radice
 
Angular kit e Design system del Paese - Meetup ngRome 30 Gennaio 2023
AndreaStagi3
 
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
Andrea Picchi
 
Single Page Application con Angular 2
Michele Aponte
 
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Gabriele Gaggi
 
Bootstrap
Marco Buttolo
 
Presentazione Corso - Parte 3
Giorgio Carpoca
 
Ad

More from DotNetCampus (20)

PDF
ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
DotNetCampus
 
PPTX
MICROSOFT E IL MONDO IOT
DotNetCampus
 
PPTX
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
DotNetCampus
 
PDF
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
DotNetCampus
 
PDF
70-483: PROGRAMMING IN C#
DotNetCampus
 
PPTX
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
DotNetCampus
 
PPTX
TUTTO SU VISUAL STUDIO ALM 2015
DotNetCampus
 
PPTX
CONTINUOUS INTEGRATION CON SQL SERVER
DotNetCampus
 
PPTX
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATA
DotNetCampus
 
PPTX
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDI
DotNetCampus
 
PPTX
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZURE
DotNetCampus
 
PPTX
SHAREPOINT 2016 - WHAT'S NEW
DotNetCampus
 
PPTX
COSTRUISCI IL TUO DEVICE
DotNetCampus
 
PPTX
SVILUPPARE PER MICROSOFT BAND
DotNetCampus
 
PPTX
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!
DotNetCampus
 
PPTX
WINDOWS PHONE APPS IN C++
DotNetCampus
 
PPTX
AZURE NOTIFICATION HUB
DotNetCampus
 
PPTX
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMS
DotNetCampus
 
PPTX
INTRO TO XAMARIN
DotNetCampus
 
PPTX
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
DotNetCampus
 
ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
DotNetCampus
 
MICROSOFT E IL MONDO IOT
DotNetCampus
 
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
DotNetCampus
 
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
DotNetCampus
 
70-483: PROGRAMMING IN C#
DotNetCampus
 
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
DotNetCampus
 
TUTTO SU VISUAL STUDIO ALM 2015
DotNetCampus
 
CONTINUOUS INTEGRATION CON SQL SERVER
DotNetCampus
 
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATA
DotNetCampus
 
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDI
DotNetCampus
 
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZURE
DotNetCampus
 
SHAREPOINT 2016 - WHAT'S NEW
DotNetCampus
 
COSTRUISCI IL TUO DEVICE
DotNetCampus
 
SVILUPPARE PER MICROSOFT BAND
DotNetCampus
 
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!
DotNetCampus
 
WINDOWS PHONE APPS IN C++
DotNetCampus
 
AZURE NOTIFICATION HUB
DotNetCampus
 
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMS
DotNetCampus
 
INTRO TO XAMARIN
DotNetCampus
 
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
DotNetCampus
 
Ad

Recently uploaded (20)

PDF
Principles of Macroeconomics 6th Edition Mankiw Solutions Manual
sxibiti690
 
PDF
Light Vehicle Diesel Engines 1st Edition Halderman Solutions Manual
nijwccffzp991
 
PDF
Financial Accounting Libby 7th Edition Solutions Manual
imadwul6845
 
PDF
Test bank Health Assessment for Nursing Practice 6th Edition Wilson
tevbdxjqt378
 
PDF
Fondamenti Di Botanica Generale. Teoria E Pratica In Laboratorio Simonetta Pa...
wsjixmfejv1105
 
PDF
Core Concepts of Accounting Information Systems 14th Edition Simkin Test Bank
uxtjmnkih5329
 
PDF
Computer Security Principles And Practice 2nd Edition Stallings Solutions Manual
fkadqvqtu4098
 
PDF
Macroeconomics 13th Edition Parkin Test Bank
dfehpsepb7021
 
PDF
Charlees Choices Dreamcatchers Mc Liberty Parker
nkqnohnveu1806
 
PDF
Anfibios_Ra_sapo_e_cobracega_Jackson_Jessiara_Igor.pdf
JacksonOliveira795359
 
PDF
Test Bank for Organizational Behavior, 10th Edition: Schermerhorn
gxjouyv985
 
PDF
Galatians Verse By Verse 1st Edition Grant R Osborne
hndmlbx602
 
PDF
Test Bank for Environment The Science Behind the Stories, 4th Edition : Withgott
aorkypwd003
 
PDF
Microelettronica 5th Edition Richard C. Jaeger
ierumjlbao1610
 
PDF
Test Bank for Biology: Concepts and Investigations, 4th Edition, Mariëlle Hoe...
acdzlaffy1625
 
PDF
Macroeconomics Principles Applications and Tools 8th Edition OSullivan Soluti...
dvbnrnua706
 
PDF
(eBook PDF) Organizational Behaviour Concepts, Controversies, Applications, 8...
oquupwilm583
 
PDF
Groovecoordination For Drum Set Volume 1 Andr Oettel
nhneghzysj938
 
PDF
Innovation and Entrepreneurship 3rd Edition Bessant Test Bank
uwkwdnmq903
 
PDF
Computer Accounting with QuickBooks Online 1st Edition Kay Test Bank
hkmqlqbqch8824
 
Principles of Macroeconomics 6th Edition Mankiw Solutions Manual
sxibiti690
 
Light Vehicle Diesel Engines 1st Edition Halderman Solutions Manual
nijwccffzp991
 
Financial Accounting Libby 7th Edition Solutions Manual
imadwul6845
 
Test bank Health Assessment for Nursing Practice 6th Edition Wilson
tevbdxjqt378
 
Fondamenti Di Botanica Generale. Teoria E Pratica In Laboratorio Simonetta Pa...
wsjixmfejv1105
 
Core Concepts of Accounting Information Systems 14th Edition Simkin Test Bank
uxtjmnkih5329
 
Computer Security Principles And Practice 2nd Edition Stallings Solutions Manual
fkadqvqtu4098
 
Macroeconomics 13th Edition Parkin Test Bank
dfehpsepb7021
 
Charlees Choices Dreamcatchers Mc Liberty Parker
nkqnohnveu1806
 
Anfibios_Ra_sapo_e_cobracega_Jackson_Jessiara_Igor.pdf
JacksonOliveira795359
 
Test Bank for Organizational Behavior, 10th Edition: Schermerhorn
gxjouyv985
 
Galatians Verse By Verse 1st Edition Grant R Osborne
hndmlbx602
 
Test Bank for Environment The Science Behind the Stories, 4th Edition : Withgott
aorkypwd003
 
Microelettronica 5th Edition Richard C. Jaeger
ierumjlbao1610
 
Test Bank for Biology: Concepts and Investigations, 4th Edition, Mariëlle Hoe...
acdzlaffy1625
 
Macroeconomics Principles Applications and Tools 8th Edition OSullivan Soluti...
dvbnrnua706
 
(eBook PDF) Organizational Behaviour Concepts, Controversies, Applications, 8...
oquupwilm583
 
Groovecoordination For Drum Set Volume 1 Andr Oettel
nhneghzysj938
 
Innovation and Entrepreneurship 3rd Edition Bessant Test Bank
uwkwdnmq903
 
Computer Accounting with QuickBooks Online 1st Edition Kay Test Bank
hkmqlqbqch8824
 

TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD

  • 1. Template designed by Typescript, Angular e Bootstrap assieme per applicazioni real world Andrea Boschin – Microsoft MVP - Consultant [email protected] http://blog.boschin.it http://www.xedotnet.org
  • 2. Chi siamo • User group attivo nel nord-est d’Italia (Mestre/Padova/Treviso) • Più di 1000 utenti registrati • 12 eventi serali annui con cadenza mensile • Altri eventi propri o in collaborazione con Microsoft e altre community XeDotNet
  • 3. Elite Agency Formazione, Consulenza, Architettura, Analisi, Progettazione, Talks Andrea Boschin MVP Windows Development Platform Consulente Freelance chi siamo / chi sono
  • 4. 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
  • 5. 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
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. Typescript – Angular – Bootstrap Typescript cosa non è? • Un framework • Un nuovo linguaggio • Un plugin per il browser • Una tecnologia «vincolante»
  • 10. 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
  • 11. 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
  • 13. 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.
  • 14. 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
  • 15. 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(); }
  • 16. 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!
  • 17. 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»
  • 18. 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
  • 19. 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#
  • 20. 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
  • 21. 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
  • 22. Contact me Andrea Boschin – Elite Agency Email: [email protected] Facebook: https://www.facebook.com/thelittlegrove Twitter: http://twitter.com/aboschin Blog: http://blog.boschin.it