SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
Desenvolvimento Web
Moderno com AngularJS
Parte 2
Alvaro Viebrantz
AlvaroViebrantz
Analista de TI - Sefaz-MT
CTO na Startup Procurix
Ciência da Computação - UFMT
Cuiabá, MT, Brasil
alvarowolfx
@alvinhuuu
Roadmap
• Single Page Application (SPA)
• Usando Componentes de terceiros
• Rotas com UI-Router
• Aplicação mais complexa consumindo API REST
• Pokedex
Single Page Application
Single Page Application (SPA)
• Aplicação Web que cabe totalmente em apenas uma página
• Todo o conteúdo é carregado no inicio da aplicação ou os
recursos são carregados dinamicamente
• Dá a sensação de aplicação desktop
• Interface mais fluida
• Não é necessário recarregar toda a pagina ao navegar
para algum recurso
Desafios de uma SPA
• Segurança ?
• Todo código vai para o cliente
• Minificação e obsfucação
• Comunicação com o servidor
• HTTPS
• Autenticação
• Auteticação via token ( Recomendo http://jwt.io )
Desafios de uma SPA
• Pesado ?
• Tempo inicial de carregamento da página
• Recursos podem ser carregados dinamicamente
• Framework de rotas ajudam neste problema
Templates e views carregados dinamicamente
Desafios de uma SPA
• Google bot
• Fornecer conteúdo HTML a ser indexado
• Que conteúdo precisa ser indexado ?
• Gerar cache usar renderização no lado servidor
Vamos fazer uma aplicação
• Pokedex:
• Listagem dos pokemons
Busca
• Detalhes de um pokemon
Evoluções, habilidades e movimentos
Criar estrutura inicial
• Iniciar com bower e declarar as depêndencias
• bower init
• Instalar via npm o Browser-Sync
• Server para a aplicação com livereload
• http://browersync.io
• npm install -g browser-sync
Componentes de terceiros
• Vamos usar para a aplicação
• Angular JS
• bower install angular —save
• Twitter Bootstrap
• bower install bootstrap —save
• UI - Bootstrap : Implementação dos componentes do Twitter bootstrap em
angularjs
• bower install angular-bootstrap —save
• UI - Router
• bower install ui-router —save
Rotas
• Em SPA podemos ter várias “paginas” dentro
mantendo página principal
• E essas páginas podem ser constituídas de pequenas
subpáginas, tornando mais modular o código
• Geralmente temos esse conceito de Rotas dentro de
SPA, para organizar o fluxo entre essa troca de
“páginas”
Rotas
Pokedex Web App
Listagem de
pokemons
<conteudo>
</conteudo>
Detalhe do pokemon
<conteudo>
</conteudo>
Movimentos
<conteudo>
Habilidades
<conteudo>
Rotas em Angular
• Possui modulo de rotas, o ngRoute
• Bem simples
• Trata o conceito de estado da aplicação (State)
• O modulo UI-Router é bastante utilizado por possibilitar
rotas mais complexas
• View aninhadas
• Views nomeadas
Rotas com UI-Router
• Usando UI-Router temos os seguintes services para configurar
• $stateProvider: Configura todos os estados da aplicação
• Metodo $stateProvider.state
• url
• templateUrl
• controller
• $urlRouterProvider: Configura o estado inicial da aplicação
• otherwise : Rota default
Configurar a primeira rota
• Usando UI-Router temos os seguintes services para
configurar
• Configurar a rota da lista de pokemons
• Estado: pokemons
• Template : templates/pokemons.html
• Controller: PokemonsController
Consumindo API
• Angular possui o módulo $http que possibilita o acesso
a serviços web
• Métodos HTTP padrão: get, post, put, delete e etc.
• Funciona utilizando um tipo de Promise
• Altamente configurável, possui suporte até mesmo a
cache interno da aplicação
• Suporte a filtros de requisição
Promise
Fullfilled
Array[Pokemons]
Promises ?
• Motivação
• Abstração para tarefas assíncronas
• Tem o objetivo de tentar melhorar o callback hell em js
• Semântica confusa ao passar um callback
https://www.promisejs.org
Promise
Promise
Pending
Promise
Reject
Erro
New
Erro
Sucesso
Notify
Info
Exemplo de Promises
Essa é a forma antiga
Exemplo de Promises
Usando Promises
PokeAPI - Restful webservice
• A API pokeapi.co possui alguns recursos, todos são de
leitura usando acessados via GET
• Pokedex: Listagem dos pokemons
• Pokemon: Detalhes de um pokemon
• Media e Sprite: Imagens de um pokemon
• Moves e Ability: Detalhes de cada habilidade e
movimentos do jogo
Acessando API
• Utilizar a API pokeapi.co para buscar a lista de
pokemons
• Pokedex: /pokedex/1
Melhorando dados da API
• A listagem padrão da API tem dois problemas:
• Não traz as imagens dos pokemons (enhance)
• Pokemons Mega ainda não estão legais na API (filter)
• Os dados não estão ordenados (tidy up)
Buscando pokemons
• Filtros podem ser feitos facilmente em AngularJS
• ng-model
• filter

Mais conteúdo relacionado

Mais procurados

O futuro dos WebApps com AngularJS 2.0
O futuro dos WebApps com AngularJS 2.0O futuro dos WebApps com AngularJS 2.0
O futuro dos WebApps com AngularJS 2.0Wilson Mendes
 
O Poderoso AngularJS
O Poderoso AngularJSO Poderoso AngularJS
O Poderoso AngularJSBeto Muniz
 
Introdução ao AngularJS
Introdução ao AngularJSIntrodução ao AngularJS
Introdução ao AngularJSRodrigo Branas
 
Performance com AngularJS
Performance com AngularJSPerformance com AngularJS
Performance com AngularJSWilson Mendes
 
A evolução do AngularJS
A evolução do AngularJSA evolução do AngularJS
A evolução do AngularJSRodrigo Branas
 
Material Design simples e rapido com AngularJS
Material Design simples e rapido com AngularJSMaterial Design simples e rapido com AngularJS
Material Design simples e rapido com AngularJSHenrique Limas
 
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsJava script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsVinicius Reis
 
Apresentação AngularJS - Angular UI
Apresentação AngularJS - Angular UIApresentação AngularJS - Angular UI
Apresentação AngularJS - Angular UICecília Rosa
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Julian Cesar
 
AngularJS com NODE.JS e Socket.IO
AngularJS com NODE.JS e Socket.IOAngularJS com NODE.JS e Socket.IO
AngularJS com NODE.JS e Socket.IODouglas Lira
 
TDC 2014 - Arquitetura front-end com AngularJS
TDC 2014 - Arquitetura front-end com AngularJSTDC 2014 - Arquitetura front-end com AngularJS
TDC 2014 - Arquitetura front-end com AngularJSLeonardo Zanivan
 
Desenvolvimento de Aplicações Web AngularJS no Contexto da IoT
Desenvolvimento de Aplicações Web AngularJS no Contexto da IoTDesenvolvimento de Aplicações Web AngularJS no Contexto da IoT
Desenvolvimento de Aplicações Web AngularJS no Contexto da IoTRodrigo Fortes
 
Mini curso: Ionic Framework
Mini curso: Ionic FrameworkMini curso: Ionic Framework
Mini curso: Ionic FrameworkLoiane Groner
 
React + Flux (Alt)
React + Flux (Alt)React + Flux (Alt)
React + Flux (Alt)Cezar Luiz
 
Quick intro to Apache Maven
Quick intro to Apache MavenQuick intro to Apache Maven
Quick intro to Apache MavenInformantTalks
 

Mais procurados (20)

O futuro dos WebApps com AngularJS 2.0
O futuro dos WebApps com AngularJS 2.0O futuro dos WebApps com AngularJS 2.0
O futuro dos WebApps com AngularJS 2.0
 
O Poderoso AngularJS
O Poderoso AngularJSO Poderoso AngularJS
O Poderoso AngularJS
 
Introdução ao AngularJS
Introdução ao AngularJSIntrodução ao AngularJS
Introdução ao AngularJS
 
Performance com AngularJS
Performance com AngularJSPerformance com AngularJS
Performance com AngularJS
 
A evolução do AngularJS
A evolução do AngularJSA evolução do AngularJS
A evolução do AngularJS
 
Visão Geral sobre Angular JS
Visão Geral sobre Angular JSVisão Geral sobre Angular JS
Visão Geral sobre Angular JS
 
Material Design simples e rapido com AngularJS
Material Design simples e rapido com AngularJSMaterial Design simples e rapido com AngularJS
Material Design simples e rapido com AngularJS
 
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsJava script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
 
Apresentação AngularJS - Angular UI
Apresentação AngularJS - Angular UIApresentação AngularJS - Angular UI
Apresentação AngularJS - Angular UI
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)
 
