Top Banner
AngularJS 2.0 vconte .it
29

AngularJS 2.0

Aug 04, 2015

Download

Technology

Vittorio Conte
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: AngularJS 2.0

AngularJS 2.0

vconte.it

Page 2: AngularJS 2.0

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

Page 3: AngularJS 2.0

ECMAScript Harmony

❏ 1999 ECMAScript 3❏ 2008 abbandono della versione 4 (troppo ambiziosa)❏ 2009 esce ECMAScript 5 (poche novità)❏ 2015 si attende ECMAScript 6 (Harmony)

Page 4: AngularJS 2.0

ES6 - New Features

❏ classes❏ iterators + for..of❏ modules❏ promises❏ math + number + string + array + object APIs❏ ...

Page 5: AngularJS 2.0

ES6 - Non ancora supportato

❏ Non è ancora stato presentato ES6❏ I browser attuali supportano ES5❏ Traceur per usare le feature ES6 su ES5

Page 6: AngularJS 2.0

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)

Page 7: AngularJS 2.0

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

Page 8: AngularJS 2.0

Performance

"Today, Angular2 is 5x faster than Angular 1"

Misko, 2/10/15

Page 9: AngularJS 2.0

Performance

Page 10: AngularJS 2.0

Curva di apprendimento

AngularJS 1.x

Moduli

Direttive Custom

Intro

Page 11: AngularJS 2.0

Semplificare

❏ Dependency Injection ❏ Templating❏ Persistance❏ Routing❏ ...

Page 12: AngularJS 2.0

Cosa cambierà?

❏ Scope ❏ Controller❏ Directive❏ Module❏ ... TUTTO!

Page 13: AngularJS 2.0

Development

Page 14: AngularJS 2.0

Development

❏ AtScript è un linguaggio di scripting sviluppato da Google

❏ TypeScript è un linguaggio di scripting creato da Microsoft

❏ AtScript è TypeScript (ng-conf 2015)

Page 15: AngularJS 2.0

Development

❏ Supporterà ❏ ES5 ❏ ES6❏ TypeScript

❏ E linguaggi javascript compilati come❏ CoffeeScript ❏ ClojureScript

Page 16: AngularJS 2.0

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

Page 17: AngularJS 2.0

Local Variables

<div> <input #name type="text"> {{name.value}}</div>

#variabileLocale referenziabile all’interno del template

Page 18: AngularJS 2.0

Event Handlers

<div> <input #name type="text" (keyup) /> Hello {{name.value}} !!!</div>

(event)=”controllerMethod()” è possibile associare metodi agli eventi del DOM (click, keyup, mouseover, ...)

Page 19: AngularJS 2.0

Property Binding

<div> <button [disabled]="name.value == '' " (click)="name.value = ''"> Clear </button></div>

[property] lega una proprietà del DOM al risultato di un’espressione

Page 20: AngularJS 2.0

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

Page 21: AngularJS 2.0

Entry Point<html><head> <script src="https://github.jspm.io/jmcriffey/[email protected]/traceur-runtime.js"></script> <script src="https://jspm.io/[email protected]"></script> <script src="angular2.dev.js"></script></head><body><my-app></my-app><script> System.import('main');</script></body></html>

Page 22: AngularJS 2.0

Starting Component (TypeScript)import {Component, View, bootstrap} from 'angular2/angular2';

@View({ templateUrl: 'helloTemplate.html'})@Component({ selector: 'my-app'})class AppComponent {

constructor() {}}

bootstrap(AppComponent);

Page 23: AngularJS 2.0

Bootstrap import {Component, View, bootstrap} from 'angular2/angular2'...bootstrap(AppComponent);

❏ Cosa si deduce da questa sintassi? Lazy Loading!!!

Page 24: AngularJS 2.0

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>...

Page 25: AngularJS 2.0

View

La view annotation consente la definizione dell’HTML che rappresenta il modello

@View({

templateUrl: 'helloTemplate.html'

})

❏ template: stringa HTML ❏ templateUrl url del template

Page 26: AngularJS 2.0

Template (helloTemplate.html)<div> <input #name type="text" (keyup) /> Hello {{name.value}} !!! <button [disabled]="name.value == ''" (click)="name.value = ''"> Clear </button></div>

Page 27: AngularJS 2.0

Migrazione a 2.0

❏ Crearlo senza vincoli con il passato❏ Renderlo quindi compatibile con le vecchie API

Page 28: AngularJS 2.0

About me

❏ Sito: http://www.vconte.it/

❏ Email: [email protected]

❏ LinkedIn: http://www.linkedin.com/pub/vittorio-conte/30/29a/191❏ AngularJS Italia

❏ LinkedIn: https://www.linkedin.com/groups/AngularJS-Italia-7442742

❏ Twitter: @AngularJSItalia

Page 29: AngularJS 2.0

Materiale

blog ufficiale: https://blog.angularjs.org/sito ufficiale: http://angular.io/presentazione ng-europe: http://bit.ly/1EZPJZW