Quais são as principais diferenças entre ReactNative e NativeScript?


resposta 1:
Isenção de responsabilidade: Esta resposta não tem o objetivo de provar que uma é melhor que a outra. Não quero criticar os incríveis trabalhos de ambas as equipes, mas listar as diferenças entre o NativeScript e o React Native.

Essas duas estruturas fazem parte das estruturas móveis de plataforma cruzada de nova geração que NÃO estão usando o navegador para empacotá-lo no aplicativo nativo. Eles estão usando os componentes de interface do usuário nativos do SO nativo. Isso tem um efeito muito positivo na UX do aplicativo. Ele também permite uma implementação mais rápida do aplicativo, porque o polimento final necessário para o aplicativo é de magnitudes menores que o trabalho necessário para o mesmo com qualquer aplicativo PhoneGap baseado em navegador.

Agora a sua pergunta. Existem muitas diferenças - técnicas e não técnicas.

No lado não técnico

O NativeScript é entregue pela Telerik (uma empresa Progress) - uma empresa de desenvolvimento muito conhecida e a estrutura NativeScript faz parte do seu negócio principal. O ReactNative é construído a partir do Facebook, que como todos sabemos não é uma empresa de ferramentas para desenvolvedores. Por que isso é importante? Quando você confia na Telerik, tem a opção de obter suporte (desenvolvedor ou produção), que é um requisito para a maioria das lojas de software sérias. Além disso, se você trabalha nas empresas, espera uma certa pilha de ferramentas, serviços e soluções. Criptografia de código e segurança, por exemplo. Você obtém tudo isso com o Telerik / NativeScript, mas isso não é uma prioridade para o Facebook / React.

Vale a pena notar também que o NativeScript já é a versão 2.0, enquanto o ReactNative ainda está nos seus primeiros dias de maturidade. Isso também deve ser calculado ao avaliar o risco ao escolher a estrutura adequada. Com o NativeScript, você tem toda a pilha disponível para iOS e Android. Para o RN, como é hoje, ainda existem muitas lacunas na história entre plataformas. Essas lacunas estão sendo preenchidas todos os dias e, de acordo com a equipe do FB, essa é uma das principais prioridades da equipe do RN no próximo ano. Também existem muitas ferramentas, serviços e componentes de produtividade pagos já disponíveis para o NativeScript. Isso desempenha um papel importante ao decidir qual estrutura usar ao criar qualquer software comercial.

A última coisa não técnica é o tamanho da comunidade. Ambas as estruturas são de código aberto e gratuitas. ReactNative é uma extensão do React.js, portanto você pode supor que toda a comunidade react.js apostará nele. Por outro lado, o NativeScript é suportado pelo Google e tem como alvo a comunidade AngularJS. Ambas as comunidades são muito grandes (milhões de desenvolvedores) e essas duas estruturas estão em boas mãos. Isso também desempenha um papel importante na avaliação de riscos.

Agora no lado técnico

Toneladas de diferenças. A abordagem adotada pelo ReactNative e pelo NativeScript é muito diferente, o que afeta a experiência do desenvolvedor e também a capacidade de usar e reutilizar o resultado das bibliotecas nativas. Ambos oferecem um desempenho muito bom em iOs e Android. 60fps na maioria das vezes. Ainda existem cenários que precisam ser aprimorados em ambas as estruturas, mas ainda hoje eles se comportam como aplicativos verdadeiramente nativos.

Arquitetura ReactNative

Falando em arquitetura - o ReactNative, como mencionei acima, é uma extensão do React.JS, para que eles sigam os mesmos princípios de atualização da interface do usuário do ReactJS. Por exemplo. usando um DOM virtual. Em resumo: eles estão calculando as alterações que precisam ocorrer na interface do usuário em um _ thread de fundo_ e estão aplicando essas alterações em lotes. O fato de estarem fazendo isso em um encadeamento em segundo plano tem seus prós e contras. Do lado positivo, é claro que o encadeamento da interface do usuário não é tocado (o que leva a uma interface do usuário muito responsiva), mas, do lado negativo, isso limita a capacidade de comunicação _fast_ com o SO nativo subjacente. Isso significa que, se você tiver um componente que faz muitas chamadas para o sistema operacional nativo, o aplicativo será muito lento, muito lento. O bom é que isso não é necessário para a maioria dos casos.