React - Introdução
React - IntroduçãoReact - Introdução
React - Introdução
 
Vue.js
Vue.jsVue.js
Vue.js
 
AngularJS com NODE.JS e Socket.IO
AngularJS com NODE.JS e Socket.IOAngularJS com NODE.JS e Socket.IO
AngularJS com NODE.JS e Socket.IO
 
TDC 2014 - Arquitetura front-end com AngularJS
TDC 2014 - Arquitetura front-end com AngularJSTDC 2014 - Arquitetura front-end com AngularJS
TDC 2014 - Arquitetura front-end com AngularJS
 
Desenvolvimento de Aplicações Web AngularJS no Contexto da IoT
Desenvolvimento de Aplicações Web AngularJS no Contexto da IoTDesenvolvimento de Aplicações Web AngularJS no Contexto da IoT
Desenvolvimento de Aplicações Web AngularJS no Contexto da IoT
 
Mini curso: Ionic Framework
Mini curso: Ionic FrameworkMini curso: Ionic Framework
Mini curso: Ionic Framework
 
Introdução Vue JS
Introdução Vue JSIntrodução Vue JS
Introdução Vue JS
 
React + Flux (Alt)
React + Flux (Alt)React + Flux (Alt)
React + Flux (Alt)
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Quick intro to Apache Maven
Quick intro to Apache MavenQuick intro to Apache Maven
Quick intro to Apache Maven
 

