Dev front-end @ Holimetrix
21 et 22 Avril 2016
Petite intro et rappels
Framework (M)VC
Html amélioré & data binding
Composants réutilisables attachant un comportement au DOM (directives)
Injection de dépendances (DI)
Testable
08/12/2011
07/03/2013
13/10/2010
20/10/2010
Web
Mobile web
Mobile natif
Android
iOS
Windows
Desktop
Windows Mac Linux
Une seule code base pour tous !
ES5
ES2015
Typescript
CLI
Intellisense
Debug
Mobile
Components
Prerender
Change
Render
Compile
Zones
Dependency Injection
Animate
Router
i18n
ngUpgrade
ngForward
Rerender
Permanent
Render
Ultrafast
change
detection
View
pool
Code
generation
2.5x
+ rapide que ng1
4.2x
+ rapide que ng1
5x
+ rapide que ng1
Web workers
2x plus rapide & non bloquant pour l'ui
Un module est un block de code cohérent dédié à un but spécifique.
Un module exporte du code utilisable par un autre module, généralement une classe.
export class AppComponent { }
import {AppComponent} from './app.component';
export class MyService {
constructor(service: OtherService) {
// configuration
}
someFct() {
// ...
}
}
En gros, c'est une fonction
import {Component} from 'angular2/core';
@Component({
// configuration
})
export class Application {
/* ... */
}
import {Component} from 'angular2/core';
import {Header} from './components/header/header';
import {Api} from './services/api';
@Component({
selector: 'mix-it'
template: `<header></header>`,
directives: [ Header ],
providers: [ Api ],
styles: `:host{ text-align: center; }`
})
export class MixIt {
constructor(api: Api) { /* ... */ }
}
<!-- index.html -->
<mix-it>
Your application is loading...
</mix-it>
<!-- index.html -->
<mix-it>
<header></header>
</mix-it>
<!-- properties binding -->
<input [value]="firstName">
<div [class.extraSparkle]="isDelightful">
<div [style.width]="mySize">
<label [attr.for]="someName"></label>
<!-- event binding -->
<button (click)="readRainbow($event)">
<!-- two way binding -->
<my-cmp [(title)]="name">
<!-- template directives -->
<section *ngIf="showSection">
<li *ngFor="#item of list">
@Pipe({
name: 'lowercase'
})
export class Lowercase {
transform(v: string, args: any[]) {
return v.toLowerCase();
}
}
C'est un pattern de développement dans lequel une classe reçoit ses dépendances de sources externes au lieu de les créer elle même
Angular 1
Vers
Angular 2
Awesome Angular 2 - Angular Class
Angular 2 style guide - Minko Gechev
The introduction to Reactive Programming you've been missing - André Staltz
Getting started with Angular 2 @ Devfest - Wassim Chegham
Change detection explained @ NG-NL - Pascal Precht
Creating Cross-Platform Apps with Angular 2 @ Microsoft Build - Brad Green
Angular 2 and the future of HTML5 apps @ Fluent conf - Brad Green