ReactJS vs. React Native

Uma breve comparação

Tiago Álvaro
MCTW_TDW
7 min readFeb 1, 2023

--

Fonte: Kody Technolab

Resumo

O que é ReactJS e React Native? Quais são as diferenças e semelhanças entre ambos? Qual deves utilizar? Certamente já ouviste falar destas duas tecnologias, mas ainda estás confuso acerca do seu funcionamento.

Neste artigo vamos explorar todas as respostas a estas perguntas e muito mais, apresentando alguns exemplos que vão esclarecer as tuas dúvidas acerca das vantagens e desvantagens de utilizar uma em favor da outra.

Introdução

ReactJS e React Native são duas bibliotecas JavaScript desenvolvidas pelo Facebook. Enquanto que o ReactJS é utilizado para desenvolver aplicações web, o React Native é utilizado para desenvolver aplicações móveis nativas para Android e IOS.

Ambas as bibliotecas são amplamente utilizadas em diversos produtos, incluindo Facebook, Instagram, Discord, Dropbox, entre outros. São uma escolha popular para construir interfaces de utilizador devido ao seu elevado desempenho, flexibilidade e forte comunidade de desenvolvedores.

ReactJS

ReactJS é uma biblioteca JavaScript utilizada para construir interfaces de utilizador. É frequentemente utilizado para criar aplicações web de página única.

Uma das principais funcionalidades do ReactJS é a utilização do DOM virtual (Document Object Model). O DOM virtual é uma representação ideal de uma interface de utilizador que é mantida na memória e sincronizada com o DOM real. Quando o estado de um componente muda, o ReactJS atualiza o DOM utilizando um algoritmo muito rápido. Isto ajuda a melhorar o desempenho das aplicações ao reduzir a quantidade de manipulação de DOM necessária.

O ReactJS também oferece suporte ao fluxo de dados unidirecional, no qual os dados de uma aplicação circulam apenas numa única direção, do componente pai para o componente filho. Isto ajuda a tornar a estrutura da aplicação mais previsível e fácil de depurar.

Vantagens

  • Permite a construção de componentes reutilizáveis;
  • Faz uso do DOM virtual, o que melhora o desempenho da aplicação;
  • Possui uma forte comunidade de desenvolvedores e extensa documentação.

Desvantagens

  • Pode ser difícil de utilizar por iniciantes, pois requer uma extensa compreensão de JavaScript e alguns conceitos avançados;
  • Não é adequado para a construção de aplicações móveis nativas, dado que não fornece acesso a recursos e APIs nativas;
  • O processo de conversão de uma aplicação ReactJS para React Native pode ser demasiado complexo ao ponto de ser mais fácil desenvolver a aplicação de raiz em React Native.

React Native

React Native é uma biblioteca utilizada para desenvolver aplicações móveis nativas usando JavaScript e ReactJS. Permite que os desenvolvedores criem aplicações muito semelhantes às aplicações criadas usando as linguagens de programação nativas de cada sistema operativo (Java ou Kotlin, no caso de Android, e Objective-C ou Swift, no caso de iOS).

O React Native recorre à mesma sintaxe do ReactJS, permitindo construir uma interface avançada a partir de componentes do tipo declarativos. Em vez de utilizar componentes web, o React Native utiliza os componentes nativos de cada sistema operativo. Isto torna possível construir aplicações móveis que parecem nativas utilizando o mesmo formato de uma aplicação web.

Para além disto, o React Native permite criar aplicações cross-platform, isto é, que podem ser executadas tanto em Android como em iOS partindo de uma única base de código. Isto ajuda a economizar tempo e recursos em comparação com o desenvolvimento de aplicações separadas. No entanto, importa referir que os desenvolvedores continuam a ter de escrever o código específico de cada plataforma para aproveitar ao máximo os recursos e as APIs nativas.

Vantagens

  • Permite a criação de aplicações móveis nativas usando JavaScript e ReactJS;
  • Proporciona uma sensação nativa e de elevado desempenho;
  • Permite a reutilização de código entre plataformas.

Desvantagens

  • As opções de personalização são limitadas em comparação com linguagens de programação nativas;
  • Pode causar problemas de desempenho em aplicações muito complexas;
  • Podem ocorrer dificuldades na integração de componentes nativos;
  • Possui um suporte limitado para determinados recursos e API’s.

Principais diferenças entre ReactJS e React Native