Destaque

Aplicações no Contexto de Big Data
Aplicações no Contexto de Big DataAplicações no Contexto de Big Data
Aplicações no Contexto de Big DataAlvaro Viebrantz
 
API's Abertas Na Web 2 0
API's Abertas Na Web 2 0API's Abertas Na Web 2 0
API's Abertas Na Web 2 0grupoass
 
"Streamizando" com sucesso
"Streamizando" com sucesso"Streamizando" com sucesso
"Streamizando" com sucessoBruno Oliveira
 
noSQL com CouchDb e PHP
noSQL com CouchDb e PHPnoSQL com CouchDb e PHP
noSQL com CouchDb e PHPTheoziran Lima
 
Palestra CouchDB III ENSOL
Palestra CouchDB III ENSOLPalestra CouchDB III ENSOL
Palestra CouchDB III ENSOLAllisson Azevedo
 
Apache CouchDB
Apache CouchDBApache CouchDB
Apache CouchDBHugo Souza
 
A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )Michael Douglas
 
Como implementar APIs RESTful em PHP
Como implementar APIs RESTful em PHPComo implementar APIs RESTful em PHP
Como implementar APIs RESTful em PHPPablo Aguiar
 
Curso Básico de AngularJS
Curso Básico de AngularJSCurso Básico de AngularJS
Curso Básico de AngularJSCarlos Azaustre
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documentoAlex Martins
 
