Do site da Expo
A Expo permite que os desenvolvedores da Web criem aplicativos realmente nativos que funcionem no iOS e no Android, escrevendo-os uma vez apenas em JavaScript.
Não é isso que o React Native faz? Qual é a diferença?
Do site da Expo
A Expo permite que os desenvolvedores da Web criem aplicativos realmente nativos que funcionem no iOS e no Android, escrevendo-os uma vez apenas em JavaScript.
Não é isso que o React Native faz? Qual é a diferença?
Eu trabalho na Expo!
Quando você escreve código, Expo
você escreve React Native
código. Expo
tem duas peças principais:
1) expo-cli
: uma ferramenta de desenvolvedor para criar projetos, visualizar logs, abrir no seu dispositivo, publicar etc.
2) O Expo
cliente: um aplicativo no seu telefone que permite abrir seus projetos enquanto você trabalha neles, sem precisar passar por XCode
ou Android Studio
, e também permite que outras pessoas os vejam! E se você publicá-lo expo-cli
, as pessoas poderão acessá-lo a qualquer momento através do Expo
cliente no Android ou no iOS se tiver feito login na mesma conta com a qual foi publicado. Por fim, também possibilitamos criar aplicativos independentes para que as pessoas não precisem usar o Expo
cliente para abri-lo, e você pode distribuir para a loja de aplicativos e loja de jogos, se quiser.
Portanto, Expo
é um conjunto de ferramentas criadas em cima / ao redor React Native
. Essas ferramentas dependem de uma das principais crenças em que mantemos Expo
: é possível criar a maioria dos aplicativos sem precisar escrever código nativo, desde que você tenha um conjunto abrangente de APIs expostas Javascript
.
Isso é importante porque React Native
você sempre pode usar o código nativo. Às vezes, isso é incrivelmente útil, mas tem um custo: você precisa enviar seus binários às pessoas, se quiser que eles as testem, alguém do outro lado do mundo não pode simplesmente tocar em um link para abri-lo enquanto estiver trabalhando nele e você não pode simplesmente publicá-lo com um clique para alguém acessá-lo da mesma forma que faria em um navegador.
Com Expo
, sugerimos que tente evitar o código nativo, se puder. Como mencionei acima, acreditamos que, com um conjunto abrangente de APIs disponíveis Javascript
, isso não deve ser necessário para a maioria dos aplicativos. Portanto, nosso objetivo é fornecer esse conjunto abrangente de APIs e criar todas as ferramentas impressionantes que podem existir em um mundo em que o tempo de execução nativo é compartilhado.
No entanto, se você achar que é absolutamente suspenso para nativo, poderá ExpoKit
continuar usando as APIs nativas que Expo
oferecem o mesmo nível de controle que em qualquer projeto nativo. " ExpoKit
é uma biblioteca Objective-C e Java que permite que você use a Expo
plataforma e seu Expo
projeto existente como parte de um projeto nativo padrão maior." Leia mais aqui.
Tentei fazer um resumo da documentação e respostas dos funcionários da Expo:
React init nativo:
Vantagens :
Desvantagens :
Expo
Vantagens :
Desvantagens :
Espero poder resumir os pontos mais importantes. Por favor, sinta-se livre para adicionar pontos adicionais.
Fontes: https://code.tutsplus.com/tutorials/detaching-expo-apps-to-expokit-concepts--cms-30661 https://github.com/react-community/create-react-native-app/ Issues / 516 # issuecomment-373629114 https://docs.expo.io/versions/latest/guides/detach.html (documentação oficial em geral)
fonte
A resposta de Brent Vatne é boa, mas eu gostaria de acrescentar alguns detalhes.
Expo expande a superfície API do React Native
O React Native não fornece todas as APIs JS necessárias, mas apenas os recursos mais primitivos. Reagir Os desenvolvedores nativos devem usar o Android Studio / XCode para vincular bibliotecas nativas adicionais. A Expo visa aprimorar o RN e fornecer toda a API JS necessária para as necessidades mais comuns. É basicamente um conjunto de bibliotecas nativas de qualidade bem definidas já empacotadas para você em uma única biblioteca: ExpoKit. Às vezes, essas bibliotecas já existem no mundo do RN e estão integradas ao ExpoKit.
Também é importante notar que a equipe da Expo não pode incluir todas as libs existentes no ExpoKit (o que pode causar alguma frustração) porque o tamanho do aplicativo Hello World aumentaria, pois enviaria muitas APIs que não seriam usadas na maioria dos aplicativos.
Expo fornece atualizações de JS no ar
Como outros sistemas (CodePush ...), a Expo fornece um sistema para atualizar seu aplicativo pelo ar. Isso significa que você carrega seu pacote JS em uma CDN e os aplicativos móveis baixam e usam automaticamente o novo JS na próxima inicialização (sem solicitar uma publicação / revisão das lojas).
A Expo fornece uma ferramenta CLI para fazer upload / gerenciar os pacotes configuráveis JS em suas CDN. Para desenvolvimento, você também pode optar por se tornar o CDN e hospedar o pacote JS no localhost. E o XDE é apenas um invólucro visual na CLI.
Expo fornece um cliente genérico
O cliente Expo é um cliente genérico que permite carregar qualquer aplicativo compatível com o Expo. Todos os aplicativos da Expo compartilham exatamente o mesmo tempo de execução nativo (RN + ExpoKit), a única diferença é o JS que fornecemos a eles. Os aplicativos da Expo que você publica nas lojas de aplicativos têm seu URL do pacote JS embutido. O cliente Expo é construído de uma maneira específica para que você possa escolher de qual URL carregar o JS, digitalizando um QRCode ou fornecendo uma URL.
Observe que esse cliente também pode carregar pacotes JS do localhost e facilitar sua experiência de desenvolvimento: não há necessidade de XCode ou Android Studio, e fica muito mais rápido fazer o seu primeiro Hello World funcionar no telefone (de horas a minutos). Na verdade, você pode desenvolver em um iPhone sem Mac e a instalação leva 2 minutos.
Atualmente, como o Expo SDK pode ser atualizado, o cliente Expo inclui uma camada de compatibilidade para poder executar as últimas 5 versões do SDK.
Expo fornece um serviço de construção
Como todos os aplicativos da Expo compartilham o mesmo código nativo, a Expo pode criar esses aplicativos facilmente para você. Eles criaram um serviço de criação em nuvem.
A principal coisa que os dois aplicativos diferenciados criados pela Expo são apenas o URL codificado no qual o aplicativo deve baixar o pacote JS para execução.
A Expo faz outras coisas para você, como fornecer uma maneira declarativa de configurar ícones, orientações, permissões, chaves da API, ajudar a configurar notificações push, provisionar perfis ... muitas configurações precisam ser codificadas no momento da criação do aplicativo e podem não pode ser alterado no ar.
Expo é Reagir Native o que Phonegap é para Cordova
O React Native é semelhante ao Cordova. Não é a mesma tecnologia de visualização (nativa x visualização na web), mas ambas permitem controlar recursos nativos do javascript e oferecem um sistema de plugins para que os desenvolvedores possam adicionar facilmente novas ligações JS / nativas.
O PhoneGap é semelhante ao Expo. Ambos tentam enriquecer a API bruta da plataforma subjacente na qual são criados com um conjunto predefinido de plugins nativos adicionais. O PhoneGap também oferece um serviço de criação e possui um cliente genérico que funciona desde que você use os plug-ins aprovados.
Conclusão
Como você pode ver, a Expo é um conjunto de ferramentas. No final, ele permite desenvolver, compartilhar e publicar facilmente nas lojas seus projetos móveis. É bastante semelhante à experiência do PhoneGap (mas muito melhor e menos confusa).
Definitivamente recomendarei a Expo para qualquer novo projeto greenfield do React Native, exceto estes 2 casos:
fonte
É explicado na documentação oficial da Expo
Qual é a diferença entre Expo e React Native?
fonte
Expo XDE
console ou naexp start
saída do comando do console.CLI EXPO
profissionais: -
Contras: -
React Native Cli
Prós: -
Note":- React Native cli is right approach to started work on react native framework.
Contras: -
Você pode preferir qualquer abordagem de acordo com seus requisitos.
fonte
Anote aqui que a Expo está usando uma versão mais antiga do react 16.5, o que o proibiria de usar o novo recurso de ganchos. Se você optar por ir com a Expo, esteja atento a seus controles de versão. As versões mais antigas do say react-navigation precisarão ser usadas com a versão 16.5 se você estiver recebendo erros estranhos.
fonte
expo update
faz um bom trabalho ao obter as versões compatíveis para a maioria dos pacotes gerenciados pela Expo. No momento, não acho que ele atualize o React Navigation, mas essa biblioteca é realmente patrocinada pela Expo. Pessoalmente, raramente encontro problemas de compatibilidade entre o React Navigation e o Expo (acho que encontrei alguns problemas ao usar versões beta). No entanto, você pode encontrar mais problemas de compatibilidade com pacotes não gerenciados pela Expo.As respostas sobre as vantagens e desvantagens de expo e react-native-cli estão completas. Quero mencionar outro ponto como minha experiência pessoal. A Expo contém muitos módulos por padrão no projeto e facilita o trabalho com ele. Mas há um grande problema na fase de produção, porque as versões construídas
android
eios
as têm um tamanho tão grande. Por exemplo, se você tiver uma única página com'Hello World'
oapk
tamanho do arquivo, aproximadamente19 MB
. Ter um mesmo projeto no react-native-cli resultará em um aplicativo com o tamanho de6 MB
.Então, pessoalmente, eu não recomendo usar expo se você deseja desenvolver um aplicativo comercial.
fonte
Eu experimentei mais de um ano que trabalha com expo Se o tamanho do aplicativo não for importante para você usar a Expo, porque é fácil implementar o Map, empurre mais facilmente do que o React-native, mas no final do projeto, se você deseja publicar aplicativo no Google Play ou em outra loja, você tem o desafio de remover algumas permissões no APK React-native, você pode alterar tudo, mas para importar algumas bibliotecas, como notificação por push ou o mapa, também precisa de alguns desafios, porque você precisa adicionar essas bibliotecas manualmente para projetos android e iOS
fonte
expo é uma cadeia de ferramentas criada em torno do React Native para ajudar você a iniciar rapidamente um aplicativo. Ele fornece um conjunto de ferramentas que simplificam o desenvolvimento e o teste do aplicativo React Native, da interface e dos serviços que normalmente estão disponíveis nos componentes React Native nativos de terceiros. Com a Expo, você pode encontrar todos eles no Expo SDK.
fonte