SlideShare a Scribd company logo
AngularJS 2.0
vconte.it
Perchè Angular 2.0?
❏ AngularJS 1.0 risale al 2009
❏ Il web sta cambiando:
❏ ES5 -> ES6
❏ Sempre più orientato al mobile
❏ Punti Critici Community
❏ Lazy Loading
❏ Performance (amore e odio con il binding)
❏ Troppi concetti - apprendimento a singhiozzo
ECMAScript Harmony
❏ 1999 ECMAScript 3
❏ 2008 abbandono della versione 4 (troppo ambiziosa)
❏ 2009 esce ECMAScript 5 (poche novità)
❏ 2015 si attende ECMAScript 6 (Harmony)
ES6 - New Features
❏ classes
❏ iterators + for..of
❏ modules
❏ promises
❏ math + number + string + array + object APIs
❏ ...
ES6 - Non ancora supportato
❏ Non è ancora stato presentato ES6
❏ I browser attuali supportano ES5
❏ Traceur per usare le feature ES6 su ES5
Pensato per il mobile
❏ Best practice per applicazioni mobile/desktop
❏ Pensarla per il mobile
❏ Estenderla per il desktop
❏ AngularJS 2.0 è pensato per il mobile (ng-conf 2015)
Lazy Loading
❏ AngularJS 1.x non supporta il lazy loading
❏ Da sempre una delle feature più desiderate
❏ Bisogna scaricare intera libreria
❏ Leggera per app desktop non per mobile
Performance
"Today, Angular2 is 5x faster than Angular 1"
Misko, 2/10/15
Performance
Curva di apprendimento
AngularJS 1.x
Moduli
Direttive Custom
Semplificare
❏ Dependency Injection
❏ Templating
❏ Persistance
❏ Routing
❏ ...
Cosa cambierà?
❏ Scope
❏ Controller
❏ Directive
❏ Module
❏ ...
Development
Development
❏ AtScript è un linguaggio di scripting sviluppato da
Google
❏ TypeScript è un linguaggio di scripting creato da
Microsoft
❏ AtScript è TypeScript (ng-conf 2015)
Development
❏ Supporterà
❏ ES5
❏ ES6
❏ TypeScript
❏ E linguaggi javascript compilati come
❏ CoffeeScript
❏ ClojureScript
Confronto
<div ng-app="helloController">
<input type=”text” ng-model=”name”/>
Hello {{name}}!!!
<button ng-disabled="name.value == '' "
ng-click="name.value = ''"> Clear </button>
</div>
<div>
<input #name type="text" (keyup) /> Hello
{{name.value}} !!!
<button [disabled]="name.value == '' "
(click)="name.value = ''"> Clear </button>
</div>
ANGULARJS 1.x ANGULARJS 2.0
Local Variables
<div>
<input #name type="text">
{{name.value}}
</div>
#variabileLocale referenziabile all’interno del template
Event Handlers
<div>
<input #name type="text" (keyup) /> Hello {{name.value}} !!!
</div>
(event)=”controllerMethod()” è possibile associare metodi agli eventi del DOM
(click, keyup, mouseover, ...)
Property Binding
<div>
<button [disabled]="name.value == '' " (click)="name.value = ''"> Clear </button>
</div>
[property] lega una proprietà del DOM al risultato di un’espressione
Angular2 application
4 steps:
1. Creare un entry point
2. Caricare la libreria Angular all’inizio del file
3. Creare un componente di root dell’applicazione
4. Fare il Bootstrap di Angular
Entry Point
<html>
<head>
<script src="https://github.jspm.io/jmcriffey/bower-traceur-runtime@0.0.87/traceur-
runtime.js"></script>
<script src="https://jspm.io/system@0.16.js"></script>
<script src="angular2.dev.js"></script>
</head>
<body>
<my-app></my-app>
<script>
System.import('main');
</script>
</body>
</html>
Starting Component (TypeScript)
import {Component, View, bootstrap} from 'angular2/angular2';
@View({
templateUrl: 'helloTemplate.html'
})
@Component({
selector: 'my-app'
})
class AppComponent {
constructor() {}
}
bootstrap(AppComponent);
Bootstrap
import {Component, View, bootstrap} from 'angular2/angular2'
...
bootstrap(AppComponent);
❏ Cosa si deduce da questa sintassi? Lazy Loading!!!
Component
“Angular applications are a tree of nested components. You always begin with a top-level component.
You add child components by including them in the parent's template.” [angular.io]
@Component({
selector: 'my-app'
})
❏ @Component: annotation consente la dichiarazione di un componente.
❏ selector definisce il tag del componente
class AppComponent {
constructor() {}
}
❏ class: specifica la logica applicativa del componente
...
<my-app></my-app>
...
View
La view annotation consente la definizione dell’HTML che rappresenta il modello
@View({
templateUrl: 'helloTemplate.html'
})
❏ template: stringa HTML
❏ templateUrl url del template
Template (helloTemplate.html)
<div>
<input #name type="text" (keyup) /> Hello {{name.value}} !!!
<button [disabled]="name.value == ''" (click)="name.value = ''"> Clear </button>
</div>
Migrazione a 2.0
❏ Crearlo senza vincoli con il passato
❏ Renderlo quindi compatibile con le vecchie API
About me
❏ Sito: http://www.vconte.it/
❏ Email: vitconte@gmail.com
❏ LinkedIn: http://www.linkedin.com/pub/vittorio-conte/30/29a/191
❏ AngularJS Italia
❏ LinkedIn: https://www.linkedin.com/groups/AngularJS-Italia-7442742
❏ Twitter: @AngularJSItalia
Materiale
blog ufficiale: https://blog.angularjs.org/
sito ufficiale: http://angular.io/
presentazione ng-europe: http://bit.ly/1EZPJZW

