2
Loiane Groner
@loiane
github.com/loiane
loiane.com
loiane.training
• 10+ XP TI
• Java, JavaScript, Sencha, Angular,
Phonegap/Ionic
• Blog: http://loiane.com
• Cursos: http://loiane.training
• Meus livros:
IONIC 1
▸ Criado em 2013
▸ Bootstrap para apps mobile
▸ Fornece componentes e diretivas que parecem nativos
▸ Organização de código com Angular 1
▸ Projeto base Cordova (Phonegap): acesso nativo através
de plugins e geração de executável para app stores
▸ Mais de 1 milhão de apps publicadas
▸ Suporte para iOS e Android
▸ Suporte para Windows Phone 8 via template especial
Visual Studio
IONIC 2
▸Reescrita do Ionic 1
▸Organização do código em Angular 2
▸Mesmos componentes do Ionic 1
▸Experiência mais próxima do nativo
▸Melhoria de performance
▸Suporte para iOS, Android e Windows
Phone 10
STACK / DEPENDÊNCIAS
O QUE É IONIC?
CSS + tags HTML do Ionic
O QUE É IONIC?
Base do código com Angular 2
+ ES2015/16 + TypeScript
CSS + tags HTML do Ionic
O QUE É IONIC?
Acesso APIs Nativas (plugins com
Apache Cordova: Ionic Native)
Base do código com Angular 2
+ ES2015/16 + TypeScript
CSS + tags HTML do Ionic
O QUE É IONIC?
Empacotamento do App Nativo (ipa,
apk) com Apache Cordova
Acesso APIs Nativas (plugins com
Apache Cordova: Ionic Native)
Base do código com Angular 2
+ ES2015/16 + TypeScript
CSS + tags HTML do Ionic
ANGULAR 2
▸WebComponents + padrões web
▸Baseado em Componentes
▸TypeScript
▸EcmaScript 2015/2016
▸Components, Services + Observables,
Pipes, Directives
COMPONENTES
E PÁGINAS
DIRETIVAS
NAVEGAÇÃO
SERVIÇOS
TEMPLATE
DATA BINDING
INJEÇÃO
DEPENDÊNCIA
MÓDULOS
Blocos Principais
Angular 2 + Ionic
PLUGINS
CORDOVA (IONIC
NATIVE)
COMPONENTE
{…}
TEMPLATE
<..>
COMPONENTE
{…}
TEMPLATE
<..>
Binding de
Propriedades
COMPONENTE
{…}
TEMPLATE
<..>
Binding de
Propriedades
Binding de
Eventos
COMPONENTE
{…}
TEMPLATE
<..>
DIRETIVAS
{..}
Binding de
Propriedades
Binding de
Eventos
COMPONENTE
{…}
TEMPLATE
<..>
DIRETIVAS
{..}
SERVIÇOS
SERVIÇO A
SERVIÇO B
Binding de
Propriedades
Binding de
Eventos
COMPONENTE
{…}
TEMPLATE
<..>
DIRETIVAS
{..}
SERVIÇOS
SERVIÇO A
SERVIÇO B MÓDULO X
MÓDULO A
MÓDULO B
Binding de
Propriedades
Binding de
Eventos
IONIC 2
▸ Dependência do Angular2 + TypeScript
IONIC 2
▸ Dependência do Angular2 + TypeScript
▸ ES6 (ES2015) / ES7 (ES2016)
IONIC 2
▸ Dependência do Angular2 + TypeScript
▸ ES6 (ES2015) / ES7 (ES2016)
▸ Ionic Native entra no lugar no ngCordova
IONIC 2
▸ Dependência do Angular2 + TypeScript
▸ ES6 (ES2015) / ES7 (ES2016)
▸ Ionic Native entra no lugar no ngCordova
▸ Não usa o roteamento do Angular 2
IONIC 2
▸ Dependência do Angular2 + TypeScript
▸ ES6 (ES2015) / ES7 (ES2016)
▸ Ionic Native entra no lugar no ngCordova
▸ Não usa o roteamento do Angular 2
▸ Navegação por stack (pilha)
COMPONENTES
▸ Action
Sheets
▸ Alerts
▸ Buttons
▸ Cards
▸ Icons
▸ Lists
▸ Search Bar
▸ Tabs
▸ Alert
▸ Modal
▸ IonRefresher
▸ Keyboard
▸ entre outros
https://nodejs.org
INSTALAÇÃO E USO
npm install -g cordova ionic@latest
ionic start minhaApp --v2
CUSTOMIZAÇÃO CSS
▸ Baseado em Componente
▸ Baseado na App
▸ Baseado no Sistema
Operacional
Decorator pra
indicar que é um
componente
Decorator pra
indicar que é um
componente
Seletor: tag
HTML que será
usada para usar esse
componente
Decorator pra
indicar que é um
componente
Seletor: tag
HTML que será
usada para usar esse
componente
Arquivo que
contém o template:
código HTML
Imports das
classes usadas
Construtor
com DI: Injeção de
Dependência
h2 | p: tags HTML
"normais"
h2 | p: tags HTML
"normais"
ion-componente
tags HTML do Ionic 2
Sistema de módulos do
Angular 2
E dá pra fazer app real?
na prática com Pokédex
Apps
instalados:
arquivos .ipa e .apk
Apps
instalados:
arquivos .ipa e .apk
Apps
instalados:
arquivos .ipa e .apk
Diferenças visuais
entre iOS e Android
Apps
instalados:
arquivos .ipa e .apk
Diferenças visuais
entre iOS e Android
PokemonList
PokemonList
PokemonListItem
PokemonList
PokemonList
Cada Item da
lista - loop
Ao clicar/tap
abre página de
detalhes
Ao clicar/tap
abre página de
detalhes
E passamos o
objeto pokemon
para o detalhe
Se existir tipos de
Pokemon - array tem
mais de 1 elemento
Loop for nos tipos
do Pokemon
E aplicamos CSS pra
ficar bonito!
Se o campo de
busca estiver vazio,
retorna a lista de
pokemons
Senão, filtramos
os pokemons que tem a
string de busca no nome
Criamos um serviço que irá
fornecer os dados (provider)
Criamos um serviço que irá
fornecer os dados (provider)
No Componente injetamos o
serviço no construtor
Programação reativa: fluxos:
.map
.do
.catch
Programação reativa: fluxos:
.map
.do
.catch
http://reactivex.io
Também pode cachear a
informação e retornar
Observable de variável
Fazemos a “inscrição" no
Observable pra receber o
resultado
Botão “Voltar" é
adicionado automaticamente
Botão “Voltar" é
adicionado automaticamente
Botão “Voltar" é
adicionado automaticamente
Stack
Pokemo
nList
Stack
PokemonLi
st
Push
PokemonDetail
Pilha
PokemonList
Pop
Botão Voltar
(Back)
(empilha)
(desempilha)
Cada seção dos
detalhes é um componente
auxiliar pra ajudar na
organização do projeto
Páginas são as Views do
aplicativo
Páginas são as Views do
aplicativo
Componentes são
usados para organizar o
código em blocos
menores
ionic platform add ios
Projeto do Xcode
(IDE do iOS)
Nosso código
HTML + JS + CSS
Projeto do Xcode
(IDE do iOS)
https://github.com/loiane/ionic2-pokedex
Pokédex
PRA FINALIZAR…
IONIC NATIVE
▸ Plugins populares do Cordova distribuídos na lib do
Ionic:
▸ Camera
▸ Bluetooth
▸ SqLite
▸ Facebook
▸ Push
▸ entre outros
Imagem
sanitizada pelo
Angular 2 -
segurança
Opções da Foto: base64,
salvar no álbum e 90% de
qualidade
Atribui base64 à
variável imagem
https://ionicframework.com/docs/v2
https://github.com/IonicBrazil/ionic2-docs
O QUE PRECISO APRENDER PRA DESENVOLVER COM IONIC?
▸ Básico sobre Apache Cordova
▸ Para builds e uso de plugins nativos
▸ camera, geolocation, notificação push, etc
O QUE PRECISO APRENDER PRA DESENVOLVER COM IONIC?
▸ Básico sobre Apache Cordova
▸ Para builds e uso de plugins nativos
▸ camera, geolocation, notificação push, etc
▸ Angular 2 + TypeScript
▸ É a base de todo o código
▸ components, services, pipes, etc
▸ EcmaScript 2015/2016 também
O QUE PRECISO APRENDER PRA DESENVOLVER COM IONIC?
▸ Básico sobre Apache Cordova
▸ Para builds e uso de plugins nativos
▸ camera, geolocation, notificação push, etc
▸ Angular 2 + TypeScript
▸ É a base de todo o código
▸ components, services, pipes, etc
▸ EcmaScript 2015/2016 também
▸ Componentes Ionic
▸ Listas, botões, modais, etc
O QUE PRECISO APRENDER PRA DESENVOLVER COM IONIC?
▸ Básico sobre Apache Cordova
▸ Para builds e uso de plugins nativos
▸ camera, geolocation, notificação push, etc
▸ Angular 2 + TypeScript
▸ É a base de todo o código
▸ components, services, pipes, etc
▸ EcmaScript 2015/2016 também
▸ Componentes Ionic
▸ Listas, botões, modais, etc
Tem curso
grátis no meu canal
do YouTube
Tem curso
grátis no meu canal
do YouTube!
Quer aprender mais sobre Cordova e
Angular 2?
/loianegroner
http://loiane.com
facebook.com/loianegroner
twitter.com/loiane
https://github.com/loiane
youtube.com/loianegroner
http://loiane.training

Mobile Summit Brazil: Ionic 2