mantendo desempenho e integridade em uma aplicação angular … · - aplicações angular...

47
Mantendo desempenho e integridade em uma aplicação Angular real-time

Upload: others

Post on 03-Jun-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça

Mantendo desempenho e integridade em uma aplicação Angular real-time

Page 2: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça

- Questrade:- Aplicações angular híbrida: - AngularJS vs Angular:

Melhores práticas: Angular, React, Vue

Page 3: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça

Lucas MendonçaSenior Front-end Engineer at Questrade Financial Group

Page 4: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça
Page 5: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça
Page 7: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça
Page 8: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça

Real-time and Change-detection-heavy appHigh performance necessityFinancial criticalFull responsive

03countries

>90%unit testscoverage

e2e automationmanual tests

Page 9: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça

web socket

SPAAngularJS and Angular components

WEB SERVERNode.js

Page 10: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça

VS

Page 11: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça

Upgrading and downgrading concepts

Page 12: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça
Page 13: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça

import { HeroDetailComponent } from './hero-detail.component';import { downgradeComponent } from '@angular/upgrade/static';

angular.module('heroApp', []).directive(

'heroDetail',

downgradeComponent({ component: HeroDetailComponent }) as angular.IDirectiveFactory

);

12

34

5

6

Page 14: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça

import { UpgradeComponent } from '@angular/upgrade/static';

@Directive({ selector: 'hero-detail-upgraded' })export class HeroDetailDirective extends UpgradeComponent {

constructor(elementRef: ElementRef, injector: Injector){ super('heroDetail', elementRef, injector);

}

}

2

34

56

Page 15: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça
Page 16: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça
Page 17: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça

(2)

(3)

(4)

(1)

(5)

Page 18: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça

(2)

(3)

(4)

(1)

(5)

Page 19: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça
Page 20: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça

(1)

Page 21: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça

(2)

(1)

Page 22: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça
Page 23: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça
Page 24: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça
Page 25: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça
Page 26: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça

(1)

(2)

Page 27: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça

(2)

(1)

Page 28: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça

(3)

(2)

(1)

Page 29: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça
Page 30: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça

VS

angular digest cycle

$scope.$apply() / $scope.$digest()

dirty-checking

change detection

zone.js (ngZone)

better performance

async functions, XHR requests, user events (mouse, click, input)

Page 31: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça
Page 32: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça
Page 33: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça

VS

angular digest cycle

$scope.$apply() / $scope.$digest()

dirty-checking

change detection

zone.js (ngZone)

better performance

async functions, XHR requests, user events (mouse, click, input)

Page 34: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça
Page 35: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça
Page 36: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça

UpgradeModule downgradeModule

Page 37: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça

UpgradeModule:

Page 38: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça

downgradeModule:

Page 39: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça

Pros:

Cons:

Pros:

Cons:

Page 40: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça

Why?

Page 41: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça
Page 44: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça

- ChangeDetectionStrategy

- Up to date libraries-

- AOT

- Lazy loading

Page 45: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça

- Hybrid apps- no emulation- all code is running exclusively in its own scope- Good hybrid apps architecture can keep performance - Services and components are shareable

- Change detection- Angular provides good "magic" strategies to detect changes

- ngZone, Zone.js- You can define and control how Angular should detect changes

- Upgrade soon as possible

- No silver bullet- but think more about downgradeModule

Page 46: Mantendo desempenho e integridade em uma aplicação Angular … · - Aplicações angular híbrida: - AngularJS vs Angular: Melhores práticas: Angular, React, Vue. Lucas Mendonça

?