Criando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONCriando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONMarcio Junior Vieira
 
An introduction to CouchDB
An introduction to CouchDBAn introduction to CouchDB
An introduction to CouchDBDavid Coallier
 

Destaque (16)

Aplicações no Contexto de Big Data
Aplicações no Contexto de Big DataAplicações no Contexto de Big Data
Aplicações no Contexto de Big Data
 
Conhecendo o CouchDB
Conhecendo o CouchDBConhecendo o CouchDB
Conhecendo o CouchDB
 
API's Abertas Na Web 2 0
API's Abertas Na Web 2 0API's Abertas Na Web 2 0
API's Abertas Na Web 2 0
 
Workshop - Ionic + firebase
Workshop - Ionic + firebaseWorkshop - Ionic + firebase
Workshop - Ionic + firebase
 
"Streamizando" com sucesso
"Streamizando" com sucesso"Streamizando" com sucesso
"Streamizando" com sucesso
 
CouchDB Presentation
CouchDB PresentationCouchDB Presentation
CouchDB Presentation
 
noSQL com CouchDb e PHP
noSQL com CouchDb e PHPnoSQL com CouchDb e PHP
noSQL com CouchDb e PHP
 
Palestra CouchDB III ENSOL
Palestra CouchDB III ENSOLPalestra CouchDB III ENSOL
Palestra CouchDB III ENSOL
 
Apache CouchDB
Apache CouchDBApache CouchDB
Apache CouchDB
 
A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )
 
Como implementar APIs RESTful em PHP
Como implementar APIs RESTful em PHPComo implementar APIs RESTful em PHP
Como implementar APIs RESTful em PHP
 
Curso Básico de AngularJS
Curso Básico de AngularJSCurso Básico de AngularJS
Curso Básico de AngularJS
 
MongoDB e Bancos de Dados Orientados a Documentos
MongoDB e Bancos de Dados Orientados a DocumentosMongoDB e Bancos de Dados Orientados a Documentos
MongoDB e Bancos de Dados Orientados a Documentos
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documento
 
Criando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONCriando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSON
 
An introduction to CouchDB
An introduction to CouchDBAn introduction to CouchDB
An introduction to CouchDB
 

Semelhante a Curso AngularJS - Parte 2

Workshop Performance Rails
Workshop Performance RailsWorkshop Performance Rails
Workshop Performance RailsVitor Pellegrino
 
Angular 2, TypeScript e Além
Angular 2, TypeScript e AlémAngular 2, TypeScript e Além
Angular 2, TypeScript e AlémAndre Baltieri
 
TDC SP 2015 - Criando Web Apps Real Time com AngularJs e Firebase
TDC SP 2015 - Criando Web Apps Real Time com AngularJs e FirebaseTDC SP 2015 - Criando Web Apps Real Time com AngularJs e Firebase
TDC SP 2015 - Criando Web Apps Real Time com AngularJs e FirebaseAndre Baltieri
 
Python, Google App Engine e Webapp-CE
Python, Google App Engine e Webapp-CE Python, Google App Engine e Webapp-CE
Python, Google App Engine e Webapp-CE Renzo Nuccitelli
 
Google App Engine e Python
Google App Engine e PythonGoogle App Engine e Python
Google App Engine e PythonPeslPinguim
 
JHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosJHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosThiago Soares
 
Diapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdfDiapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdfJ0071
 
AMP Roadshow SP 2019 - Web Apps Modernas
AMP Roadshow SP 2019 - Web Apps ModernasAMP Roadshow SP 2019 - Web Apps Modernas
AMP Roadshow SP 2019 - Web Apps ModernasDan Vitoriano
 
BigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIBigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIAlvaro Viebrantz
 
Application Servers e Ruby
Application Servers e RubyApplication Servers e Ruby
Application Servers e RubyRafael Soares
 
