Você poderia dizer que existem cerca de três maneiras de criar um
aplicativo React Native - um deles é o expo com o chamado fluxo
de trabalho gerenciado, que é a abordagem que usamos no curso e que tem uma espécie de linha tracejada em
torno dele, porque isso não é realmente uma alternativa para a criação de um aplicativo não expo, é claro
que isso abraça
fortemente a expo. É a abordagem que usamos no curso. É fácil de usar, possui praticamente nenhuma configuração, funciona de
maneira imediata, você pode testar facilmente o aplicativo em um dispositivo real, possui vários módulos nativos integrados, super fáceis de instalar e usar.
É controlado com a CLI expo, basta digitar npm start ou expo start, você possui as ferramentas expo dev no
navegador, é fácil de executar em simuladores e dispositivos reais e ainda pode obter um aplicativo independente que pode ser implantado, que, como expliquei,
contém o cliente expo como um invólucro, por assim dizer. Como você também pode testá-lo facilmente
em dispositivos reais, tecnicamente nem é necessário instalar o Android Studio ou
o Xcode para criar um aplicativo com expo. Eu o instalei e eu o instruí a instalá-lo neste curso
para que pudéssemos ativar simuladores e testá-lo lá, porque eu não queria testá-lo constantemente em um dispositivo real e
gravar a tela, mas você não não é necessário fazer isso, você pode testá-lo em um dispositivo real
com o aplicativo cliente expo instalado apenas nele, então é algo
que você pode fazer. Agora, essa é
a abordagem que usamos, mas é claro que esse é um aplicativo pesado para expo, é um
aplicativo totalmente no ecossistema da expo com todas as restrições ou desvantagens que descrevi.
Agora, uma alternativa a isso é que você ainda usa o expo, mas o chamado fluxo de trabalho simples,
ou cria um aplicativo React Native sem expo, com a CLI do React Native.
Agora, o fluxo de trabalho expo bare pode ser criado do zero ou ejetado do fluxo de trabalho gerenciado, e
isso é algo que também mostrarei neste módulo.
Agora, quando você cria um aplicativo com o fluxo de trabalho simples, obtém um aplicativo não expo, cria um aplicativo
nativo como o faria com
a React Native CLI, para obter a mesma
base, a diferença é que você ainda pode use pacotes especiais de exposição. A instalação deles é um pouco mais complexa do que
quando você está no fluxo de trabalho gerenciado, é necessário fazer mais trabalho manual de conexão, pelo
menos em alguns pacotes, mas muitos, não todos, mas todos os pacotes expo incluídos no fluxo de trabalho gerenciado estão disponíveis
como pacotes autônomos que você pode trazer para qualquer aplicativo React Native e a
equipe da expo está trabalhando para disponibilizar cada vez mais pacotes fora do fluxo de trabalho gerenciado.
Assim, você pode trazer isso e, com o fluxo de trabalho simples, é relativamente fácil adicionar esses pacotes, não tão fácil e rápido como no
fluxo de trabalho de gerenciamento, mas ainda assim, muito fácil. Ao criar um aplicativo sem expo, com a CLI
do React Native,
você ainda pode trazer esses pacotes, mas é necessária mais configuração manual. Agora, como eu disse, é relativamente fácil de configurar e
gerenciar no fluxo de trabalho simples, você precisa gerenciar
mais no fluxo de trabalho do React Native
CLI, para que você realmente construa tudo sem o suporte da expo. Com relação aos módulos nativos que você usa, você pode usar qualquer
módulo nativo que desejar, também os que não sejam da expo, você pode trazer esses pacotes especiais da expo
que você precisa conectar manualmente, mas pode trazer qualquer outro módulo nativo.
Agora, quando criamos e distribuímos o aplicativo, com o fluxo de trabalho gerenciado que
você verá no módulo de implantação que é super fácil de fazer, com o fluxo de trabalho simples, é um pouco "mais
difícil" entre aspas, exige mais trabalho com o Android Studio e Xcode e não é tão fácil quanto no fluxo de trabalho
gerenciado da expo, você também, por exemplo, e essa é uma restrição importante, não poderá criar aplicativos iOS
no Windows.
Isso é possível no fluxo de trabalho gerenciado porque a compilação não ocorrerá na sua máquina, mas
na nuvem, com o fluxo de trabalho simples e com a CLI do React Native, você é
responsável pela criação dos aplicativos e, portanto, precisa fazê-lo localmente na sua máquina e, portanto, devido às
restrições da Apple, você não poderá criar um aplicativo iOS no Windows ou Linux; portanto, é
uma coisa a ter em mente também.
Então você faz tudo por conta
própria, precisa das ferramentas instaladas e, embora não as utilize para escrever código, precisará mexer nelas um
pouco e usá-las para criar seu aplicativo e implantar no final. Essas são as
alternativas. Agora, para implantação, terei
um módulo separado, onde veremos como isso funciona com o fluxo de trabalho gerenciado e também sem o fluxo
de trabalho gerenciado. Portanto, não é
algo em que vou me concentrar neste módulo, mas no módulo
que desejo para mostrar como você cria um aplicativo com a React Native CLI, como também o cria com expo
no fluxo de trabalho simples e como é possível ejetar do fluxo de trabalho gerenciado para o fluxo de
trabalho simples.
Também veremos como você pode adicionar alguns recursos nativos do dispositivo nessas duas alternativas, porque essa é
a parte em que difere principalmente do fluxo de trabalho gerenciado.
A maneira como você escreve seus componentes e assim por diante, e quais componentes você usa no React Native, isso
não difere, porque não havia nada específico sobre a exposição nisso. Em outras palavras, se dermos uma olhada
no projeto em que trabalhamos no início do curso, este projeto
de módulo nativo, essencialmente o que você perderá quando não estiver usando o fluxo de trabalho gerenciado,
são todas as importações relacionadas à exposição, tudo o que você está importando da
expo, isso basicamente é algo que agora é mais difícil ou que agora você precisa fazer de maneira diferente.
Se você não estiver usando o expo como neste arquivo, esse arquivo não precisaria ser alterado, apenas os
arquivos em que você usa algo do expo precisam ser ajustados ou precisam ser implementados de maneira diferente quando
não estiver usando o fluxo de trabalho gerenciado ou preciso, você pode não ser mais capaz de usar determinados pacotes ou
ainda pode usá-los e provavelmente nem precisa tocar no seu código, mas para usá-los, você
precisa realizar mais trabalhos de configuração manual do que precisa fazer com expo e o fluxo de
trabalho gerenciado.