More Related Content

What's hot (20)

PPTX
AngularJS: server communication
Vittorio Conte
 
PDF
Workshop angular
Emidio Croci
 
PDF
Applicazioni Web ultra-performanti con Vue.js e Delphi
Marco Breveglieri
 
PPTX
Slide typescript - net campus
DotNetCampus
 
PPTX
Migliora il tuo codice con knockout.js
Andrea Dottor
 
PDF
Sviluppo Web con React e Delphi - Seminario Delphi Day 2016, Piacenza
Marco Breveglieri
 
PPTX
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Gabriele Gaggi
 
PDF
Angular js o React? Spunti e idee per la scelta di un framework
Giovanni Buffa
 
PPTX
Asp.net 4 Community Tour VS2010
Fabrizio Bernabei
 
PDF
Salvatore Laisa, WordPress + JQuery
KnowCamp
 
PPTX
Selenium e testing web - di Alessio Benedetti
Giuneco S.r.l
 
PPTX
Require js
Rajashekar Bhagavatula
 
PPTX
Blazor with .net 5 - di Gerardo Greco
Giuneco S.r.l
 
PDF
Il Web orientato al futuro: Express, Angular e nodeJS
Eugenio Minardi
 
PPTX
Introduction to C#
Guido Magrin
 
PDF
Tech Webinar: Advanced AngularJS, tecniche avanzate per padroneggiare il fram...
Codemotion
 
PDF
ReactJS for beginners
Ilaria Franchini
 
PDF
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
Andrea Picchi
 
PDF
Blazor: are we ready for the launch?
Andrea Agnoletto
 
PDF
App Mobile Powerapps
Giuneco S.r.l
 
AngularJS: server communication
Vittorio Conte
 
Workshop angular
Emidio Croci
 
Applicazioni Web ultra-performanti con Vue.js e Delphi
Marco Breveglieri
 
Slide typescript - net campus
DotNetCampus
 
Migliora il tuo codice con knockout.js
Andrea Dottor
 
Sviluppo Web con React e Delphi - Seminario Delphi Day 2016, Piacenza
Marco Breveglieri
 
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Gabriele Gaggi
 