O ruim é que, se você precisar usar componentes nativos personalizados ou APIs nativas, precisará conhecer o ObjC para iOS e Java para Android para acessar esses componentes e APIs. Isso pode ser um diferencial para muitos desenvolvedores de JS. você não precisa conhecer ObjC / Java para conseguir isso no NativeScript, leia abaixo.

 Há um artigo muito bom no site do ReactNative explicando isso em detalhes e eles mencionam que planejam alterar essa arquitetura para que mais coisas sejam feitas no encadeamento da interface do usuário por esse motivo. Aqui está uma citação do artigo:

Acho que não precisamos ou queremos mudar drasticamente nosso modelo de segmentação, por exemplo, movendo tudo para o thread principal, mas precisamos fazer algumas mudanças fundamentais.

Eu recomendo ler o artigo aqui.

Arquitetura NativeScript

Os desenvolvedores da equipe principal do NativeScript estão adotando uma abordagem mais clássica aqui. Eles estão usando o thread da interface do usuário para executar a interface do usuário, que é o mesmo modelo usado na maioria das estruturas populares - Android, Windows etc. Isso permite uma maneira muito mais simples de desenvolver aplicativos - você como desenvolvedor sempre tem acesso à interface do usuário árvore da sua aplicação. É importante notar que, se você precisar executar algo em um encadeamento em segundo plano, isso também é possível. Alguns dos componentes mais básicos, como http, imagem e banco de dados sql lite, na verdade, estão executando muitas de suas operações em um encadeamento em segundo plano para reduzir a carga no encadeamento da interface do usuário. Essa abordagem tem um grande benefício em permitir que você acesse _any_ API nativa diretamente do JavaScript.

Leia este artigo que explica detalhadamente a arquitetura de encadeamento NativeScript - http: //developer.telerik.com/fea ....

Basicamente, você acessa as APIs nativas inteiras intocadas, com muitos benefícios, especialmente quando você precisa oferecer suporte ao aplicativo a longo prazo. Não há wrappers para as APIs nativas e isso torna toda a experiência mais simples e menos propensa a erros. Você pode literalmente escrever coisas como - com.android.button.init (). Isso também tem o benefício de reutilizar a pilha inteira de bibliotecas nativas de terceiros diretamente, sem a necessidade de modificações. Isso facilita o consumo e a criação de extensões. Atualmente, existem mais de 220 extensões disponíveis na comunidade. O outro benefício dessa abordagem é que as animações criadas no NativeScript usando CSS e JavaScript serão executadas com muito mais tranqüilidade porque são executadas no encadeamento da interface do usuário.

Como mencionei acima, o NativeScript é suportado pelo Google; portanto, se você for um desenvolvedor Angular, se sentirá em casa se usar o NativeScript - toda a API do Angular 2 é suportada e você pode reutilizar seu código entre um NativeScript e um aplicativo da Web.

A arquitetura acima permite que o NativeScript ofereça suporte de 0 dias para novas versões do sistema operacional. Atualmente, o NativeScript tem suporte para a versão Android N, ainda em fase alfa.

JS Engines usados ​​para executar o código do aplicativo

Vale ressaltar que ambas as estruturas estão aproveitando os mecanismos JavaScript existentes para executar o código JavaScript em tempo de execução. ReactNative está usando JavaScriptCore no iOS e Android. O NativeScript está usando a V8 no Android e o JavaScriptCore no iOS. Recentemente, a Microsoft adicionou suporte ao Windows Universal no ReactNative e está usando seu próprio mecanismo Chakra JS. Não tenho certeza de como isso será mesclado com o restante do código ReactNative, pois (suspeito) implicará muitas alterações nas ferramentas - depurador diferente, criador de perfil, para citar alguns.

