際際滷

際際滷Share 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 allinterno 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 unespressione
Angular2 application
4 steps:
1. Creare un entry point
2. Caricare la libreria Angular allinizio del file
3. Creare un componente di root dellapplicazione
4. Fare il Bootstrap di Angular
Entry Point
<html>
<head>
<script src=/VittorioConte/angularjs-20-47959089/"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 dellHTML 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

AngularJS 2.0

Editor's Notes

  1. Da verificare