Introdução a programação para a Internet
Introdução a programação para a InternetIntrodução a programação para a Internet
Introdução a programação para a InternetLeonardo Soares
 
Ionic 2/3 + Firebase
Ionic 2/3 + FirebaseIonic 2/3 + Firebase
Ionic 2/3 + FirebaseBruno Catão
 
Introdução a plataforma de aplicativos Redu
Introdução a plataforma de aplicativos ReduIntrodução a plataforma de aplicativos Redu
Introdução a plataforma de aplicativos ReduGuilherme
 

Semelhante a Curso AngularJS - Parte 2 (20)

Workshop Performance Rails
Workshop Performance RailsWorkshop Performance Rails
Workshop Performance Rails
 
Angular 2, TypeScript e Além
Angular 2, TypeScript e AlémAngular 2, TypeScript e Além
Angular 2, TypeScript e Além
 
TDC SP 2015 - Criando Web Apps Real Time com AngularJs e Firebase
TDC SP 2015 - Criando Web Apps Real Time com AngularJs e FirebaseTDC SP 2015 - Criando Web Apps Real Time com AngularJs e Firebase
TDC SP 2015 - Criando Web Apps Real Time com AngularJs e Firebase
 
Python, Google App Engine e Webapp-CE
Python, Google App Engine e Webapp-CE Python, Google App Engine e Webapp-CE
Python, Google App Engine e Webapp-CE
 
Google App Engine e Python
Google App Engine e PythonGoogle App Engine e Python
Google App Engine e Python
 
JHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosJHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãos
 
Diapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdfDiapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdf
 
AMP Roadshow SP 2019 - Web Apps Modernas
AMP Roadshow SP 2019 - Web Apps ModernasAMP Roadshow SP 2019 - Web Apps Modernas
AMP Roadshow SP 2019 - Web Apps Modernas
 
BigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIBigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage API
 
Application Servers e Ruby
Application Servers e RubyApplication Servers e Ruby
Application Servers e Ruby
 
Introdução a programação para a Internet
Introdução a programação para a InternetIntrodução a programação para a Internet
Introdução a programação para a Internet
 
Html5
Html5Html5
Html5
 
Aula 05 - Java Script Básico
Aula 05 -  Java Script BásicoAula 05 -  Java Script Básico
Aula 05 - Java Script Básico
 
T18_LM3: Ajax
T18_LM3: AjaxT18_LM3: Ajax
T18_LM3: Ajax
 
Meteor - TechParty 2015
Meteor - TechParty 2015Meteor - TechParty 2015
Meteor - TechParty 2015
 
Ionic 2/3 + Firebase
Ionic 2/3 + FirebaseIonic 2/3 + Firebase
Ionic 2/3 + Firebase
 
De 0 a DevOps
De 0 a DevOpsDe 0 a DevOps
De 0 a DevOps
 
JQuery Mobile
JQuery MobileJQuery Mobile
JQuery Mobile
 
Mini curso rails 3
Mini curso rails 3Mini curso rails 3
Mini curso rails 3
 
Introdução a plataforma de aplicativos Redu
Introdução a plataforma de aplicativos ReduIntrodução a plataforma de aplicativos Redu
Introdução a plataforma de aplicativos Redu
 

Mais de Alvaro Viebrantz

End to End IoT projects with Zephyr.pdf
End to End IoT projects with Zephyr.pdfEnd to End IoT projects with Zephyr.pdf
End to End IoT projects with Zephyr.pdfAlvaro Viebrantz
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de DesenvolvimentoAlvaro Viebrantz
 
Construindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoConstruindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoAlvaro Viebrantz
 
Prototipação em hackathons
Prototipação em hackathonsPrototipação em hackathons
Prototipação em hackathonsAlvaro Viebrantz
 
Building REST APIs using gRPC and Go
Building REST APIs using gRPC and GoBuilding REST APIs using gRPC and Go
Building REST APIs using gRPC and GoAlvaro Viebrantz
 