Embora partilhem alguns conceitos semelhantes, estas bibliotecas são projetadas para diferentes propósitos e utilizadas em diferentes contextos, apresentando algumas diferenças importantes:

  • Utilização: o ReactJS é usado principalmente para desenvolver aplicações web, enquanto que o React Native é usado para criar aplicações móveis nativas para Android e iOS. Isto significa que as aplicações desenvolvidas em React Native têm uma aparência mais nativa, pois são construídas usando componentes nativos em vez de componentes web;
  • Renderização: o ReactJS usa o DOM virtual para renderizar os componentes, enquanto o React Native usa componentes nativos para renderizar a interface do utilizador. Isto significa que as aplicações React Native têm um melhor desempenho, pois podem aceder diretamente ao mecanismo de renderização nativo da plataforma em vez de passar por um intermediário;
  • Sintaxe: tanto o ReactJS como o React Native partilham a mesma sintaxe. No entanto, o React Native faz uso de alguns componentes adicionais;
  • Estilos: no ReactJS é possível utilizar estilos CSS para estilizar os componentes da aplicação. Já no React Native é necessário utilizar um conjunto de propriedades específicas;
  • Plataforma: o ReactJS foi projetado para a web, enquanto que o React Native oferece suporte à criação de aplicações móveis;
  • Documentação: o ReactJS tem um ecossistema e uma comunidade maiores, dado que é amplamente mais utilizado para o desenvolvimento web, o que facilita a procura de recursos e suporte. Por outro lado, o React Native tem uma documentação menos extensa e existem menos recursos disponíveis.

Principais semelhanças entre ReactJS e React Native

Devido ao facto de tanto o ReactJS como o React Native partirem da mesma linguagem de programação, ambos partilham várias semelhanças:

  • Utilizam uma arquitetura baseada em componentes;
  • Recorrem a uma sintaxe declarativa, isto é, descrevem o que pretendem renderizar em vez de como renderizá-lo. Isto facilita a criação e a manutenção de interfaces complexas;
  • Possuem um fluxo de dados unidirecional, isto é, os dados circulam numa única direção através da aplicação, o que facilita a depuração;
  • São compatíveis com as principais ferramentas de desenvolvedor, tais como Chrome DevTools e React Developer Tools.

Sintaxe

Em termos de sintaxe, tanto o ReactJS como o React Native utilizam JSX, que é uma extensão de sintaxe para JavaScript, e que permite escrever código semelhante a HTML nos próprios componentes JavaScript. No entanto, enquanto que o ReactJS permite a utilização de qualquer elemento HTML válido como um componente, o React Native possui um conjunto limitado de componentes.

Assim, os desenvolvedores que fazem uso do React Native podem ter a necessidade de escrever código específico para cada plataforma de forma a implementar a mesma funcionalidade que implementariam com ReactJS.

Para além disto, é possível converter uma aplicação desenvolvida em ReactJS para React Native a partir da mesma base de código. No entanto, este procedimento não é recomendado devido à sua elevada complexidade.

Exemplo prático

Para entender melhor as diferenças e semelhanças entre estas duas bibliotecas, iremos analisar dois exemplos desenvolvidos com ReactJS e React Native.

Vamos começar pelo exemplo desenvolvido usando ReactJS:

Neste primeiro exemplo, no qual se pretende gerar o texto “Hello World!” e apresentá-lo numa interface, podemos observar que a função App, responsável por gerar o texto, possui no seu interior um elemento HTML <div> com o texto “Hello World!”.

Isto significa que o código HTML é utilizado diretamente dentro de um componente construído com código JavaScript.

Vejamos agora o seguinte exemplo construído em React Native:

Neste exemplo é possível notar algumas diferenças em relação ao anterior: o componente responsável por gerar o texto, que antes tinha sido construído em HTML, agora foi construído utilizando dois novos componentes: <View> e <Text>.

Estes dois componentes são importados diretamente do React Native e têm o mesmo propósito que o código HTML anteriormente utilizado. A principal diferença reside no facto de estes componentes, ao contrário dos elementos HTML, serem nativos, isto é, utilizam os próprios recursos da plataforma na qual estão a ser desenvolvidos.

Considerações finais

Tanto o ReactJS como o React Native são ferramentas poderosas para construir interfaces de utilizador. No entanto, são projetadas para propósitos diferentes e possuem algumas diferenças importantes.

Embora ambos utilizem uma sintaxe e conceitos semelhantes, o React Native destaca-se por ter um melhor desempenho e permitir o desenvolvimento de aplicações multiplataforma. Por outro lado, possui documentação e suporte inferiores, o que pode gerar alguns obstáculos no desenvolvimento para diferentes plataformas.

Por fim, a escolha entre ReactJS e React Native dependerá das necessidades e objetivos específicos de cada desenvolvedor. Ambos têm seu próprio conjunto de vantagens e desvantagens e, por esta razão, é importante considerar cuidadosamente estes fatores antes de decidir qual utilizar.

Queres saber mais? Neste vídeo podes ver as diferenças e semelhanças entre ReactJS e React Native em maior detalhe!

Referências bibliográficas

--

--