SlideShare uma empresa Scribd logo
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 (20)

PDF
O futuro dos WebApps com AngularJS 2.0
Wilson Mendes
 
PDF
O Poderoso AngularJS
Beto Muniz
 
PPTX
Introdução ao AngularJS
Rodrigo Branas
 
PDF
Performance com AngularJS
Wilson Mendes
 
PPTX
A evolução do AngularJS
Rodrigo Branas
 
PPTX
Visão Geral sobre Angular JS
Leonardo Melo Moreira
 
PDF
Material Design simples e rapido com AngularJS
Henrique Limas
 
PDF
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Vinicius Reis
 
PPTX
Apresentação AngularJS - Angular UI
Cecília Rosa
 
PDF
Desenvolvimento Front end (AngularJS e Bootstrap)
Julian Cesar
 
PDF
React - Introdução
Jefferson Mariano de Souza
 
PPTX
Vue.js
Luís Felipe Souza
 
PDF
AngularJS com NODE.JS e Socket.IO
Douglas Lira
 
PDF
TDC 2014 - Arquitetura front-end com AngularJS
Leonardo Zanivan
 
PPTX
Desenvolvimento de Aplicações Web AngularJS no Contexto da IoT
Rodrigo Fortes
 
PDF
Mini curso: Ionic Framework
Loiane Groner
 
PPTX
Introdução Vue JS
Leonardo Thizon Waterkemper
 
PDF
React + Flux (Alt)
Cezar Luiz
 
PPTX
Domain-Driven Design
Rodrigo Branas
 
KEY
Quick intro to Apache Maven
InformantTalks
 
O futuro dos WebApps com AngularJS 2.0
Wilson Mendes
 
O Poderoso AngularJS
Beto Muniz
 
Introdução ao AngularJS
Rodrigo Branas
 
Performance com AngularJS
Wilson Mendes
 
A evolução do AngularJS
Rodrigo Branas
 
Visão Geral sobre Angular JS
Leonardo Melo Moreira
 
Material Design simples e rapido com AngularJS
Henrique Limas
 
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Vinicius Reis
 
Apresentação AngularJS - Angular UI
Cecília Rosa
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Julian Cesar
 
React - Introdução
Jefferson Mariano de Souza
 
AngularJS com NODE.JS e Socket.IO
Douglas Lira
 
TDC 2014 - Arquitetura front-end com AngularJS
Leonardo Zanivan
 
Desenvolvimento de Aplicações Web AngularJS no Contexto da IoT
Rodrigo Fortes
 
Mini curso: Ionic Framework
Loiane Groner
 
Introdução Vue JS
Leonardo Thizon Waterkemper
 
React + Flux (Alt)
Cezar Luiz
 
Domain-Driven Design
Rodrigo Branas
 
Quick intro to Apache Maven
InformantTalks
 

Destaque (16)

PDF
Aplicações no Contexto de Big Data
Alvaro Viebrantz
 
PDF
Conhecendo o CouchDB
Henrique Gogó
 
PDF
API's Abertas Na Web 2 0
grupoass
 
PPTX
Workshop - Ionic + firebase
Stefan Horochovec
 
PPTX
"Streamizando" com sucesso
Bruno Oliveira
 
PPT
CouchDB Presentation
Bianca Caruso da Paixão
 
PDF
noSQL com CouchDb e PHP
Theoziran Lima
 
PDF
Palestra CouchDB III ENSOL
Allisson Azevedo
 
PDF
Apache CouchDB
Hugo Souza
 
PDF
A mágica por trás dos aplicativos ( Api com o Laravel )
Michael Douglas
 
PDF
Como implementar APIs RESTful em PHP
Pablo Aguiar
 
PDF
Curso Básico de AngularJS
Carlos Azaustre
 
PDF
MongoDB e Bancos de Dados Orientados a Documentos
UNIFESP - Universidade Federal de São Paulo
 
PPTX
No sql Orientado a documento
Alex Martins
 
PDF
Criando e consumindo webservice REST com PHP e JSON
Marcio Junior Vieira
 
KEY
An introduction to CouchDB
David Coallier
 
Aplicações no Contexto de Big Data
Alvaro Viebrantz
 
Conhecendo o CouchDB
Henrique Gogó
 
API's Abertas Na Web 2 0
grupoass
 
Workshop - Ionic + firebase
Stefan Horochovec
 