Angular js o React? Spunti e idee per la scelta di un framework
Giovanni Buffa
 
Asp.net 4 Community Tour VS2010
Fabrizio Bernabei
 
Salvatore Laisa, WordPress + JQuery
KnowCamp
 
Selenium e testing web - di Alessio Benedetti
Giuneco S.r.l
 
Blazor with .net 5 - di Gerardo Greco
Giuneco S.r.l
 
Il Web orientato al futuro: Express, Angular e nodeJS
Eugenio Minardi
 
Introduction to C#
Guido Magrin
 
Tech Webinar: Advanced AngularJS, tecniche avanzate per padroneggiare il fram...
Codemotion
 
ReactJS for beginners
Ilaria Franchini
 
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
Andrea Picchi
 
Blazor: are we ready for the launch?
Andrea Agnoletto
 
App Mobile Powerapps
Giuneco S.r.l
 

Similar to AngularJS 2.0 (20)

PPTX
Fe04 angular js-101
DotNetCampus
 
ODP
Corso angular js componenti
Beniamino Ferrari
 
PDF
Acadevmy - Angular Overview
Francesco Sciuti
 
PDF
Introduzione ad angular 7/8
Valerio Radice
 
ODP
Corso angular js base
Beniamino Ferrari
 
PPTX
Corso 3 giorni Angular 2+
Emanuele Benedetti
 
PPTX
Angular framework
Luca Modica
 
PPTX
Slide typescript - xe dotnet - Codemotion Rome 2015
Codemotion
 
PDF
Introduzione ai componenti in Angular 4
Giovanni Buffa
 
PPTX
Meetup ASP.NET Core Angular
dotnetcode
 
ODP
Corso angular js material
Beniamino Ferrari
 
PDF
Angular 4 - convertire o migrare un'applicazione Angularjs
Giovanni Buffa
 
PPTX
Angular in produzione: Best Practices e Performance Improvements
Michele Aponte
 
PDF
Data binding libera tutti!
Salvatore Laisa
 
PDF
Data binding libera tutti!
Appsterdam Milan
 
PPTX
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
DotNetCampus
 
PDF
DrupalDay 2014: AngularJS + IonicFramework + Drupal Services
Michel Morelli
 
PDF
DDAY2014 - Costruire una app mobile con Ionic, AngularJS ed ovviamente Drupal
DrupalDay
 
PPTX
Open Day June 17th Creare componenti AngularJS riutilizzabili tra applicazioni
Vendini-Italy
 
PPTX
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
Gabriele Gaggi
 
Fe04 angular js-101
DotNetCampus
 
Corso angular js componenti
Beniamino Ferrari
 
Acadevmy - Angular Overview
Francesco Sciuti
 
Introduzione ad angular 7/8
Valerio Radice
 
Corso angular js base
Beniamino Ferrari
 
Corso 3 giorni Angular 2+
Emanuele Benedetti
 
Angular framework
Luca Modica
 
Slide typescript - xe dotnet - Codemotion Rome 2015
Codemotion
 
Introduzione ai componenti in Angular 4
Giovanni Buffa
 
Meetup ASP.NET Core Angular
dotnetcode
 
Corso angular js material
Beniamino Ferrari
 
Angular 4 - convertire o migrare un'applicazione Angularjs
Giovanni Buffa
 
Angular in produzione: Best Practices e Performance Improvements
Michele Aponte
 
Data binding libera tutti!
Salvatore Laisa
 
Data binding libera tutti!
Appsterdam Milan
 
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
DotNetCampus
 
DrupalDay 2014: AngularJS + IonicFramework + Drupal Services
Michel Morelli
 
DDAY2014 - Costruire una app mobile con Ionic, AngularJS ed ovviamente Drupal
DrupalDay
 
Open Day June 17th Creare componenti AngularJS riutilizzabili tra applicazioni
Vendini-Italy
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
Gabriele Gaggi
 
Ad

AngularJS 2.0

Editor's Notes