Principais diferenças entre React & React Native

react-react-native-diferencas
Apps Mobile

Principais diferenças entre React & React Native

Antes de construir um projeto utilizando o ecossistema React.js, os desenvolvedores, gerentes de projeto e proprietários de produto precisam conseguir diferenciar seus elementos. O primeiro e principal aspecto para esclarecer os conceitos é diferenciar React Native e React. Essas duas bibliotecas representam lados diferentes do ecossistema React e por consequência suas funcionalidades são diferentes. Portanto, confundir os dois tornará sua pesquisa e desenvolvimento mais lenta.

O que é o ReactJS

React.js é uma biblioteca de desenvolvimento web front-end criada pelo Facebook e tem o objetivo de simplificar o processo de construção de interfaces complexas e responsivas. O Facebook tinha o objetivo de construir interfaces escalonáveis rápidas, e o React.js foi a maneira de simplificar o desenvolvimento web utilizando JavaScript.

O React js permite que os desenvolvedores criem componentes de interface por meio do Document Object Model virtual (representação da árvore de elementos do html). O DOM virtual não precisa de uma resposta do navegador, é por isso que o código é renderizado mais rápido. Para essa tarefa o React utiliza o JSX que é uma combinação de JavaScript e HTML.

Outra característica do React.js é o uso da programação declarativa, que é o oposto da programação imperativa. Quando você está construindo o front-end de uma aplicação no React, você só precisa escrever o nome do elemento, e o React.js usará automaticamente a sua interface para renderizar o elemento/componente. Portanto, o código é mais curto e leve, você não tem que especificar formas de como e onde o browser deverá renderizar seu componente, como acontece na manipulação de dom manual direto pelo Browser.

O que é o React Native

O React Native é um biblioteca do React.js, adaptado para construir aplicativos móveis, onde permite que os desenvolvedores usem JavaScript, uma linguagem muito utilizada para o desenvolvimento web, também sendo usada para desenvolver aplicativos que possuem uma interface nativa para cada plataforma Android e iOS.

React Native e ReactJS são a mesma coisa? Ambos possuem princípios estruturais, algoritmos de manipulação do DOM semelhantes, mas não idênticos.

O objetivo da biblioteca é permitir a construção de interfaces de aplicativos móveis nativos. Inicialmente, o código é escrito em JavaScript (JSX). A principal tarefa do React Native é converter esse código da “web” em linguagens de uso geral. Para um aplicativo iOS (Objective-C), enquanto para Android é convertido para Java. A experiência do usuário é inteiramente nativa, o usuário não será capaz de dizer que um código JavaScript foi usado para desenvolver o aplicativo.

Comparando as funcionalidades

DOM

Tanto no React.js quanto no React Native o DOM atualiza apenas os componentes que foram alterados. O DOM compara a versão anterior do documento com uma nova, detecta diferenças e faz alterações especificas onde existiu a alteração. Essa estratégia é mais rápida do que alterar uma árvore do HTML por inteiro. React usa a combinação de JavaScript e HTML para criar e renderizar código front-end.

O React Native funciona com princípios semelhantes de funcionalidade do DOM no ReactJs. Mas, ele não usa HTML para renderização. Em vez disso, ele usa componentes nativos do Android e iOS. Estruturalmente, esses componentes são semelhantes ao HTML, você pode utilizar as tags <Text> para representação de textos, como se fossem o <p> do html, ou <View> para representar uma <div>. Essa mudança é importante para o desempenho do aplicativo: o uso de componentes nativos torna o sistema final mais responsivo e fluído, dando a sensação ao usuário de estar navegando em um aplicativo escrito em Objective-C, Swift, Java ou Kotlin.

Animações

No React.js, as animações são feitas com componentes externos ou propriedades do css3. Os desenvolvedores podem baixar módulos que disponibilizam formas fáceis de manipular elementos. Os mais comuns são React Animations, React Transition Group, ReactReveal.

No React Native, você não trabalha com animações CSS. O framework oferece suas próprias ferramentas personalizadas para isso (Animation API). Você pode baixar pacotes para configurar ações aos gestos do usuário, criar animações em camadas e habilitar a experiência do usuário para ser nativa e animada. As principais bibliotecas de animação são react-native-animatablereact-native-motion, react-native-reanimated, Lottie e a própria Animated API.

Ferramenta para desenvolvedores

O React.js é conhecido por possuir um rico ecossistema – o Facebook lança muitas ferramentas oficiais e a comunidade de usuários também contribui ativamente. Algumas ferramentas de desenvolvimento vêm junto com react logo após a instalação. Tecnicamente, você consegue desenvolver sua aplicação apenas usando o React Developer Tools.

O React Native também oferece suporte às ferramentas React JS. Se você tem experiência com react, se sentirá familiarizado com o processo de desenvolvimento do React Native, porque já viu muitas ferramentas antes. Você pode usar as ferramentas de desenvolvimento do Chrome e o Redux. O Inspector é diferente do React.js, ainda não é tão maduro. Mesmo assim, a maioria das ferramentas React.js pode ser perfeitamente integrada ao Native também. Como dica para o debug no react-native você pode utilizar o Reactotron ou Flipper