TinyML - IoT e Machine Learning
TinyML -  IoT e Machine LearningTinyML -  IoT e Machine Learning
TinyML - IoT e Machine LearningAlvaro Viebrantz
 
O que projetos de IoT precisam ?
O que projetos de IoT precisam ?O que projetos de IoT precisam ?
O que projetos de IoT precisam ?Alvaro Viebrantz
 
Ambiente de CI/CD com Google Cloud
Ambiente de CI/CD com Google CloudAmbiente de CI/CD com Google Cloud
Ambiente de CI/CD com Google CloudAlvaro Viebrantz
 
Big Query - Escalabilidade Infinita para os seus Dados
Big Query  - Escalabilidade Infinita para os seus DadosBig Query  - Escalabilidade Infinita para os seus Dados
Big Query - Escalabilidade Infinita para os seus DadosAlvaro Viebrantz
 
Rodando uma API Com Django Rest Framework no Google Cloud
Rodando uma API Com Django Rest Framework  no Google CloudRodando uma API Com Django Rest Framework  no Google Cloud
Rodando uma API Com Django Rest Framework no Google CloudAlvaro Viebrantz
 
Edge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google CloudEdge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google CloudAlvaro Viebrantz
 
Edge computing in practice using IoT, Tensorflow and Google Cloud
Edge computing in practice using IoT, Tensorflow and Google CloudEdge computing in practice using IoT, Tensorflow and Google Cloud
Edge computing in practice using IoT, Tensorflow and Google CloudAlvaro Viebrantz
 
Iniciando com LoRa, The Things Network e Google Cloud
Iniciando com LoRa, The Things Network e Google CloudIniciando com LoRa, The Things Network e Google Cloud
Iniciando com LoRa, The Things Network e Google CloudAlvaro Viebrantz
 
Construindo projetos para o Google Assistant - I/O 2019 Recap São Paulo
Construindo projetos para o Google Assistant - I/O 2019 Recap São PauloConstruindo projetos para o Google Assistant - I/O 2019 Recap São Paulo
Construindo projetos para o Google Assistant - I/O 2019 Recap São PauloAlvaro Viebrantz
 
Edge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google CloudEdge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google CloudAlvaro Viebrantz
 
Construindo projetos com Google Assistant e IoT
Construindo projetos com Google Assistant e IoTConstruindo projetos com Google Assistant e IoT
Construindo projetos com Google Assistant e IoTAlvaro Viebrantz
 
Explorando Go em Ambiente Embarcado
Explorando Go em Ambiente EmbarcadoExplorando Go em Ambiente Embarcado
Explorando Go em Ambiente EmbarcadoAlvaro Viebrantz
 
Soluções de IoT usando Arduino e Google Cloud
Soluções de IoT usando Arduino e Google CloudSoluções de IoT usando Arduino e Google Cloud
Soluções de IoT usando Arduino e Google CloudAlvaro Viebrantz
 
Soluções de IoT usando Google Cloud e Firebase
Soluções de IoT usando Google Cloud e FirebaseSoluções de IoT usando Google Cloud e Firebase
Soluções de IoT usando Google Cloud e FirebaseAlvaro Viebrantz
 
Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...
Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...
Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...Alvaro Viebrantz
 

Mais de Alvaro Viebrantz (20)

End to End IoT projects with Zephyr.pdf
End to End IoT projects with Zephyr.pdfEnd to End IoT projects with Zephyr.pdf
End to End IoT projects with Zephyr.pdf
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de Desenvolvimento
 
Construindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoConstruindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em Go
 
Prototipação em hackathons
Prototipação em hackathonsPrototipação em hackathons
Prototipação em hackathons
 
Building REST APIs using gRPC and Go
Building REST APIs using gRPC and GoBuilding REST APIs using gRPC and Go
Building REST APIs using gRPC and Go
 