Uso de padrões

O software muda muito, por isso é importante confiar nos padrões para reduzir o risco ao escolher a estrutura certa para o seu cenário.

Ambas as estruturas usam código ECMAScript compatível com os padrões, que permite a reutilização de código entre aplicativos da Web e móveis, o que gera um ROI muito bom ao usá-los.

Prós para o NativeScript é que ele também usa uma declaração CSS compatível com o padrão. Isso permite uma história de reutilização de código / habilidades muito maior entre o aplicativo móvel e a web. Ele também suporta a descrição de animações usando quadros-chave CSS. Tudo isso se resume ao código nativo, para que as declarações CSS sejam traduzidas para a experiência nativa. Veja como usar CSS para escrever animações nativas.

Declaração da interface do usuário

Nas duas estruturas, você pode ter sintaxe declarativa para descrever a interface do usuário do aplicativo. ReactNative como usar a notação encontrada em React para incluir a declaração da interface do usuário em um único arquivo. O NativeScript novamente está usando uma abordagem mais clássica, permitindo a criação da interface do usuário com código ou através de um arquivo separado para a implementação da interface do usuário, permitindo o uso dos padrões clássicos do MVC / MVVM. Eu não diria qual é o melhor - é uma questão de gosto pessoal. Para mim, a separação entre a interface do usuário e o código é melhor com o MVVM, mas é isso que eu costumo escrever, por isso sou tendenciosa.

Se você conhece CSS no NativeScript, será muito mais fácil estilizar os aplicativos usando folhas de estilo externas ou estilo embutido. O ReactNative está usando sua própria notação para estilizar, com base nas declarações JSON. Novamente semelhante ao CSS, mas diferente.

Suporte de linguas

ReactNative e NativeScript estão usando JavaScript moderno. Ambos suportam Babel para usar o JS mais recente e melhor.

Como o NativeScript é mais maduro, também há mais opções aqui. O NativeScript possui uma forte integração (ferramentas, IDE, etc.) ao TypeScript. Isso proporciona uma integração adicional com o Angular 2 e aumenta a produtividade e facilita muito o suporte a longo prazo desses aplicativos.

Experiência do desenvolvedor, Depuração

Ambas as estruturas oferecem a capacidade de desenvolver aplicativos de maneira rápida - ambas oferecem funcionalidade de recarga a quente - é a capacidade de ver as alterações de código imediatamente no dispositivo sem a necessidade de recarregar o aplicativo (na maioria dos casos).

Em termos de experiência do desenvolvedor e IDEs, já que toda a pilha de aplicativos é JavaScript, você pode usar qualquer IDE disponível. O Facebook está trabalhando em seu próprio IDE, que ainda não foi lançado no momento da redação deste texto, o NativeScript está promovendo o Visual Studio Code como o editor recomendado. A Microsoft possui uma implementação para o NativeScript e o ReactNative para o depurador do VS Code.

Teste

Como é todo o JavaScript compatível com os padrões, você pode usar qualquer uma das ferramentas disponíveis para escrever testes de unidade. Ambas as estruturas suportam os mais populares testes de molduras como Karma, Jasmine, Mocha.

Para testes funcionais, como a interface do usuário é totalmente nativa, você pode usar qualquer ferramenta de teste que funcione com as estruturas nativas como Appium.

Veja como escrever testes no NativeScript. Em ReactNative.

atuação

Como mencionei várias vezes acima, no lado do desempenho, você ficará satisfeito com as duas estruturas. É uma grande melhoria em relação aos aplicativos PhoneGap conhecidos. Os aplicativos finais não são diferentes dos aplicativos nativos reais. O uso dos componentes reais da interface do usuário nativa é um enorme benefício para ambas as estruturas.

Ambas as estruturas têm um desempenho excepcional no iOS - tanto em termos de tempo de carregamento (menos de um segundo para ambos) quanto em termos de FPS (60fps na maioria dos casos) em tempo de execução.

