independência no front-end com graphql e redux...2004 - 2007 2010 2011 2013 - 2016 dojo, yui,...

55
Independência no Front-End com GraphQL e Redux @cmilfont @yuriadams

Upload: others

Post on 22-May-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend

Independência no Front-End com GraphQL

e Redux

@cmilfont @yuriadams

Page 2: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend

No mundo Front-End (Web e Mobile) precisamos reescrever tudo a cada

2 anos.

Em um mercado que o produto vive mais que a tecnologia

Page 3: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend
Page 4: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend

MVP CVC 2.0Com o propósito de construir um protótipo de venda de pacotes turísticosNosso produto deverá ajudar clientesEm resolver o problema de encontrar resultados com informações completas e facilidade de customizar o pacote.Oferecendo um serviço de detalhamento geográfico dos produtos associados ao pacote desde o filtro de busca até o checkout e compra.E saberemos se nosso produto funciona quando aumentarmos a conversão do caminho entre o resultado/detalhe e melhoria em números da página de detalhe do pacote.

Page 5: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend

2004 -

2007

2010

2011

2013 -

2016Dojo, Yui,

Sencha (Ext.js)

Backbone, Angular 1, Knockout

Ember

React.js, Vue.js, Angular 2*

JS Frontend Libs, frameworks, Toolkits, etc over the years

Page 6: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend
Page 7: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend
Page 8: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend
Page 9: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend
Page 10: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend
Page 11: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend

O que temos hoje

Page 12: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend

Trygve Reenskaug em 1979https://medium.com/@milfont/os-m%C3%BAsculos-do-javascript-be2b721851b7

Page 13: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend

HTTP (1990) e HTML (1993~) Um protocolo de mensagem de texto com

linguagem de marcação baseado em árvores pra formatar esse texto

Page 14: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend

1995“PHP é um framework de CGI” Lerdorf, Rasmus

Page 15: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend

Monolithic Architecture

Browser

Database

HTML CSS Javascript

Service 1

DATA ACCESS

Service 2 Service N

Page 16: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend

MVC model 2

Page 17: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend

Frontend + Backend

Database

Javascript

Service NBackendFrontend

Page 18: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend

MVVM

https://medium.com/@milfont/jsx-a-resposta-do-react-pra-resolver-definitivamente-um-problema-99f572316eb5

Page 19: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend
Page 20: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend

Qual a problematica do Rest

Page 21: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend

REST● Resource● URL● Verb HTTP

POST /destinations HTTP/1.1Host: localhost:3000Content-Type: application/json

{ "image_url" : "https://example.org/pic.png"}

GET /destinations HTTP/1.1Host: localhost:3000Content-Type: application/json

> { "image_url" : "https://example.org/pic.png", "lat" : "9.54", "lng" : "14.7", "name" : "Cancún",}

Page 22: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend
Page 23: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend

Backend for frontend

http://philcalcado.com/2015/09/18/the_back_end_for_front_end_pattern_bff.html

Page 24: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend

Backend for frontend

http://philcalcado.com/2015/09/18/the_back_end_for_front_end_pattern_bff.html

Page 25: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend

Backend for frontend

http://philcalcado.com/2015/09/18/the_back_end_for_front_end_pattern_bff.html

Page 26: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend

API Backend

API Externa

Page 27: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend
Page 28: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend
Page 29: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend

GraphQL● Declarative data fetching specification● Query Language● Provide a common interface between the client and the server ● Is NOT a Protocol● Is NOT a data interchange format● Hierarchical● Strongly-typed● Not Language specific● Compatible with any backend

Page 30: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend
Page 31: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend
Page 32: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend
Page 33: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend
Page 34: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend
Page 35: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend

Custom Types - const GraphQLJSON = require('graphql-type-json');

mapping JSON retornado do serviço com a definição no schema

Page 36: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend
Page 37: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend
Page 38: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend
Page 40: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend
Page 41: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend
Page 42: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend
Page 43: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend
Page 44: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend
Page 45: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend
Page 46: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend
Page 47: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend

dispatch

Page 48: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend
Page 49: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend
Page 50: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend

estado atual

novo estado

Page 51: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend
Page 52: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend

https://vuedeux.com/

Page 53: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend

https://medium.com/@brianrudloff/how-to-bind-veux-with-redux-15c567667fb3

Page 54: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend
Page 55: Independência no Front-End com GraphQL e Redux...2004 - 2007 2010 2011 2013 - 2016 Dojo, Yui, Sencha (Ext.js) Backbone, Angular 1, Knockout Ember React.js, Vue.js, Angular 2* JS Frontend

Obrigado!Perguntas?