"Streamizando" com sucesso
Bruno Oliveira
 
CouchDB Presentation
Bianca Caruso da Paixão
 
noSQL com CouchDb e PHP
Theoziran Lima
 
Palestra CouchDB III ENSOL
Allisson Azevedo
 
Apache CouchDB
Hugo Souza
 
A mágica por trás dos aplicativos ( Api com o Laravel )
Michael Douglas
 
Como implementar APIs RESTful em PHP
Pablo Aguiar
 
Curso Básico de AngularJS
Carlos Azaustre
 
MongoDB e Bancos de Dados Orientados a Documentos
UNIFESP - Universidade Federal de São Paulo
 
No sql Orientado a documento
Alex Martins
 
Criando e consumindo webservice REST com PHP e JSON
Marcio Junior Vieira
 
An introduction to CouchDB
David Coallier
 
Anúncio

Semelhante a Curso AngularJS - Parte 2 (20)

KEY
Workshop Performance Rails
Vitor Pellegrino
 
PPTX
Angular 2, TypeScript e Além
Andre Baltieri
 
PPTX
TDC SP 2015 - Criando Web Apps Real Time com AngularJs e Firebase
Andre Baltieri
 
PPTX
Python, Google App Engine e Webapp-CE
Renzo Nuccitelli
 
PPTX
Google App Engine e Python
PeslPinguim
 
PDF
JHipster - Produtividade e Maturidade em suas mãos
Thiago Soares
 
PDF
Diapositivos práticos - Integração de Sistemas.pdf
J0071
 
PDF
AMP Roadshow SP 2019 - Web Apps Modernas
Dan Vitoriano
 
PDF
BigQuery Performance Improvements Storage API
Alvaro Viebrantz
 
PDF
Application Servers e Ruby
Rafael Soares
 
PPTX
Introdução a programação para a Internet
Leonardo Soares
 
PPT
Html5
SouWebPel Grupo
 
PDF
Aula 05 - Java Script Básico
Fabio Moura Pereira
 
PDF
T18_LM3: Ajax
Carlos Santos
 
PDF
Meteor - TechParty 2015
Rodrigo Krummenauer do Nascimento
 
PDF
Ionic 2/3 + Firebase
Bruno Catão
 
PPTX
De 0 a DevOps
Amazon Web Services LATAM
 
PDF
JQuery Mobile
Diego Lusa
 
PPTX
Mini curso rails 3
Rodrigo Urubatan
 
PDF
Introdução a plataforma de aplicativos Redu
Guilherme
 
Workshop Performance Rails
Vitor Pellegrino
 
Angular 2, TypeScript e Além
Andre Baltieri
 
TDC SP 2015 - Criando Web Apps Real Time com AngularJs e Firebase
Andre Baltieri
 
Python, Google App Engine e Webapp-CE
Renzo Nuccitelli
 
Google App Engine e Python
PeslPinguim
 
JHipster - Produtividade e Maturidade em suas mãos
Thiago Soares
 
Diapositivos práticos - Integração de Sistemas.pdf
J0071
 
AMP Roadshow SP 2019 - Web Apps Modernas
Dan Vitoriano
 
BigQuery Performance Improvements Storage API
Alvaro Viebrantz
 
Application Servers e Ruby
Rafael Soares
 
Introdução a programação para a Internet
Leonardo Soares
 
Aula 05 - Java Script Básico
Fabio Moura Pereira
 
T18_LM3: Ajax
Carlos Santos
 
Meteor - TechParty 2015
Rodrigo Krummenauer do Nascimento
 
Ionic 2/3 + Firebase
Bruno Catão
 
JQuery Mobile
Diego Lusa
 
Mini curso rails 3
Rodrigo Urubatan
 
Introdução a plataforma de aplicativos Redu
Guilherme
 
Anúncio

Mais de Alvaro Viebrantz (20)

PDF
Construindo Apps/Projetos com Generative AI
Alvaro Viebrantz
 
PDF
Minha jornada na ciência da computação- do diploma ao Google
Alvaro Viebrantz
 
PDF
End to End IoT projects with Zephyr.pdf
Alvaro Viebrantz
 
PDF
Carreira de Desenvolvimento
Alvaro Viebrantz
 
PDF
Construindo aplicações Cloud Native em Go
Alvaro Viebrantz
 