TinyML - IoT e Machine Learning
TinyML -  IoT e Machine LearningTinyML -  IoT e Machine Learning
TinyML - IoT e Machine Learning
 
O que projetos de IoT precisam ?
O que projetos de IoT precisam ?O que projetos de IoT precisam ?
O que projetos de IoT precisam ?
 
Ambiente de CI/CD com Google Cloud
Ambiente de CI/CD com Google CloudAmbiente de CI/CD com Google Cloud
Ambiente de CI/CD com Google Cloud
 
Big Query - Escalabilidade Infinita para os seus Dados
Big Query  - Escalabilidade Infinita para os seus DadosBig Query  - Escalabilidade Infinita para os seus Dados
Big Query - Escalabilidade Infinita para os seus Dados
 
Rodando uma API Com Django Rest Framework no Google Cloud
Rodando uma API Com Django Rest Framework  no Google CloudRodando uma API Com Django Rest Framework  no Google Cloud
Rodando uma API Com Django Rest Framework no Google Cloud
 
Edge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google CloudEdge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google Cloud
 
Edge computing in practice using IoT, Tensorflow and Google Cloud
Edge computing in practice using IoT, Tensorflow and Google CloudEdge computing in practice using IoT, Tensorflow and Google Cloud
Edge computing in practice using IoT, Tensorflow and Google Cloud
 
Iniciando com LoRa, The Things Network e Google Cloud
Iniciando com LoRa, The Things Network e Google CloudIniciando com LoRa, The Things Network e Google Cloud
Iniciando com LoRa, The Things Network e Google Cloud
 
Construindo projetos para o Google Assistant - I/O 2019 Recap São Paulo
Construindo projetos para o Google Assistant - I/O 2019 Recap São PauloConstruindo projetos para o Google Assistant - I/O 2019 Recap São Paulo
Construindo projetos para o Google Assistant - I/O 2019 Recap São Paulo
 
Edge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google CloudEdge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google Cloud
 
Construindo projetos com Google Assistant e IoT
Construindo projetos com Google Assistant e IoTConstruindo projetos com Google Assistant e IoT
Construindo projetos com Google Assistant e IoT
 
Explorando Go em Ambiente Embarcado
Explorando Go em Ambiente EmbarcadoExplorando Go em Ambiente Embarcado
Explorando Go em Ambiente Embarcado
 
Soluções de IoT usando Arduino e Google Cloud
Soluções de IoT usando Arduino e Google CloudSoluções de IoT usando Arduino e Google Cloud
Soluções de IoT usando Arduino e Google Cloud
 
Soluções de IoT usando Google Cloud e Firebase
Soluções de IoT usando Google Cloud e FirebaseSoluções de IoT usando Google Cloud e Firebase
Soluções de IoT usando Google Cloud e Firebase
 
Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...
Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...
Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...
 