Navegação/Rotas

Ambos React.js e Native suportam bibliotecas de navegação. Para o React.js, a melhor solução é o react-router, uma biblioteca que é utilizada para fazer o link e navegação entre as páginas. Para o React Native, a melhor alternativa é a utilização do react-navigation, uma biblioteca poderosa que permite que os desenvolvedores desenhem os cenários mais complexos em aplicativos, como criação de abas, rotas aninhadas e Drawer navigaton.

Código específico da plataforma

Com o React.js o front-end  pode ser adaptado para desktops, dispositivos móveis e tablets. Você pode usar bibliotecas react-desktop se estiver desenvolvendo projetos para PCs, e também pode adaptar seu site a diferentes dimensões de tela, sistemas operacionais usando media-queries.

No React Native, ajustar a interface para o layout responder 100% ao protótipo nas duas plataformas é definitivamente o principal desafio. Se você pretende construir um aplicativo nativo, não um híbrido, o conselho padrão seria escrever um código diferente nas linguagens nativas de cada plataforma (Kotlin para Android, Swift para iOS). O React Native não segue esta abordagem demorada e oferece a mesma base de código para ambas as plataformas.

Mas é permitido ao desenvolvedor escrever conjuntos de códigos separados para cada plataforma e executá-los em diferentes momentos. Algumas partes do seu código podem ser comuns para iOS e Android, mas recursos específicos das API´s nativas de cada plataforma, por exemplo, podem ser escritos separadamente.

Publicação

Publicar uma aplicação com React Js, é talvez a coisa mais fácil do mundo. Lembra quando você começou a desenvolver e criava uma página HTML e só fazia o upload dela no seu servidor? Então, com o react é a mesma coisa, a diferença é que agora você vai subir um bundle que é todo seu código javascript e jsx compilado e minificado para o seu servidor, basta rodar um npm build ou yarn build no cenário mais básico que podemos imaginar que sua aplicação vai estar pronta para ir para web.

Com o react native a conversa é mais diferente, existem várias politicas de segurança e privacidade que a Play Store e Apple Store implementam para garantir a segurança dos usuários e também melhorar a qualidade dos apps nas lojas, o processo de build e deploy é mais complexo pois existem várias etapas a ser seguidas antes de ele ser disponibilizado de fato. Porém, existem soluções que auxiliam o desenvolvedor nesse processo quando o app já foi publicado pela primeira vez, como é o caso do CodePush e OTA do Expo.

Conclusão

Então, React e React Native são a mesma coisa? Acredito que agora você consiga entender as principais diferenças entre os dois e entender as respectivas vantagens e desvantagens. Vamos resumir a diferença entre ReactJS e React Native em um breve checklist.

  • ReactJS é uma biblioteca de desenvolvimento web front-end; Native é uma estrutura de desenvolvimento de aplicativo móvel nativo.
  • Uma biblioteca reúne conjuntos de componentes, mas não oferece uma estrutura clara, enquanto um framework fornece a espinha dorsal do aplicativo;
  • ReactJS renderiza o código do navegador em um DOM virtual; React Native usa ferramentas nativas para renderizar os componentes em (Java, Objective-C);
  • No ReactJS, os aplicativos da web são escritos com JSX – uma combinação de JS e HTML. O React Native não usa HMTL – funciona como um componente nativo.
  • React JS usa CSS para estilizar aplicativos, desenvolver animações, etc. React Native usa alguns componentes CSS (Flexbox, por exemplo), mas também oferece suas próprias APIs personalizadas.
  • As ferramentas de desenvolvimento, usadas pelo React Native e React JS, podem ser utilizadas em ambas as ferramentas. Os desenvolvedores podem trabalhar na web e em projetos móveis no mesmo ecossistema.

Se você está considerando construir um aplicativo móvel para seu projeto da web, considere escolher React Js e React Native como os dois componentes principais para sua stack de desenvolvimento.

Veja também: Importância de criar um site responsivo

Comments (2)

  1. […] crescimento exponencial dessa tecnologia, acabaram surgindo alguns frameworks baseados no próprio React para melhorar ainda mais a produtividade de um programador e também aumentar a quantidade de […]

    10 de março de 2022 at 09:01
    |Reply
  2. Carlos Candido

    Parabéns e obrigado.

    9 de novembro de 2022 at 13:35
    |Reply

Leave your thought here

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Select the fields to be shown. Others will be hidden. Drag and drop to rearrange the order.
  • Image
  • SKU
  • Rating
  • Price
  • Stock
  • Availability
  • Add to cart
  • Description
  • Content
  • Weight
  • Dimensions
  • Additional information
  • Attributes
  • Custom attributes
  • Custom fields
Click outside to hide the comparison bar
Compare