Androideios
Androideios
Androideios
O React Native foi adotado com sucesso por centenas de empresas em todo o mundo, incluindo
Uber, Microsoft e Facebook, e é usado em vários setores.
No entanto, antes de decidir usar o React Native, é crucial que você entenda como ele
funciona e decida se é o mais adequado para o seu projeto.
Quais são suas principais vantagens e maiores desvantagens? Qual é a diferença de
outras plataformas de desenvolvimento cruzado? O que seus desenvolvedores e
desenvolvedoras precisam estar cientes antes de embarcar na jornada React Native?
Essas e outras perguntas serão respondidas ao longo desse artigo para que você possa fazer uma
escolha consciente e ver se o React Native é o ideal para você ou o projeto que pretende
desenvolver.
1
Foi assim que o React Native ganhou vida. Inicialmente desenvolvido apenas para iOS, o
Facebook rapidamente o seguiu com suporte ao Android, antes de tornar o framework público
em 2015. Apenas três anos depois, o React Native já era o segundo maior projeto no GitHub,
medido pelo número de contribuidores.
2
A diferença mais importante entre TypeScript e JavaScript é que eles são duas linguagens de
programação separadas, embora o TypeScript seja fortemente baseado em JavaScript. Na
verdade, TypeScript é um superconjunto de JavaScript, o que significa que todo código
JavaScript válido também é código TypeScript válido. O TypeScript não altera o JavaScript, mas
o expande com novos e valiosos recursos.
O TypeScript introduziu uma grande quantidade de sintaxe extraída da programação orientada
a objetos, sendo eles:
• tipos enumerados;
• interfaces;
• genéricos;
• módulos.
3
Muitas empresas hoje veem o TypeScript como um diferencial no currículo da pessoa
programadora. Mas nada impede o desenvolvedor ou desenvolvedora de aprender a usar o
TypeScript dentro da empresa, visto que tudo o que ele já sabe sobre JavaScript será aplicado lá
também.
Se ficou curioso(a) para saber mais sobre a batalha entre o TypeScript e JavaScript, dê uma
olhadinha nesse artigo: Javascript ou Typescript? que temos aqui na plataforma Alura.
4
JavaScript
Nessa parte, o código é executado em um mecanismo JavaScript. O React Native usa score,
que é um mecanismo JavaScript de código aberto para WebKit. Esse mecanismo é executado
dentro de nosso aplicativo em uma das threads, sendo que um aplicativo móvel possui várias
threads e que o javascript é uma delas.
Na parte nativa
No lado nativo, asos pessoas desenvolvedoraes desenvolvem em Object Swift, no caso do iOS,
ou com Java/Kotlin se for para Android. Usaremos as linguagens nativas específicas da
plataforma que usamos antes e a thread principal da interface do usuário estará disponível como
de costume.
Em todas as plataformas, só precisamos alterar a interface do usuário da thread principal da
interface do usuário e poderemos criar diferentes threads em segundo plano conforme
necessário.
Ecossistema iOS – Hipsters Ponto Tech #306
The Bridge
O the bridge ou então a "ponte" do React Native é uma forma de comunicar o nosso
código JavaScript com a parte nativa (o código do Android e/ou iOS).
Ele funciona como se fosse o coração do React Native, se comunicando com os dois lados de
forma assíncrona. Basicamente é assim que acontece:
5
1. Escrevemos o código de um componente botão;
2. O JavaScriptCore vai compilar o código do componente e enviar para a bridge;
3. A bridge, por sua vez, vai pegar esse código compilado e enviar para a parte nativa,
para que possa ser exibido o botão;
4. O nativo entende e monta o componente do botão em tela;
5. Se houver uma interação no botão, ou seja, se for clicado, esse evento acontece
primeiro no lado nativo, que vai para o bridge e depois para a parte em que foi
programada em JavaScript para executar alguma função, por exemplo.
Como é apenas uma sugestão, os nomes das pastas podem até variar um pouco, mas o ideal é
manter um padrão e seguir uma estrutura semelhante.
6
Na imagem, você vai perceber que dentro da pasta "telas" existem outras 3 pastas, uma para
cada tela. E, dentro de cada tela, tem um arquivo index.js, que contém a lógica e estrutura da
página, e outro arquivo estilos.js, que contém os estilos da página.
Algumas pastas extras podem aparecer dentro de scr, como é o caso de config. Essa pasta
contém os arquivos de configuração do Firebase.
Nosso arquivo de rotas também tem um padrão, que fica assim:
Como podemos ver, o arquivo rotas.js contém a importação de cada tela e fica por meio
de containers do react-navigation para permitir a navegação entre as telas.
7
Dentro de cada tela ou componente, temos uma estrutura muito padrão conforme o código
abaixo:
Os componentes ou telas são criadas e exportadas como função e, dentro dela, temos diversos
elementos do React Native, como View, Text, TouchableOpacity e entre outros.
Perceba também que cada elemento React Native contém um estilo, que vem do
arquivo estilos.js. Esse arquivo normalmente tem essa estrutura:
Assim ficam as estruturas básicas do React Native. Mantendo esse ou um padrão parecido, será
muito mais fácil de trabalhar com a aplicação no futuro, seja em grupo ou individualmente.
8
Principais características do React Native
O React Native possui várias características que o tornam uma escolha poderosa para a
construção de aplicativos móveis. Entre elas temos:
1. Desenvolvimento multiplataforma
Aí você pode estar se perguntando o que seria esse desenvolvimento multiplataforma? O
desenvolvimento multiplataforma é a prática de construir software compatível com mais de
um tipo de plataforma de hardware. Um aplicativo multiplataforma pode ser executado no
Microsoft Windows, Linux e macOS, ou apenas em dois deles. Um bom exemplo de aplicativo
multiplataforma é um navegador da Web que executa o mesmo, independentemente do
computador ou dispositivo móvel em que você o executa.
A ideia aqui é facilitar ao máximo a vida da pessoa programadora, uma vez que o mesmo código
que ele desenvolver poderá produzir aplicações que rodem em diferentes plataformas, sem ficar
se preocupando em ter que aprender a usar ferramentas muito diferentes para um mesmo
propósito.
Com isso, o React Native e até outros serviços com esse propósito ganham maior audiência da
comunidade, uma vez que você não precisa decidir qual público-alvo, ou seja, usuários de iOS
ou Android, pois o software multiplataforma é executado em ambos, o que lhe dá acesso a
uma base de usuários mais ampla.
Existem algumas diferenças de navegação e design entre iOS e Android que, no
desenvolvimento multiplataforma, são tratadas por padrão, graças à base de código
compartilhada.
Isso ajuda a criar uma identidade de marca de aplicativo consistente em ambas as plataformas
com menos esforço do que se fosse construído nativo.
Sendo assim, uma das maiores vantagens do desenvolvimento multiplataforma é que você
pode construir apenas uma base de código para Android e iOS ao mesmo tempo. O
desenvolvimento de aplicativos nativos requer escrever código separadamente e
frequentemente precisa de dois desenvolvedores de software diferentes para realizar o
trabalho, um para iOS e outro para Android.
9
Nem tudo são flores e mesmo que o React Native possua diversas vantagens, ele também tem
algumas desvantagens. Com isso, vamos analisar com relação a dois pontos diferentes:
Vantagens em relação à perspectiva de negócio e em relação ao de desenvolvimento.
É importante que você saiba os prós e contras para tomar decisões acertadas e bem
informadas em sua carreira, então vamos lá!
10
• Uma base de código para todos: a possibilidade de manter apenas uma base de
código para executar um projeto em um Android, iOS e Web;
• Modo de demonstração: ao usar o Expo, é possível criar uma demonstração para um
cliente sem realmente enviar o aplicativo para a App Store ou Play Store. A única coisa
que precisamos é do App Expo em um dispositivo móvel;
• Atualizações Over The Air (OTA): permitem enviar correções rápidas diretamente aos
usuários sem a necessidade de esperar que a App Store ou o Play Store aceitem as
alterações;
• Hot reload: permite que os desenvolvedores vejam as alterações que aplicaram no
código em tempo real.
Desvantagens
• Desempenho menor que o nativo: React Native não é capaz de usar todas as
vantagens e o potencial de uma plataforma específica. Assim, um aplicativo nativo
pode realmente maximizar as funcionalidades e entregar a melhor experiência ao
usuário no resultado final.
• Módulos personalizados: muitos módulos personalizados já estão disponíveis, mas
pode haver a necessidade de alguns componentes específicos que você será forçado a
construir do zero.
• Problemas de atualização: é difícil manter o aplicativo atualizado com a versão mais
recente do React Native. Atualizar versões do React Native é, na maioria dos casos, um
processo complicado.
• Recursos novos: os recursos novos que chegam aos nativos podem demorar a chegar
para o React Native.
11
lidar com o Xcode por algum motivo, você pode definitivamente fazer isso, usando os serviços
do Expo.
Ele tem recursos excelentes que você pode usar para otimizar seu tempo e custo de
desenvolvimento. Logo, fica fácil entender por que o Expo ganhou muita popularidade entre os
desenvolvedores React Native nos últimos anos.
Apesar dos ótimos recursos que oferece a seus usuários, o Expo tem algumas limitações sérias
que você precisa considerar ao desenvolver seu próximo aplicativo.
12
Agora que temos nosso setup configurado na nossa máquina, vamos criar um App com Expo?
Depois, vamos navegar para o projeto criado /PrimeiroProjeto e podemos abrir ele em algum
editor de texto de sua preferência - eu costumo usar o VSCode.
No terminal, dentro da pasta do projeto, digite:
expo start
Seu projeto será executado e será listado no terminal mesmo alguns comandos para rodar o
aplicativo no emulador Android, simulador iOS ou ler um QR Code no celular físico para ele ser
executado também.
Você notará que dentro da pasta já tem alguns arquivos criados. Essa é uma estrutura básica
do React Native com Expo. Se divirta alterando algumas informações como texto e imagem e
veja o que acontece!
cd PrimeiroProjeto
Você também vai notar que algumas pastas e arquivos foram criados por padrão. Essa é uma
estrutura base do React Native CLI. A grande diferença em relação ao Expo são as pastas "ios" e
"android" que aparecem. Com elas é possível adicionar e modificar bibliotecas nativas no seu
App.
13
npx react-native run-ios
Se quiser saber como posicionar elementos na tela e mexer com algumas unidades de
medidas, esses artigos aqui estão explicando muito bem isso!
• Forte conhecimento dos fundamentos do React, como o DOM virtual, ciclo de vida do
componente, estado do componente, etc;
• Forte conhecimento de JavaScript e paradigmas de programação funcional. Por
exemplo, escrever código funcional em oposição ao código imperativo;
• Experiência com uma biblioteca de gerenciamento de estado como Context API,
Redux, MobX ou outros;
• Escrevendo código limpo, confiável e sustentável;
• Testes de unidade como jest, prop types, flow, etc.
• Experiência com depuração de Apps;
O que é o Expo?
Expo é um framework que facilita muito o desenvolvimento de Apps. É um conjunto de
ferramentas e serviços construídos em torno de plataformas nativas e React Native que ajudam
você a desenvolver, construir, implantar e iterar rapidamente em aplicativos iOS, Android e web
a partir da mesma base de código JavaScript/TypeScript.
Resumindo, o Expo abstrai toda a configuração inicial que é preciso fazer para começar a
programar com React Native, tornando muito mais simples o desenvolvimento e também o uso
de mapas, câmeras e diversos sensores em suas aplicações.
Usar o Expo parece bom demais né!? Partiu ver como configurar seu ambiente para usar ele!
14
O passo a passo de configuração é basicamente o mesmo em cada sistema operacional,
mudando poucas coisas, mas separei abaixo a instalação em vídeo de cada um para facilitar:
Windows
Se você utiliza o Windows, assista este Alura+ para configurar o seu ambiente.
macOS
Linux
Caso opte por usar algum emulador ou simulador, aconselho dar uma olhada nesse outro artigo,
que além de ensinar a configurar o React Native CLI também é mostrado sobre os emuladores.
Porém, se você está começando ou quer mais agilidade é bem simples e rápido usando o celular
real, além de ter a sensação real de ver o seu aplicativo em um dispositivo que não é simulado.
Para isso, o que você precisa fazer é:
React Native
React Native é um dos mais incríveis frameworks de aplicativos baseados em JavaScript
que se destina a desenvolver aplicativos móveis renderizados nativamente para
Android e iOS. Você pode utilizar a mesma base de código para desenvolver aplicativos
para várias plataformas com React Native.
15
Native Base
Native Base é uma biblioteca existente desde os primeiros dias do React Native para
oferecer suporte a componentes de interface de usuário de plataforma cruzada. Ele está
oferecendo uma rica lista de componentes que parece bem fora da caixa. Ele oferece
suporte básico para todos os componentes e oferece configuração predefinida para
vários componentes com todos os casos de uso possíveis.
Claro e escuro são dois temas padrão desta biblioteca. No entanto, a biblioteca de ícones
vetoriais React Native é essencial para dar suporte e utilizar os ícones adequadamente.
Ele também pode suportar a web por meio da web React Native.
Teaset
Teaset é outra adição fantástica ao conjunto de bibliotecas React Native. É basicamente
uma biblioteca de interface de usuário que apresenta mais de 20 JS ES6 puro para suas
classes de conteúdo de componente. Com muito apreço, o Teaset é a solução ideal para
quem tem um talento especial para o design e simplicidade. Ele está se concentrando
principalmente no controle de ação e exibição de conteúdo.
• Por isso, você certamente pode ter mais controle sobre como vai personalizar
os componentes.
• No entanto, o processo de personalização desta biblioteca envolve uma
mistura de adereços básicos da API React Native com alguns adereços
personalizados também.
• O pacote React Native Elements inclui um pacote completo de componentes,
incluindo preços, sobreposição, emblema, barras de pesquisa específicas da
plataforma, divisor, etc.
Para usar React Native Elements para projetos baseados na web, os desenvolvedores
podem acessar o React Native Web. No geral, o React Native Elements permite que
você crie uma interface do usuário adaptável e rápida rapidamente.
16
Material Kit React Native
Material Kit componente está oferecendo um modelo de aplicativo nativo
gratuitamente com material design. O componente é construído com a estrutura Galio e
foi criado para permitir que você reprojete os componentes para mantê-los atualizados
e mínimos.
Ele vem com mais de 200 elementos artesanais, incluindo navegação, entradas, cartões,
botões, etc. Você pode fazer alterações no tema para trazer variações de cores em todos
os componentes.
No geral, é super fácil de usar a biblioteca, que vem com 5 páginas de exemplo e cinco
plug-ins customizados também. No entanto, você também pode ter acesso à sua versão
profissional, o que permite obter mais exemplos com facilidade.
Ele também permite alternar entre temas escuros e claros em tempo de execução. Não
há necessidade de recarregar o tema para isso.
Plug-ins e bibliotecas Lottie estão disponíveis para uso gratuitamente. Ele permite que
você utilize coleções selecionadas de animações para tornar os aplicativos mais
interessantes e atraentes.
Nachos UI
Nachos UI biblioteca está oferecendo mais de 30 componentes que podem ser usados
em qualquer projeto nativo JS e react. Ele pode mantê-lo sem estresse para estilizar
qualquer um dos componentes necessários. Você pode personalizar facilmente os
componentes de acordo com o estilo adequado ao seu projeto.
17
React Native Vector Icons
Vector Icons é uma fantástica biblioteca de componentes React Native se você deseja
adicionar ícones ao seu aplicativo, pois contém mais de 3000 ícones. Por isso, pode
oferecer-lhe quase tudo o que é ideal para as suas necessidades.
Além disso, esta biblioteca permite estilizar, estender e personalizar ícones ao integrá-
los ao seu projeto.
No geral, pode ser a melhor biblioteca a ser usada para os ícones de seus aplicativos.
Conclusão
A lista acima dos dez melhores componentes do React Native é baseada em
componentes mantidos ativamente que você pode usar para seus aplicativos com
facilidade. Certifique-se de escolher a opção certa que atenda aos requisitos do seu
aplicativo da melhor maneira possível, para que você possa aproveitar ao máximo esses
componentes do React Native facilmente.
React Native é uma das mais incríveis estruturas de aplicativos com base em JavaScript,
projetada para desenvolver aplicativos móveis renderizados nativamente para Android e
iOS. Você pode utilizar a mesma base de código para desenvolver aplicativos para várias
plataformas com React Native.
O Que é CSS?
CSS é uma linguagem de estilos usada para estilizar elementos de uma página desenvolvida
com uma linguagem de marcação, como o HTML. O que ela faz é separar a parte estrutural
escrita, ou seja, o conteúdo, da parte visual, ou seja, o design gráfico dessa mesma página.
A expressão cascata da nomenclatura indica que é possível usar mais de um arquivo CSS ao
mesmo tempo para criar o estilo visual de um site. É o CSS que estipula o visual dele, incluindo
elementos como tamanho da fonte, imagens de fundo e estilo de cores.
18
A linguagem CSS tem muitas possibilidades de formatação. Ela permite mexer, editar,
remover, alinhar ou trabalhar no espaçamento dos elementos de uma página de forma prática
e fácil.
Isso garante mais flexibilidade e agilidade não apenas para os elementos textuais e gráficos
que constituem essa mesmo página, mas também para profissionais que trabalham com essa
linguagem de estilos.
É por isso que desenvolvedores, sejam iniciantes ou experientes, costumam usá-la nos seus
projetos online. Sites, blogs e ecommerce frequentemente são feitas com folha de estilo CSS,
além de outras linguagens.
O CSS funciona através de uma sintaxe de códigos que possuem regras próprias e que
influenciam na apresentação visual de uma página.
Quando um desenvolvedor aplica estes códigos CSS na estrutura de uma página, eles ficam
gravados juntos com outras informações desta mesma página. Isso inclui conteúdos em texto,
animações, vídeos e o que mais tiver sido inserido.
Assim, quando um usuário acessa um site, o navegador organiza todos esses dados e mostra os
elementos visuais estilizados na tela. Mas sem esquecer dos demais conteúdos programados
com outras linguagens de programação.
Essa é a combinação de linguagens que acontece na maioria dos sites na internet. Como
resultado, os leitores e visitantes se sentem mais inclinados a continuar acessando uma página.
Já pensou seu site ter este nível de complexidade no visual?
Uma particularidade do CSS é que ele veio para preencher lacunas deixadas pela linguagem
HTML. É como se o HTML fosse o esqueleto de uma pessoa, enquanto o CSS são as roupas.
Juntas, elas moldam a estrutura óssea, o visual e o estilo gráfico de um site.
É bem fácil de perceber quando um site não usa a linguagem CSS na sua estrutura. Imagine
uma situação em que uma página HTML que não carrega completamente. E, na imagem de
fundo, está uma tela totalmente branca, e os textos estão em azul ou preto.
19
Antigamente, essa era a realidade dos desenvolvedores. Era preciso definir e escrever toda a
estrutura textual e visual de um site na linguagem de marcação HTML. Com, o CSS, o
programador cria arquivos CSS estilizados e pode inseri-los sobre o código HTML.
Ou seja, com o CSS, não é mais necessário escrever os elementos de um site individualmente
em código HTML. A estrutura textual de conteúdo fica com o HTML. A parte visual, agora, é
toda definida pelos múltiplos estilos possíveis com o CSS.
Essa é uma das grandes vantagens de se usar CSS. Algumas outras são:
• Mudanças Rápidas e Facilitadas
Os estilos implementados pelo CSS permitem que a parte estrutural e fundamental de um
documento seja separada da sua parte de apresentação. Ou seja, mudanças na parte visual e
no estilo do arquivo podem ser feitas de forma rápida e facilitada, sem comprometer todo o
conteúdo do arquivo.
• Folhas de Estilo Multifuncionais
Assim que o programador cria uma folha de estilos, ela pode ser aplicada a vários documentos
diferentes. Assim, todos eles podem ter a mesma aparência e visual de página, caracteres e
planos de fundo, por exemplo. Algo que otimiza o tempo de produção e agiliza os trabalhos no
seu projeto na internet.
• Códigos Menos Poluídos e Mais Organizados
Como o código de formatação fica armazenado em um único arquivo CSS, fora do contato com
o HTML, os códigos CSS recebem menos atributos e propriedades específicas. Isso resulta em
linhas de códigos mais limpas e mais fáceis de entender, economizando tempo na manutenção
de um site. Os navegadores também carregam as páginas mais rapidamente.
O CSS é a linguagem de estilos para compor o aspecto visual de uma página na web. Por conta
disso, ela contém uma série de aplicações. Conheça algumas delas abaixo.
• Animações
São elementos que ajudam sites a receber mais atenção dos visitantes do que simples páginas
estáticas. Neste caso, é exigido um conhecimento mais aprofundado do programador para
executar a estrutura certa de uma animação, pois ela é mais complexa do que apenas
configurar elementos visuais simples.
• Efeitos Visuais
O estilo cascata do CSS se encaixa com efeitos de estilo que se sobrepõem uns aos outros. Isso
cria um atrativo visual extra para quem está acessando tal página na internet com essas
funcionalidades. Um dos efeitos mais apropriados para este aspecto é o Parallax, que confere
um efeito de profundidade mais realista ao layout.
• Sites Dinâmicos
Como a linguagem de estilos CSS é versátil e fácil de implementar, desenvolvedores são
capazes de criar sites dinâmicos usando efeitos combinados. Podem ser animações, passagens
de transição, páginas responsivas, linhas e fontes personalizadas e mudanças de tonalidades
quando o cursor do mouse passa sobre algum objeto.
• Landings Pages
São as páginas de destino usadas para capturar informações dos visitantes ou oferecer vendas
de produtos e serviços. Estas páginas precisam ser visualmente atrativas para conquistar a
20
atenção de quem as acessa. Além disso, geralmente contam com formulários de inscrição e
elementos gráficos destacados. Tudo feito com CSS.
Agora você vai aprender a como usar CSS no seu projeto. Como vimos antes, o HTML e o CSS
trabalham juntos para apresentar uma página de internet bem estruturada. Tanto na parte do
conteúdo quando no visual.
Assim, vamos usar o código básico do HTML como ponto inicial. Por exemplo: temos
que <p>Isso é um parágrafo<p>. Para estilizar esse trecho em CSS, você precisa selecionar um
elemento e declarar o que deseja fazer com o bloco de informação.
Assim, na prática, temos:
Situação 1: Todos os elementos <p> são estilizados e coloridos nas cores azul (blue) e negrito
(bold).
1. <style>
2. p{
3. color: blue;
4. text-weight: bold;
5. }
6. <style>
Situação 2: Todos os elementos <p> terão alinhamento centralizado (center), com tamanho de
fonte 16 (font-size) e cor rosa (pink).
1. <style>
2. p{
3. text-align: center;
4. font-size: 16px;
5. color: pink;
6.
7. }
8. </style>
O CSS pode ser apresentado usando alguns métodos. São eles: Interno, Externo e Inline.
Vamos explicar brevemente o que cada um deles é e como atuam nas páginas de internet.
1. Interno. Neste método, o CSS é carregado toda vez que um site é atualizado, o que pode gerar
tempos de carregamento maiores. Não é possível usar o mesmo estilo CSS em várias páginas,
pois este método fica configurado para apenas uma página. O benefício disso é ser mais fácil
compartilhar o template da página para uma pré-visualização.
21
2. Externo. Neste método, tudo é feito em um arquivo .css em separado. Isso significa que você
pode programar e planejar todo o conteúdo CSS de uma página em um documento. E, mais
tarde, anexá-lo ao arquivo HTML dessa mesma página. Um dos benefícios, com isso, é a
diminuição do carregamento de sites.
3. Inline. Neste método, o programador ou desenvolvedor trabalha com elementos específicos
que usam a tag <style>. Cada componente precisa ser estilizado; por isso, não é o jeito mais
rápido de se usar códigos CSS. Ainda assim, pode ser útil se você quiser fazer alterações em um
único elemento ou não tiver acesso aos arquivos CSS.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<div><h1 class="bg-blue">Hello world!</h1></div>
</body>
</html>
22
Este HTML resultará em algo assim:
Agora, imagine escrever regras CSS de propósito único, tão úteis, e mantê-las em
um arquivo CSS global. Eu sei que é um investimento de tempo, mas pense nisso – você
poderá usar essas classes auxiliares de propósito único em qualquer lugar que desejar.
Você só precisa do seu arquivo HTML para consumir esse arquivo CSS global e pronto.
Você também poderá usar combinações dessas classes auxiliares em uma única tag
HTML.
.bg-blue {
background-color: rgb(81, 191, 255);
}
.bg-green {
background-color: rgb(81, 255, 90);
}
.text-underline {
text-decoration: underline;
}
.text-center {
text-align: center;
}
.font-weight-400 {
font-weight: 400;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
23
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<div><h1 class="bg-blue">Hello world 1</h1></div>
<div><h1 class="text-underline">Hello world 2</h1></div>
<div class="text-center">
<h1 class="bg-green font-weight-400 text-underline">Hello world 3</h1>
</div>
</body>
</html>
Isso gerará o seguinte resultado:
24
É aí que entra o Tailwind CSS. O conceito de Atomic CSS não é novo,
mas o Tailwind CSS o leva a outro nível.
Você pode obter uma lista de todas as classes utilitárias que o Tailwind tem
a oferecer na página de documentação. Além disso, se você estiver
trabalhando no VS Code, poderá instalar uma extensão chamada Tailwind
CSS IntelliSense, que dará sugestões automáticas, enquanto você continua
digitando as classes utilitárias, conforme mostrado na imagem abaixo.
25
O Tailwind CSS funciona sem problemas com uma infinidade de estruturas
como Next, React, Angular e muito mais – e até mesmo no HTML OG(Open
Graph).
Para a demonstração prática abaixo, estou usando Tailwind CSS com uma
aplicação do Next. Para configurar uma aplicação do Next com o Tailwind
CSS diretamente, use o seguinte comando:
Com o npx:
npx create-next-app --example with-tailwindcss with-tailwindcss-app
ou com o yarn:
yarn create next-app --example with-tailwindcss with-tailwindcss-app
Uma vez que o projeto foi configurado, você pode começar a
próxima etapa para criar um componente básico de cartão.
Mãos à obra
// Arquivo Card.js
// a ser renderizado no index.js
26
beatae nulla, atque et sunt ad voluptatum quidem impedit numquam quia?
Lorem ipsum dolor sit amet consectetur adipisicing elit. Facilis
beatae nulla, atque et sunt ad voluptatum quidem impedit numquam quia?
</h6>
</div>
27
Veja com que facilidade consigo estilizar o componente de cartão
sem sair do arquivo Card.js. Não há a necessidade de escrever
nenhum arquivo CSS extra.
Usando flex com a <div>, aplique a ela a regra de CSS display: flex;.
Quer adicionar position: relative; em uma <div>? Adicione
apenas relative na className e pronto.
Também podemos adicionar diferentes modificadores
como hover, active, focus e assim por diante para renderizar
condicionalmente classes utilitárias. É possível aplicar regras de
CSS complexas como esta:
.some-class-name {
--tw-space-x-reverse: 0;
margin-right: calc(0.5rem * var(--tw-space-x-reverse));
margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));
}
28
Basta mencionar space-x-2 na tag <div>. Legal, não é?
Temos que mencionar esses estilos explicitamente em algum
tipo de arquivo CSS global? Absolutamente, não! O Tailwind faz
isso automaticamente por nós. Essa é a beleza do Tailwind.
Com a v3 e depois dela, o Tailwind lançou um novo recurso chamado compilador Just-
in-Time. O compilador JIT evita compilar todo o CSS antecipadamente e compila apenas
o CSS como e quando precisamos dele.
Basta olhar para uma das classes utilitárias para adicionar um box-
shadow na sua <div> (fonte):
29
Como você pode ver, existem apenas 8 variantes de sombra que o Tailwind fornece.
Existem valores predefinidos para deslocamento vertical e horizontal, desfoque,
propagação, cor e opacidade. É por isso que o Tailwind é opinativo.
Ele tenta dar uma opinião sobre quais valores de propriedade escolher em quase todas
as propriedades de estilo existentes. Acredite: na maioria dos casos, essas 8 variantes
(para box-shadow) serão mais do que suficiente para criar uma ótima interface de
usuário.
Por exemplo, no exemplo prático acima, usei shadow-lg na <div> pai principal, para
obter aquela bela sombra de caixa externa.
theme: {
extend: {
boxShadow: {
30
'3xl': '0 35px 60px -15px rgba(0, 0, 0, 0.3)',
}
}
}
}
Agora, com o advento do JIT, você também pode usar um valor
arbitrário entre colchetes [], como mostrado abaixo:
<div class="shadow-[0_35px_60px_-15px_rgba(0,0,0,0.3)]">
// O resto do código vai aqui
</div>
O uso de valores arbitrários pode ser útil quando você precisar de um estilo específico
em apenas alguns lugares. Neste caso, criar um tema para ele no tailwind.config.js pode
parecer desnecessário.
FlatList funciona bem para longas listas de dados, onde o número de itens pode mudar com o
tempo. Diferentemente dos mais genéricos ScrollView, os FlatList únicos processam os
31
elementos que estão sendo exibidos na tela, nem todos os elementos de uma só vez.
Nesse sentido o FlatList componente requer dois adereços: datae renderItem. data é a fonte
de informações para a lista. renderItem pega um item da fonte e retorna um componente
formatado para renderizar.
A princípio este exemplo cria um simples FlatListdado codificado. Cada item nos data
acessórios é renderizado como um Text componente. O FlatListBasics componente processa o
FlatList e todos os Text componentes.
32
{key: 'Jillian'},
{key: 'Jimmy'},
{key: 'Julie'},
]}
renderItem={({item}) => <Text style={styles.item}>{item.key}</Text>}
/>
</View>
);
}
}
Entretanto se você deseja renderizar um conjunto de dados dividido em seções lógicas, talvez
com cabeçalhos de seção, semelhantes aos UITableViews no iOS, um SectionList é o caminho a
seguir.
33
paddingTop: 22
},
sectionHeader: {
paddingTop: 2,
paddingLeft: 10,
paddingRight: 10,
paddingBottom: 2,
fontSize: 14,
fontWeight: 'bold',
backgroundColor: 'rgba(247,247,247,1.0)',
},
item: {
padding: 10,
fontSize: 18,
height: 44,
},
})
Enfim um dos usos mais comuns de uma exibição de lista é exibir dados que você busca de um
servidor. Para fazer isso, você precisará aprender sobre redes no React Native.
API: significado
Se você está se perguntando o que é API, em uma definição formal, esse conceito está
relacionado a um conjunto de rotinas e padrões estabelecidos por um software para
a utilização das suas funcionalidades por outros aplicativos.
O conceito de API nada mais é do que uma forma de comunicação entre sistemas. Ou
seja, elas permitem a integração entre dois sistemas, em que um deles fornece
informações e serviços que podem ser utilizados pelo outro, sem a necessidade de
algum dos sistemas conhecer detalhes de implementação do software.
Em outras palavras, é uma forma bem segura pela qual dois aplicativos trocam dados.
Assim, as APIs cuidam dessa comunicação em tempo real.
Para você entender melhor, usamos uma metáfora para explicar o significado de uma
API. Quando vamos a um restaurante, escolhemos um prato no menu e fazemos o
pedido ao garçom.
De forma geral, uma API funciona da mesma forma que o garçom em nosso exemplo.
Ao receber o pedido, a API o encaminha ao sistema responsável e, em seguida, devolve
o que solicitou.
34
Importância das APIs
Hoje, por termos um mundo tão conectado, as APIs são essenciais para a entrega de
produtos cada vez mais ricos para os usuários.
Podemos pensar na utilidade do que é API por dois pontos de vista: como produtor ou
consumidor.
Quando você produz, você está criando APIs para que outras aplicações ou sistemas
possam se integrar ao seu sistema. Isso não significa que você irá criar uma API apenas
para expor seu sistema a terceiros.
Vai depender do seu propósito, mas a API também pode ser apenas para seu uso, como
de uma interface sua para os clientes.
Seguindo nessa linha de raciocínio, imagine que você possua um sistema de comércio.
Ao criar uma API de acesso ao seu sistema, você possibilita a oferta de seus produtos
nas interfaces de seu interesse.
O que você vai expor de seu sistema na API depende do que deseja oferecer como
funcionalidade, mas poderia, por exemplo:
• listar produtos;
• ofertar promoções;
• efetivar vendas;
• realizar cobrança do pedido.
No entanto, hoje em dia já possuímos uma quantidade enorme de APIs que podemos
utilizar para enriquecer nossas aplicações, e são de todos os tipos. Vou citar apenas
algumas para ilustrar a gama de serviços e funcionalidades já existentes para
integração entre sistemas, que certamente já estão no seu dia a dia.
Pagamentos
35
• PagSeguro;
• Paypal;
• Iugu;
• Gerencianet;
• Cielo.
Todos eles vão oferecer uma infinidade de formas de pagamentos para sua aplicação.
Redes sociais
Umas vastas quantidades de redes sociais também oferecem exemplos de APIs que
podemos utilizar para enriquecer a experiência dos usuários em nossas aplicações.
Algumas deles são:
• Facebook;
• Twitter;
• Instagram;
• WhatsApp;
Localização
Uma das APIs mais populares quando falamos de localização é a do Google Maps. APIs
do tipo irão possibilitar que sejam oferecidos serviços e informações para o usuário de
acordo com sua localização, trazendo uma experiência muito mais rica.
Comércio eletrônico
Exemplos de APIs desse tipo possibilitam integrar com sistemas e ampliar a oferta de
produtos para venda, assim como fazer acompanhamento de compras realizadas.
Algumas plataformas que oferecem APIs nesse sentido são:
• Mercado Livre;
• eBay.
Esses são somente alguns exemplos de APIs, mas as possibilidades de integração são
enormes.
36
A plataforma não só proporciona uma forma simples de integrar com qualquer API,
como também traz algumas integrações já prontas, facilitando bastante a vida de quem
deseja aprender como criar um chatbot ágil.
O principal tipo de integração pronta que podemos pensar que a plataforma Take Blip
nos traz são com os canais onde o chatbot pode ser oferecido.
Para que um chatbot funcione dentro de um canal, cada canal também disponibiliza
uma API. É através dela que o chatbot será capaz de:
No entanto, cada canal oferece uma API diferente, o que vai requerer que você
conheça os detalhes da API para criar seu chatbot.
E se o bot estiver em mais de um canal, é mais de uma integração a ser feita. Utilizando
a plataforma Take Blip, não temos esse tipo de preocupação, pois a plataforma já é
integrada a cada um desses canais.
• Messenger;
• WhatsApp;
• SMS;
• Etc.
37
O que é o Firebase de Google?
O Firebase de Google é uma plataforma digital utilizada para facilitar o desenvolvimento de
aplicativos web ou móveis, de uma forma efetiva, rápida e simples. Graças às suas diversas
funções, é utilizado como uma técnica de Marketing Digital, com a finalidade de aumentar a
base de usuários e gerar maiores benefícios econômicos.
38
Mediante o uso de Admob, o Firebase habilita a possibilidade de gerar dinheiro com anúncios
e publicidade.
O Firebase começa a cobrar quando você está em um nível mais avançado e experiente. Nessa
etapa, você pode solicitar planos de maior hierarquia, segundo o uso que quiser lhe dar.
Por meio dos serviços oferecidos, permite desenvolver suas aplicações, desde qualquer
dispositivo, de uma forma simples, segura e rápida.
No desenvolvimento
São diferentes serviços e com diversas utilidades.
• real time data base: nos ajuda dando uma base de dados em tempo real;
• autenticação: se executa para identificar os usuários por meio do e-mail ou das redes sociais;
• nuvem de armazenamento: armazenamento e envio de arquivos à escala de Google;
• hosting: se utiliza para publicar nosso site;
• remote config: é utilizado para modificar alguns aspectos do nosso app sem a necessidade de
atualizá-lo;
• test lab: serve para testar o aplicativo antes de publicá-lo;
• crash reporting: se utiliza para reportar erros do aplicativo.
39
• proporciona a possibilidade de acessar a aplicação desde outros links e desde outros
aplicativos mediante Dynamic Links;
• permite fazer publicidade de nosso app usando AdWords;
• ajuda a monetizar o nosso aplicativo mediante a publicidade, utilizando AdMob.
Como podemos observar, existem múltiplas funcionalidades para conseguirmos fazer crescer
nosso negócio.
É importante considerar que os aplicativos, hoje em dia, representam um mercado que ainda
se está descobrindo e se mantêm em constante evolução, portanto, é fundamental entrar
nesse meio utilizando as melhores plataformas.
40