Loiane Groner @loiane github.com/loiane loiane.com loiane.training ionic reativo Empodere seu app com RxJS e ngRx
Loiane Groner @loiane github.com/loiane loiane.com loiane.training Java, JavaScript/HTML5, Sencha, Angular, Phonegap/ Ionic
Disponível (inglês) na amazon.com.br
https://novatec.com.br/livros/estruturas-de-dados-algoritmos-em-javascript/
Elevar o padrão de desenvolvimento dos seus apps com programação e padrões reativos
Stack de tecnologias + ==
Tecnologias abordadas
Programação eativa
http://www.reactivemanifesto.org/pt-BR Manifesto Reativo
“que reage, responde a estímulos” Reativo
Reage a dados que são transmitidos ao longo do tempo
Reagir a informações
Reagir a usuários
Reagir a erros
Extensões reativas (RxJS) http://reactivex.io/
Objeto Promise Iterable Observable Síncrono Assíncrono ValorúnicoMúltiplosvalores Panorama da teoria da reatividade
EcmaScript 2018
+ +
Http
Http Services
Http Services
Http Services
Http Services
Http Services
Operadores
Transformar => map http://rxmarbles.com/#map
Filtrar informações => filter http://rxmarbles.com/#filter
Redução => reduce http://rxmarbles.com/#reduce
Desativar => debounce http://rxmarbles.com/#debounce
https://yakovfain.files.wordpress.com/2017/04/operators.png
Pipe | async
Pipe Async
Pipe Async
Pipe Async Observable<boolean> Observable<Course[]> async == subscribe + unsubscribe
Formulários Reativos
Formulários Reativos
Formulários Reativos
Padrões eativos
Gerenciar o estado e controle de fluxo
COMPONENTE {…} SERVIÇO COMPONENTE {…} COMPONENTE {…} COMPONENTE {…} SERVIÇO SERVIÇO SERVIÇO SERVIÇO COMPONENTE {…} SERVIÇO
Redux é uma biblioteca, e também é um padrão
ACTIONS REDUCERS STORE VIEW Redux dispatch subscribe
https://github.com/ngrx
Show me the app!
Configuração @ngrx/store v2.2
Configuração @ngrx/store v2.2
Estado da App @ngrx/store v2.2
Estado flui para baixo store service / provider component / page template
Store select
Store select
Store select
store.select de um pedaço do estado
store.select de um pedaço do estado reselect
RxJS pode ser usado no lugar do selector
RxJS pode ser usado no lugar do selector
Component -> Template
Component -> Template Observable<Tasks[]> async == subscribe + unsubscribe
Component -> Template
Component -> Template Dumb Component
Componente de apresentação
Componente de apresentação código + simples + fácil de testar
Eventos fluem para cima store service / provider component / page template
Componente container: dispatch Action
Componente container: dispatch Action Escuta o evento do componente filho
Componente container: dispatch Action Escuta o evento do componente filho
Definição das Ações
Definição das Ações
reducer
reducer imutabilidade +
reducer imutabilidade + funções puras
Estado inicial - reducer
Store side effects Efeitos Colaterais @ngrx/effects
Ajax: 2 ações para cada operação
Effects
Effects Chamada Service - API
Effects Chamada Service - API dispatch ação de sucesso para o reducer
Provider continua o mesmo
@ngrx/router-store
Navegação por pilha
Encadeamento de Effects
Effect para Navegação
Effect para Navegação Ionic 3 tem Lazy Loading Nome da página por String
Plugins Cordova Ionic Native
select Foto
select Foto
select Foto Observables nos templates! Streams
Dispatch
Dispatch
Effects com Ionic Native
Effects com Ionic Native
@ngrx/platform (v4)
@ngrx/platform (v4: beta)
@ngrx/platform (v4: beta) Injeta o estado do módulo no AppState apenas depois que o módulo for carregado via lazy loading
Redux DevTools
https://www.npmjs.com/package/ngrx-store-ionic-storage
https://github.com/loiane/ionic3-firebase-ngrx
Pra estudar mais… • https://angular.io/docs/ts/latest/guide/reactive-forms.html • https://angular.io/docs/ts/latest/guide/server-communication.html • https://angular.io/docs/ts/latest/guide/router.html • https://github.com/Reactive-Extensions/RxJS/blob/master/doc/gettingstarted/categories.md • https://gist.github.com/btroncone/d6cf141d6f2c00dc6b35 • http://rxmarbles.com/ • http://reactivex.io/documentation/operators • https://github.com/ngrx • https://github.com/ngrx/example-app • https://auth0.com/blog/understanding-angular-2-change-detection/ • http://blog.brecht.io/A-scalable-angular2-architecture/ • http://blog.mgechev.com/2016/04/10/scalable-javascript-single-page-app-angular2- application-architecture/
Quer aprender mais sobre Angular (2.x e 4.x)? /loianegroner
https://www.slideshare.net/loianeg
http://loiane.com facebook.com/loianegroner twitter.com/loiane https://github.com/loiane youtube.com/loianegroner http://loiane.training

JS Experience 2017 - Programação reativa com Ionic