SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
Globalcode – Open4education
Trilha – Javascript
Programação Funcional Reativa. Ou como Bacon pode facilitar seu dia
Erich Oliveira
Desenvolvedor em winnin.com
Globalcode – Open4education
Sobre mim
Desenvolvedor back e front ~8 anos
ericholiveira.com
Twitter: @oliveira_erich (uso pouco)
Medium: @ericholiveira
Github: ericholiveira
Globalcode – Open4education
Agenda
Programação reativa
O que é
Motivação
Programação funcional reativa
O que é
Bacon.js
Vantagens
Como criar Streams
Principais funções
Código exemplo
Globalcode – Open4education
Programação reativa - O que é
Orientado ao fluxo de dados
Propagação da mudança
Excel Javascript
Globalcode – Open4education
Programação reativa - Motivação
Mudança
Múltiplas entradas
Fluxos de dados
Globalcode – Open4education
Programação reativa
Stream, Stream, Stream (ou algum termo semelhante)
Transformações
Globalcode – Open4education
Programação reativa
É uma forma de controle de fluxo
Globalcode – Open4education
Programação funcional reativa(FRP)
Programação reativa usando blocos de programação
funcional
Map
Filter
Reduce
…
Globalcode – Open4education
Programação funcional reativa(FRP)
Ainda melhor com:
Funções como cidadãos de primeira classe
Função parcial
…
Globalcode – Open4education
Reactive Extensions
Microsoft
Diversas linguagens (inclusive RxJS)
Globalcode – Open4education
Bacon.js
Biblioteca FRP para javascript
Roda em browsers e no node
Globalcode – Open4education
Baconjs - Vantagens
Ótima documentação
Biblioteca de FRP mais usada em js
Terminologia diferente
Globalcode – Open4education
Bacon.js
Stream
Property
Globalcode – Open4education
Bacon.js
Lazyness
Globalcode – Open4education
Streams
Fluxo de dados
Não mantém estado
Cada transformação retorna uma nova stream
Globalcode – Open4education
Properties
Statefull
API compatível
Diferença semântica
Globalcode – Open4education
Como criar streams
Jquery/ zepto ($(selector).asEventStream)
Promise (Bacon.fromPromise)
DOM / Node event emitter(Bacon.fromEvent)
Node Callback (Bacon.fromNodeCallback)
Array (Bacon.fromArray)
Intervalo (Bacon.interval)
Custom (Bacon.fromBinder / Bacon.Bus)
…
Globalcode – Open4education
Como criar streams
Globalcode – Open4education
Listeners
onValue
onError
onEnd
Globalcode – Open4education
Principais funções - Map
Globalcode – Open4education
Principais funções - Filter
Globalcode – Open4education
Principais funções - Merge
Globalcode – Open4education
Principais funções - Buffer
Globalcode – Open4education
Principais funções - FlatMap
Globalcode – Open4education
Leituras relacionadas
Baconjs (https://github.com/baconjs/bacon.js)
Reactive extension (http://reactivex.io/)
Kefir (https://github.com/rpominov/kefir)
Studio (https://github.com/ericholiveira/studio)
Globalcode – Open4education
Código
https://github.com/ericholiveira/
palestraTheDevConfPOA2015
Globalcode – Open4education
Obrigado
Dúvidas

Contenu connexe

Similaire à Programação funcional reativa

TDC Floripa 2018 - Metralhando sua API
TDC Floripa 2018 - Metralhando sua APITDC Floripa 2018 - Metralhando sua API
TDC Floripa 2018 - Metralhando sua APIEdlaine Zamora
 
Google AppEngine and JEE
Google AppEngine and JEEGoogle AppEngine and JEE
Google AppEngine and JEERafael Nunes
 
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...Bruno Tanoue
 
TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...
TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...
TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...tdc-globalcode
 
Tdc2016 trilha-banco-influx.ppt
Tdc2016 trilha-banco-influx.pptTdc2016 trilha-banco-influx.ppt
Tdc2016 trilha-banco-influx.pptMarcos Artigas
 
InfluxDb: como monitorar milhares de dados por segundo em real time
InfluxDb: como monitorar milhares de dados por segundo em real time InfluxDb: como monitorar milhares de dados por segundo em real time
InfluxDb: como monitorar milhares de dados por segundo em real time Umbler
 
TDC2016SP - Trilha Banco de Dados
TDC2016SP - Trilha Banco de DadosTDC2016SP - Trilha Banco de Dados
TDC2016SP - Trilha Banco de Dadostdc-globalcode
 
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesMC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesRodrigo Cândido da Silva
 
TDC2018SP | Trilha Ruby - Uma Aplicação Ruby On Rails Integrada com GraphQL, ...
TDC2018SP | Trilha Ruby - Uma Aplicação Ruby On Rails Integrada com GraphQL, ...TDC2018SP | Trilha Ruby - Uma Aplicação Ruby On Rails Integrada com GraphQL, ...
TDC2018SP | Trilha Ruby - Uma Aplicação Ruby On Rails Integrada com GraphQL, ...tdc-globalcode
 
Gestão de fábrica de software com desenvolvimento multi plataformas
Gestão de fábrica de software com desenvolvimento multi plataformasGestão de fábrica de software com desenvolvimento multi plataformas
Gestão de fábrica de software com desenvolvimento multi plataformasJosé Freire Neto
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#tdc-globalcode
 
WildFly Avançado - TDC Floripa 2015
WildFly Avançado - TDC Floripa 2015WildFly Avançado - TDC Floripa 2015
WildFly Avançado - TDC Floripa 2015Adriano Schmidt
 
ASP.NET Core + Containers: implementando aplicações escaláveis de forma desco...
ASP.NET Core + Containers: implementando aplicações escaláveis de forma desco...ASP.NET Core + Containers: implementando aplicações escaláveis de forma desco...
ASP.NET Core + Containers: implementando aplicações escaláveis de forma desco...Renato Groff
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
Produtividade com Spring Roo no Google App Engine
Produtividade com Spring Roo no Google App EngineProdutividade com Spring Roo no Google App Engine
Produtividade com Spring Roo no Google App EngineDr. Spock
 
Arquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App EngineArquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App EngineEder Magalhães
 
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPCombatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPRodrigo Dos Santos
 

Similaire à Programação funcional reativa (20)

Metralhando sua API
Metralhando sua APIMetralhando sua API
Metralhando sua API
 
TDC Floripa 2018 - Metralhando sua API
TDC Floripa 2018 - Metralhando sua APITDC Floripa 2018 - Metralhando sua API
TDC Floripa 2018 - Metralhando sua API
 
Google AppEngine and JEE
Google AppEngine and JEEGoogle AppEngine and JEE
Google AppEngine and JEE
 
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
 
TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...
TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...
TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...
 
Tdc2016 trilha-banco-influx.ppt
Tdc2016 trilha-banco-influx.pptTdc2016 trilha-banco-influx.ppt
Tdc2016 trilha-banco-influx.ppt
 
InfluxDb: como monitorar milhares de dados por segundo em real time
InfluxDb: como monitorar milhares de dados por segundo em real time InfluxDb: como monitorar milhares de dados por segundo em real time
InfluxDb: como monitorar milhares de dados por segundo em real time
 
Revolução Go TDC 2016
Revolução Go TDC 2016Revolução Go TDC 2016
Revolução Go TDC 2016
 
TDC2016SP - Trilha Banco de Dados
TDC2016SP - Trilha Banco de DadosTDC2016SP - Trilha Banco de Dados
TDC2016SP - Trilha Banco de Dados
 
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesMC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
 
TDC2018SP | Trilha Ruby - Uma Aplicação Ruby On Rails Integrada com GraphQL, ...
TDC2018SP | Trilha Ruby - Uma Aplicação Ruby On Rails Integrada com GraphQL, ...TDC2018SP | Trilha Ruby - Uma Aplicação Ruby On Rails Integrada com GraphQL, ...
TDC2018SP | Trilha Ruby - Uma Aplicação Ruby On Rails Integrada com GraphQL, ...
 
Gestão de fábrica de software com desenvolvimento multi plataformas
Gestão de fábrica de software com desenvolvimento multi plataformasGestão de fábrica de software com desenvolvimento multi plataformas
Gestão de fábrica de software com desenvolvimento multi plataformas
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#
 
Programação Funcional usando F#
Programação Funcional usando F#Programação Funcional usando F#
Programação Funcional usando F#
 
WildFly Avançado - TDC Floripa 2015
WildFly Avançado - TDC Floripa 2015WildFly Avançado - TDC Floripa 2015
WildFly Avançado - TDC Floripa 2015
 
ASP.NET Core + Containers: implementando aplicações escaláveis de forma desco...
ASP.NET Core + Containers: implementando aplicações escaláveis de forma desco...ASP.NET Core + Containers: implementando aplicações escaláveis de forma desco...
ASP.NET Core + Containers: implementando aplicações escaláveis de forma desco...
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Produtividade com Spring Roo no Google App Engine
Produtividade com Spring Roo no Google App EngineProdutividade com Spring Roo no Google App Engine
Produtividade com Spring Roo no Google App Engine
 
Arquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App EngineArquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App Engine
 
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPCombatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
 

Programação funcional reativa