No Android, o desempenho ainda é bom, mas devido à arquitetura subjacente do SO nativo, o desempenho geral não é tão bom quanto no iOS. O tempo de carregamento e o comportamento do tempo de execução não são tão refinados quanto no iOS. Mas isso também é válido para os aplicativos nativos puros; portanto, não seja muito exigente com o NativeScript e o ReactNative. O ReactNative possui um tempo de carregamento um pouco melhor (mais rápido) no Android em comparação com o NativeScript (1.4s vs 2.2s). A equipe do NativeScript aborda isso com a introdução de instantâneos de heap de memória, mas esse recurso ainda é experimental.

Aplicativos reais

Para alguns aplicativos reais, você pode ver os seguintes links para o aplicativo de pia de cozinha NativeScript:

No Android -> https: //play.google.com/store/ap ...

No iOS -> https: //itunes.apple.com/bg/app / ...

Ou você pode verificar os aplicativos na galeria de exibição do NativeScript.

Para ReactNative, não conheço nenhum aplicativo de pia de cozinha, mas você pode verificar qualquer um dos aplicativos de exibição. Certifique-se de verificar os aplicativos feitos pelo Facebook para a melhor implementação.

No fechamento

Para mim, pessoalmente, a principal tomada de decisão é baseada em suas habilidades existentes - se você possui habilidades em Angular, basta usar o NativeScript; se você é um desenvolvedor de React, encontrará o ReactNative mais familiar e fácil de usar. Se você estiver implementando software comercial, considere o suporte e os serviços disponíveis no NativeScript e no conjunto de habilidades Angular. Se você precisar de uma interface de usuário nativa mais personalizada, o NativeScript o atenderá melhor porque você não precisa conhecer ObjC ou Java para usá-los. No final do dia, ambas as estruturas são modernas e cumprem sua promessa, o que levará a aplicativos de alto nível.

Feliz codificação, e espero que o acima ajude :). Por favor, não hesite em perguntar-me para mais detalhes. Certamente há muitas coisas que não são abordadas aqui, mas posso ir além e explicar tudo acima em detalhes mais profundos. Você pode me contatar no twitter - @ValioStoychev.

Divulgação: Trabalho como PM para o NativeScript, mas tentei ser completamente imparcial. Espero que você aprecie o conteúdo acima. Caso você ache que há fatos incorretos, entre em contato e aplicarei as edições!


resposta 2:

Diferença entre React Native e NativeScript

O React Native e o NativeScript são estruturas incríveis. Ambas as estruturas fazem parte das novas estruturas móveis de plataforma cruzada que NÃO estão usando o navegador para empacotá-lo no aplicativo nativo. Os trabalhos realizados por ambas as equipes são excelentes, mas para listar aqui estão algumas diferenças entre o NativeScript e o React Native.

Leia também as perguntas básicas da entrevista nativa do React

NativeScript

Reagir nativo

Comunidade prestativa e prestativa.

Comunidade prestativa e prestativa.

Nenhum uso de produção "real"

Uso de produção comprovado.

Mantido por uma pequena empresa.

Mantido por uma enorme empresa.

Menos popular

Popular.

Mais antigo que reagir nativo

Mais recente que o NativeScript


resposta 3:

Diferença entre React Native e NativeScript

O React Native e o NativeScript são estruturas incríveis. Ambas as estruturas fazem parte das novas estruturas móveis de plataforma cruzada que NÃO estão usando o navegador para empacotá-lo no aplicativo nativo. Os trabalhos realizados por ambas as equipes são excelentes, mas para listar aqui estão algumas diferenças entre o NativeScript e o React Native.

Leia também as perguntas básicas da entrevista nativa do React

NativeScript

Reagir nativo

Comunidade prestativa e prestativa.

Comunidade prestativa e prestativa.

Nenhum uso de produção "real"

Uso de produção comprovado.

Mantido por uma pequena empresa.

Mantido por uma enorme empresa.

Menos popular

Popular.

Mais antigo que reagir nativo

Mais recente que o NativeScript


resposta 4:

Diferença entre React Native e NativeScript