Curso AngularJS - Parte 2

  • 1. Desenvolvimento Web Moderno com AngularJS Parte 2 Alvaro Viebrantz
  • 2. AlvaroViebrantz Analista de TI - Sefaz-MT CTO na Startup Procurix Ciência da Computação - UFMT Cuiabá, MT, Brasil alvarowolfx @alvinhuuu
  • 3. Roadmap • Single Page Application (SPA) • Usando Componentes de terceiros • Rotas com UI-Router • Aplicação mais complexa consumindo API REST • Pokedex
  • 5. Single Page Application (SPA) • Aplicação Web que cabe totalmente em apenas uma página • Todo o conteúdo é carregado no inicio da aplicação ou os recursos são carregados dinamicamente • Dá a sensação de aplicação desktop • Interface mais fluida • Não é necessário recarregar toda a pagina ao navegar para algum recurso
  • 6. Desafios de uma SPA • Segurança ? • Todo código vai para o cliente • Minificação e obsfucação • Comunicação com o servidor • HTTPS • Autenticação • Auteticação via token ( Recomendo http://jwt.io )
  • 7. Desafios de uma SPA • Pesado ? • Tempo inicial de carregamento da página • Recursos podem ser carregados dinamicamente • Framework de rotas ajudam neste problema Templates e views carregados dinamicamente
  • 8. Desafios de uma SPA • Google bot • Fornecer conteúdo HTML a ser indexado • Que conteúdo precisa ser indexado ? • Gerar cache usar renderização no lado servidor
  • 9. Vamos fazer uma aplicação • Pokedex: • Listagem dos pokemons Busca • Detalhes de um pokemon Evoluções, habilidades e movimentos
  • 10. Criar estrutura inicial • Iniciar com bower e declarar as depêndencias • bower init • Instalar via npm o Browser-Sync • Server para a aplicação com livereload • http://browersync.io • npm install -g browser-sync
  • 11. Componentes de terceiros • Vamos usar para a aplicação • Angular JS • bower install angular —save • Twitter Bootstrap • bower install bootstrap —save • UI - Bootstrap : Implementação dos componentes do Twitter bootstrap em angularjs • bower install angular-bootstrap —save • UI - Router • bower install ui-router —save
  • 12. Rotas • Em SPA podemos ter várias “paginas” dentro mantendo página principal • E essas páginas podem ser constituídas de pequenas subpáginas, tornando mais modular o código • Geralmente temos esse conceito de Rotas dentro de SPA, para organizar o fluxo entre essa troca de “páginas”
  • 13. Rotas Pokedex Web App Listagem de pokemons <conteudo> </conteudo> Detalhe do pokemon <conteudo> </conteudo> Movimentos <conteudo> Habilidades <conteudo>
  • 14. Rotas em Angular • Possui modulo de rotas, o ngRoute • Bem simples • Trata o conceito de estado da aplicação (State) • O modulo UI-Router é bastante utilizado por possibilitar rotas mais complexas • View aninhadas • Views nomeadas
  • 15. Rotas com UI-Router • Usando UI-Router temos os seguintes services para configurar • $stateProvider: Configura todos os estados da aplicação • Metodo $stateProvider.state • url • templateUrl • controller • $urlRouterProvider: Configura o estado inicial da aplicação • otherwise : Rota default
  • 16. Configurar a primeira rota • Usando UI-Router temos os seguintes services para configurar • Configurar a rota da lista de pokemons • Estado: pokemons • Template : templates/pokemons.html • Controller: PokemonsController
  • 17. Consumindo API • Angular possui o módulo $http que possibilita o acesso a serviços web • Métodos HTTP padrão: get, post, put, delete e etc. • Funciona utilizando um tipo de Promise • Altamente configurável, possui suporte até mesmo a cache interno da aplicação • Suporte a filtros de requisição
  • 18. Promise Fullfilled Array[Pokemons] Promises ? • Motivação • Abstração para tarefas assíncronas • Tem o objetivo de tentar melhorar o callback hell em js • Semântica confusa ao passar um callback https://www.promisejs.org Promise Promise Pending Promise Reject Erro New Erro Sucesso Notify Info
  • 19. Exemplo de Promises Essa é a forma antiga
  • 21. PokeAPI - Restful webservice • A API pokeapi.co possui alguns recursos, todos são de leitura usando acessados via GET • Pokedex: Listagem dos pokemons • Pokemon: Detalhes de um pokemon • Media e Sprite: Imagens de um pokemon • Moves e Ability: Detalhes de cada habilidade e movimentos do jogo
  • 22. Acessando API • Utilizar a API pokeapi.co para buscar a lista de pokemons • Pokedex: /pokedex/1
  • 23. Melhorando dados da API • A listagem padrão da API tem dois problemas: • Não traz as imagens dos pokemons (enhance) • Pokemons Mega ainda não estão legais na API (filter) • Os dados não estão ordenados (tidy up)
  • 24. Buscando pokemons • Filtros podem ser feitos facilmente em AngularJS • ng-model • filter