angular 2+ - jfokusangular 2+ agnès crépe t @agnes_crepe t. cédric exbr ayat @cedric_exbrayat...

118
The magic behind Angular 2+

Upload: others

Post on 03-Jun-2020

14 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

The magic behind

Angular 2+

Page 2: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Agnès Crépet

@agnes_crepet

Page 3: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Cédric Exbrayat

@cedric_exbrayat

Page 4: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

@NinjaSquad

Page 5: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Lyon, France - April 20-21

Page 6: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in
Page 7: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Learn some french!

Page 8: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Bonjour !

Page 9: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Announcedin March 2014

Page 10: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Releasedin September 2016

Page 11: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in
Page 12: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

https://books.ninja-squad.com

Become a Ninja

with Angular 

 

Page 13: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

https://books.ninja-squad.com

and an online training

the Pro Packwith exercices, and ponies!

Page 14: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in
Page 15: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Under  the hoodWhy Angular is a kind of magic

Page 16: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

10min Hello Worldjust to be sure everybody knows

what we are talking about

Page 17: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Angular is aframework

Page 18: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Write your appwith...

Page 19: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

ES5(don't do that)

Page 20: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

ES6ModulesClasses

PromisesArrow functions

Block scope variablesCollections

Page 21: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

TypeScript(yes it's Microsoft)

Types (but nice ones)Decorators

...

Page 22: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

DartGreat right? I'm kidding. Nobody cares.

Page 23: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Everythingis a

Component(even the app)

Page 24: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in
Page 25: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in
Page 26: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Web Components

Page 27: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in
Page 28: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Template+

Logic

Page 29: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

The treeof life

of components

Page 30: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Ponyracer

RaceCmpMenuCmp FooterCmp

PonyCmp PonyCmp PonyCmp

Page 31: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

AppModule

Page 32: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

AppModule

AdminModule

Page 33: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Ponyracer

RaceCmpMenuCmp FooterCmp

PonyCmp PonyCmp PonyCmp

Page 34: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Ponyracer

RaceCmpMenuCmp FooterCmp

PonyCmp PonyCmp PonyCmp

Page 35: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

import { Component } from '@angular/core';

@Component({

}) class PonyComponent {

}

Page 36: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

@Component({ selector: 'ns-pony', templateUrl: './pony.component.html' }) class PonyComponent {

}

Page 37: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

<div>

<ns-pony></ns-pony>

</div>

Page 38: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

@Component({ selector: 'ns-pony', templateUrl: './pony.component.html' }) class PonyComponent {

pony = { name: 'Secretariat', color: 'blue' };

}

Page 39: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

@Component({ selector: 'ns-pony', templateUrl: './pony.component.html' }) class PonyComponent {

pony = { name: 'Secretariat', color: 'blue' };

getPonyImage() { return `pony-${this.pony.color}.gif`; } }

Page 40: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

PowerfulTemplating Syntax

Page 41: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

<p>{{pony.name}}</p>

Page 42: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Moustaches

Mustaches

Page 43: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

<p>{{pony.name}}</p>

<img [src]="getPonyImage()"/>

Page 44: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in
Page 45: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

class PonyComponent {

// ...

constructor() { setTimeout( () => this.pony.color = 'orange', 3000 ); }

// ...

Page 46: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in
Page 47: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

A n g u l a r i s

Page 48: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Change Detection

Page 49: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

 A change occurs !

Page 50: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

A change occurs

setTimeout( () => /* does something */, 3000 );

Page 51: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

App's state updates

setTimeout( () => this.pony.color = 'orange', 3000 );

Page 52: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Angular detectsthe change

Page 53: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Angular updatesthe DOM

<img [src]="getPonyImage()"/>

Page 54: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

UI is up to date!

Page 55: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

WhenHow

Page 56: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

AngularJS 1.x

Page 57: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

When

Page 58: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Always use theframework

$http, $timeout()or $scope.$apply() manually

1.x

Page 59: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

How

Page 60: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

digest

1.x

Page 61: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

<input ng-model="user.username"> <strong>{{user.username}}</strong>

<input type="password" ng-model="user.password"> <strong>{{strength}}</strong>

1.x

Page 62: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Watchers

"user.username""user.password""strength"

1.x

Page 63: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

1.x

Page 64: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

$scope.$watch( 'user.password', (val, oldVal) => { $scope.strength = computeStrength(val); } );

$scope.$watch( 'strength', (val, oldVal) => { $scope.secure = isSecure(val); } );

1.x

Page 65: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

$$watchers

'user.password' = 'abc''strength' = 2'secure' = false...

$$watchers

'user.password' = 'abc''strength' = 3'secure' = false...

$$watchers

'user.password' = 'abc''strength' = 3'secure' = true...

$$watchers

'user.password' = 'abc''strength' = 3'secure' = true...

1.x

Page 66: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

~500 watchers

~4x cycle

= 2000 evaluations... on every key press

1.x

Page 67: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Angular (2+)

2+

Page 68: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

When

Page 69: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Zone.js

2+

Page 70: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

BrowsersetTimeout

Your appsetTimeout(() => ..., 3000)

2+

Page 71: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Zone.jssetTimeout

Your appsetTimeout(() => ..., 3000)

BrowsersetTimeout

2+

Page 72: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

How

Page 73: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Ponyracer

RaceCmpMenuCmp FooterCmp

PonyCmp PonyCmp PonyCmp

2+

Page 74: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Ponyracer

RaceCmpMenuCmp FooterCmp

PonyCmp PonyCmp PonyCmp

2+

Page 75: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

No cycle anymore!

2+

Page 76: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Optimized for JS VM

2+

Page 77: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Inline caching

2+

Page 78: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

function greetings(animal) { return 'hello ' + animal.name; }

Page 79: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Where is 'name' in an object ofshape ' Human'?

Dynamic lookup

Offset 0x00ab

Ok I'll store that!

Page 80: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Cachemonomorphic

Human (name) 0x00ab

Page 81: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Where is 'name' in an object ofshape ' Human'?

Cache lookup

Let's go!

Super fast!!

Page 82: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Where is 'name' in an object ofshape ' Pony'?

Dynamic lookup

Offset 0x00de

Ok I'll store that!

Page 83: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Cachepolymorphic

Human (name) 0x00abPony (name) 0x00de

Page 84: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Ça fait chier

Fuck this shit

Page 85: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Where is 'name' in an object ofshape ' Manager'?

Dynamic lookup

Offset 0x00fg

Fuck this shitI'll check every time

Page 86: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

No Cachemegamorphic

Slower(like 10x slower)

Page 87: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

AngularJS 1.x 

eval("expr", context)

1.x

Page 88: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

AngularJS 1.x

megamorphiccalls

1.x

Page 89: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Angulargenerates code foreach component

2+

Page 90: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

PonyCmp_View.prototype. detectInternalChanges(cmp) {

var val = cmp.getPonyImage(); if (val !== this.lastVal) { this.node1 .setElementProperty('src', val); this.lastVal = val; }

}

2+

Page 91: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Angular monomorphic calls

2+

Page 92: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Change detection isa lot faster!

2+

Page 93: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Ça pète sa mère

It's soooo cool

It breaks his mom

Page 94: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Compilation

Page 95: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Slower start

Page 96: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Just in Timecompilation

Page 97: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

TS

HTML

build run

JS

JS

Just in Time

Page 98: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Ahead of Timecompilation

Page 99: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

TSHTML

build

JS

JS

Ahead of Time

TS

Page 100: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Faster start

Page 101: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Type checking

Page 102: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

const val = this.component.getPonyImage();

if (val !== this.lastVal) { this.node1 .setElementProperty('src', val); this.lastVal = val; }

Page 103: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Package size

Page 104: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

On ne peut pas savoir

We can't really know

Page 105: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

No compilerTree shakingJS generated

Page 106: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Fast and Small?

Page 107: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

AppModule

app.bundle.js (150K)

Page 108: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

/

index.html

app.bundle.js

Page 109: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Lazy loading

Page 110: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

AppModule

AdminModule

main.bundle.js (100K)

admin.bundle.js (50K)

Page 111: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Router

Page 112: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

/

index.html

main.bundle.js

/admin

admin.bundle.js

Page 113: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Multiple (mini)bundles \o/

Page 114: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

Preloading strategy

Page 115: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

/

index.html

main.bundle.js

/admin

admin.bundle.js

Page 116: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

No more magic!

Change detectionAoT compilationBundle sizeLazy loading

Page 117: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

C'était génial !This talk was

awesome!(thank you!)

Page 118: Angular 2+ - JfokusAngular 2+ Agnès Crépe t @agnes_crepe t. Cédric Exbr ayat @cedric_exbrayat @Ninja Squad. Lyon, Fr ance - April 20-21. Learn some french! Bonjour ! Announced in

@agnes_crepet@cedric_exbrayat

@NinjaSquadhttps://books.ninja-squad.com

Thanks!30% with

discount codeJFokus2017