O React Native e o NativeScript são estruturas incríveis. Ambas as estruturas fazem parte das novas estruturas móveis de plataforma cruzada que NÃO estão usando o navegador para empacotá-lo no aplicativo nativo. Os trabalhos realizados por ambas as equipes são excelentes, mas para listar aqui estão algumas diferenças entre o NativeScript e o React Native.

Leia também as perguntas básicas da entrevista nativa do React

NativeScript

Reagir nativo

Comunidade prestativa e prestativa.

Comunidade prestativa e prestativa.

Nenhum uso de produção "real"

Uso de produção comprovado.

Mantido por uma pequena empresa.

Mantido por uma enorme empresa.

Menos popular

Popular.

Mais antigo que reagir nativo

Mais recente que o NativeScript


resposta 5:

Diferença entre React Native e NativeScript

O React Native e o NativeScript são estruturas incríveis. Ambas as estruturas fazem parte das novas estruturas móveis de plataforma cruzada que NÃO estão usando o navegador para empacotá-lo no aplicativo nativo. Os trabalhos realizados por ambas as equipes são excelentes, mas para listar aqui estão algumas diferenças entre o NativeScript e o React Native.

Leia também as perguntas básicas da entrevista nativa do React

NativeScript

Reagir nativo

Comunidade prestativa e prestativa.

Comunidade prestativa e prestativa.

Nenhum uso de produção "real"

Uso de produção comprovado.

Mantido por uma pequena empresa.

Mantido por uma enorme empresa.

Menos popular

Popular.

Mais antigo que reagir nativo

Mais recente que o NativeScript


resposta 6:

Diferença entre React Native e NativeScript

O React Native e o NativeScript são estruturas incríveis. Ambas as estruturas fazem parte das novas estruturas móveis de plataforma cruzada que NÃO estão usando o navegador para empacotá-lo no aplicativo nativo. Os trabalhos realizados por ambas as equipes são excelentes, mas para listar aqui estão algumas diferenças entre o NativeScript e o React Native.

Leia também as perguntas básicas da entrevista nativa do React

NativeScript

Reagir nativo

Comunidade prestativa e prestativa.

Comunidade prestativa e prestativa.

Nenhum uso de produção "real"

Uso de produção comprovado.

Mantido por uma pequena empresa.

Mantido por uma enorme empresa.

Menos popular

Popular.

Mais antigo que reagir nativo

Mais recente que o NativeScript


resposta 7:

Diferença entre React Native e NativeScript

O React Native e o NativeScript são estruturas incríveis. Ambas as estruturas fazem parte das novas estruturas móveis de plataforma cruzada que NÃO estão usando o navegador para empacotá-lo no aplicativo nativo. Os trabalhos realizados por ambas as equipes são excelentes, mas para listar aqui estão algumas diferenças entre o NativeScript e o React Native.

Leia também as perguntas básicas da entrevista nativa do React

NativeScript

Reagir nativo

Comunidade prestativa e prestativa.

Comunidade prestativa e prestativa.

Nenhum uso de produção "real"

Uso de produção comprovado.

Mantido por uma pequena empresa.

Mantido por uma enorme empresa.

Menos popular

Popular.

Mais antigo que reagir nativo

Mais recente que o NativeScript


resposta 8:

Diferença entre React Native e NativeScript

O React Native e o NativeScript são estruturas incríveis. Ambas as estruturas fazem parte das novas estruturas móveis de plataforma cruzada que NÃO estão usando o navegador para empacotá-lo no aplicativo nativo. Os trabalhos realizados por ambas as equipes são excelentes, mas para listar aqui estão algumas diferenças entre o NativeScript e o React Native.

Leia também as perguntas básicas da entrevista nativa do React

NativeScript

Reagir nativo

Comunidade prestativa e prestativa.

Comunidade prestativa e prestativa.

Nenhum uso de produção "real"

Uso de produção comprovado.

Mantido por uma pequena empresa.

Mantido por uma enorme empresa.

Menos popular

Popular.

Mais antigo que reagir nativo

Mais recente que o NativeScript