PDF
Prototipação em hackathons
Alvaro Viebrantz
 
PDF
Building REST APIs using gRPC and Go
Alvaro Viebrantz
 
PDF
TinyML - IoT e Machine Learning
Alvaro Viebrantz
 
PDF
O que projetos de IoT precisam ?
Alvaro Viebrantz
 
PDF
Ambiente de CI/CD com Google Cloud
Alvaro Viebrantz
 
PDF
Big Query - Escalabilidade Infinita para os seus Dados
Alvaro Viebrantz
 
PDF
Rodando uma API Com Django Rest Framework no Google Cloud
Alvaro Viebrantz
 
PDF
Edge computing na prática com IoT, Machine Learning e Google Cloud
Alvaro Viebrantz
 
PDF
Edge computing in practice using IoT, Tensorflow and Google Cloud
Alvaro Viebrantz
 
PDF
Iniciando com LoRa, The Things Network e Google Cloud
Alvaro Viebrantz
 
PDF
Construindo projetos para o Google Assistant - I/O 2019 Recap São Paulo
Alvaro Viebrantz
 
PDF
Edge computing na prática com IoT, Machine Learning e Google Cloud
Alvaro Viebrantz
 
PDF
Construindo projetos com Google Assistant e IoT
Alvaro Viebrantz
 
PDF
Explorando Go em Ambiente Embarcado
Alvaro Viebrantz
 
PDF
Soluções de IoT usando Arduino e Google Cloud
Alvaro Viebrantz
 
Construindo Apps/Projetos com Generative AI
Alvaro Viebrantz
 
Minha jornada na ciência da computação- do diploma ao Google
Alvaro Viebrantz
 
End to End IoT projects with Zephyr.pdf
Alvaro Viebrantz
 
Carreira de Desenvolvimento
Alvaro Viebrantz
 
Construindo aplicações Cloud Native em Go
Alvaro Viebrantz
 
Prototipação em hackathons
Alvaro Viebrantz
 
Building REST APIs using gRPC and Go
Alvaro Viebrantz
 
TinyML - IoT e Machine Learning
Alvaro Viebrantz
 
O que projetos de IoT precisam ?
Alvaro Viebrantz
 
Ambiente de CI/CD com Google Cloud
Alvaro Viebrantz
 
Big Query - Escalabilidade Infinita para os seus Dados
Alvaro Viebrantz
 
Rodando uma API Com Django Rest Framework no Google Cloud
Alvaro Viebrantz
 
Edge computing na prática com IoT, Machine Learning e Google Cloud
Alvaro Viebrantz
 
Edge computing in practice using IoT, Tensorflow and Google Cloud
Alvaro Viebrantz
 
Iniciando com LoRa, The Things Network e Google Cloud
Alvaro Viebrantz
 
Construindo projetos para o Google Assistant - I/O 2019 Recap São Paulo
Alvaro Viebrantz
 
Edge computing na prática com IoT, Machine Learning e Google Cloud
Alvaro Viebrantz
 
Construindo projetos com Google Assistant e IoT
Alvaro Viebrantz
 
Explorando Go em Ambiente Embarcado
Alvaro Viebrantz
 
Soluções de IoT usando Arduino e Google Cloud
Alvaro Viebrantz
 

Último (6)

PDF
Zeebo: Uma brevíssima introdução. - David Glotz
BluePanther6
 
PDF
Aulas Extras - O que é e por que Aprender e Utilizar.pdf
fmartinsss
 
PPTX
Windows 11 Apostila do Básico ao Avançado
deividcosimo1
 
PDF
IA - Grupo J.pdf para trabalho de inteligencia artificial
juanaraujo139815
 
PDF
11 Roberto.pdf astronomia e astronautica
henzoa798
 
PDF
Ceritificado Imersão SOC HackOne Sab/Dom.pdf
RodrigoMori7
 
Zeebo: Uma brevíssima introdução. - David Glotz
BluePanther6
 
Aulas Extras - O que é e por que Aprender e Utilizar.pdf
fmartinsss
 
Windows 11 Apostila do Básico ao Avançado
deividcosimo1
 
IA - Grupo J.pdf para trabalho de inteligencia artificial
juanaraujo139815
 
11 Roberto.pdf astronomia e astronautica
henzoa798
 
Ceritificado Imersão SOC HackOne Sab/Dom.pdf
RodrigoMori7
 

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