Comparação dos frameworks JavaScript definitivos: Angular vs React

9

Uma pergunta que me fazem quase diariamente é se devo começar com ReactJS ou Angular? No entanto, antes de prosseguir, deixe-me dar-lhe um aviso.

Não é um blog onde vou criticar um ou outro ou dizer que você deve sempre usar um em detrimento do outro. Cada desenvolvedor e cada projeto são completamente diferentes e eles têm um conjunto diferente de requisitos, então dizer que você sempre deve usar ReactJS ou sempre usar Angular é muito estúpido.

O Argumento Lógico

Você pode argumentar que o Angular é uma estrutura e o React é tecnicamente uma biblioteca por si só. Não estou negando esse fato, mas esse é o argumento no qual não quero entrar agora. Existem pacotes que você pode adicionar ao React que o transformarão em uma estrutura que compete diretamente com o Angular. Estamos comparando os dois ecossistemas, não a estrutura exata versus a biblioteca exata.

A curva de aprendizado

Vamos começar com Angular. Ainda outro aviso: quando digo Angular, estou falando de Angular 4, não de AngularJS.

Angular é um grande framework, o que significa que é poderoso e inclui muito. Há muito a aprender. Você vai ouvir um monte de novo vocabulário intimidador como injeção de dependência, decoradores de diretivas, pipes, etc. Então você tem que lidar com Typescript, que é JavaScript mais um monte de outros recursos, incluindo digitação estática.

O Angular é mais opinativo do que o React, o que é uma das vantagens na minha opinião porque com o React você pode fazer a mesma coisa de um milhão de maneiras diferentes. Com o Angular, geralmente há uma ou duas maneiras de fazer certas coisas, o que facilita o acompanhamento e fornece instruções muito mais claras sobre o que você deve fazer.

Mas, novamente, tudo se resume à preferência. Você pode gostar da flexibilidade de fazer as coisas de maneiras diferentes. Como mencionei, o ReactJS é uma biblioteca se estivermos falando apenas da biblioteca principal, é muito menor e muito mais fácil de aprender do que o framework Angular. Você pode dizer que aprenderá React em um período de tempo menor. O React é uma ótima biblioteca de visualização em si, mas não é nem de longe tão poderoso para aplicativos grandes. Se você deseja roteamento, validação e solicitações HTTP no React, precisará instalar outros pacotes e isso aumenta a curva de aprendizado.

Se você observar o código React de dois desenvolvedores diferentes, eles provavelmente parecerão completamente diferentes, estejam fazendo solicitações HTTP ou manipulando o estado e as propriedades. Tudo isso pode ser tratado de maneira muito diferente e, muitas vezes, pode ser feito da maneira errada.

Você encontra as melhores práticas e todos os problemas desaparecem, mas isso aumenta a curva de aprendizado.

Ao contrário do Angular, o React não usa templates. Ele usa algo chamado extensão JSX ou JavaScript ou extensão de sintaxe JavaScript, que nos permite incorporar HTML no JavaScript. A princípio, isso pode parecer um pouco peculiar. Especialmente, quando provavelmente você foi ensinado a separar sua marcação e seu JavaScript.

Pense nisso como colocar HTML dentro do JavaScript com algumas mudanças diferentes: você não pode usar o atributo class e precisa usar o nome da classe.

Por último, temos o Redux. React é frequentemente usado com Redux ou Flux, que são gerenciadores de estado de nível de aplicativo. Na minha opinião, o Redux é muito difícil, apenas configurá-lo e aprender os conceitos dele é difícil.

Acho que é usado em demasia. Acho que muitos desenvolvedores usam redux onde não é necessário. Você não precisa dele para aplicativos menores, mas muitos desenvolvedores insistem em usá-lo. Isso novamente se resume à preferência. Redux é muito poderoso, não quero tirar isso. Ao falar sobre a curva de aprendizado, é muito difícil de entender.

Características Reagir Angular
Linguagem de programação JavaScript TypeScript
Estrutura de Código Opinativo Flexível
Biblioteca Central Pequena Muito grande
Modelagem JSXGenericName HTML
Competência Pequenas Aplicações Aplicações em Grande Escala

Vencedor: é um empate

atuação

Não é justo comparar diretamente o desempenho do Angular com o React. Angular é um framework front-to-back completo que inclui roteamento, ferramentas de formulário, biblioteca HTTP, extensões reativas, etc. Todos esses recursos incham o framework e o tornam mais lento. No entanto, o React por si só é apenas uma biblioteca de visualização, que é muito menor e mais rápida.

Uma vez que você começa a adicionar pacotes como o roteador, cliente HTTP ou o que quer que você vá adicionar ao seu aplicativo React, ele começa a aparecer um pouco mais onde o Angular está e então você pode começar a compará-los de forma justa, mas mesmo depois disso o React ainda ganha o departamento de desempenho. É uma tecnologia muito rápida em geral.

A mudança de Angular 2 para Angular 4 sob o capô fez bastante para aumentar o desempenho. O Angular 4 tem desempenho melhor que o Angular 2. No entanto, o React ainda vence no departamento de desempenho.

Angular vs Reagir. Fonte: Academind.com

Vencedor: Reagir

Características

Ambos os frameworks têm muitos dos mesmos recursos e vantagens gerais: eles organizam seu código, são baseados em componentes, oferecem marcação dinâmica, etc. Eles são usados ​​para fazer muitas das mesmas coisas e compartilham uma muitos dos mesmos recursos.

Características AngularJS Reagir
Data de lançamento 2009 2013
Linguagem TypeScript, JavaScript JavaScript
Quota de mercado 0,3% <0,1%
Modelo Sim Não
Visão Sim Sim
Controlador Sim Não
Curva de aprendizado Complexo Fácil
Modelagem Sim Não
Falha Tempo de execução tempo de compilação
Renderização do lado da exibição Não Sim
DOM Sim Virtual
Suporte móvel Sim Sim
Renderização do lado da exibição Não Sim

Veremos alguns dos recursos individuais. O Angular obviamente tem muito mais recursos do que o React em seu núcleo. Deixe-me lembrá-lo de que estamos falando de dois ecossistemas e pacotes comuns usados ​​com o React.

Angular é uma estrutura com tudo incluído. Ele vem com roteador de componentes, extensões reativas para observáveis, um cliente HTTP, um módulo de formulário para validação e a lista continua. Além disso, oferece ligação de dados bidirecional de uma forma que nenhuma outra estrutura realmente oferece. A vinculação de dados da exibição ao modelo é extremamente fácil usando a diretiva de modelo ng.

Angular também suporta MVC (Controlador de exibição de modelo) ou pelo menos aspectos diferentes desse padrão de design. ele também vem com recursos que permitem implementar testes facilmente: tanto o teste de unidade quanto o teste de ponta a ponta. O Angular está repleto de recursos para criar aplicativos front-end de nível empresarial. O React, por outro lado, não inclui muito em seu núcleo. No entanto, coisas podem ser adicionadas para fornecer os recursos que o Angular inclui prontos para uso, além de alguns adicionais.

O React usa um DOM virtual que é muito poderoso. Ele cria sua própria versão leve do Dom real e inclui e atualiza apenas o que é necessário, em vez de atualizar tudo. O DOM virtual é uma das principais razões pelas quais o React é incrivelmente rápido.

O React usa JSX, que é mais poderoso que os modelos padrão, porque você pode colocar absolutamente qualquer tipo de JavaScript que desejar. O JSX não é necessário para usar o React, mas torna as coisas muito mais fáceis. Não consigo pensar em nenhum motivo para você não usar JSX com Angular também. O React também faz um ótimo trabalho ao gerenciar o estado e as propriedades do componente. Isso torna os dados realmente fáceis de trabalhar e passar entre os componentes. Passar dados entre componentes, Angular é muito mais difícil do que fazê-lo no React.

O Core React é difícil de manter o estado do nível do aplicativo. O estado do componente é fácil, mas se você deseja um verdadeiro gerenciamento de estado no nível do aplicativo, precisará do Redux ou do Flux, que eu disse antes que é muito confuso de aprender. Pacotes externos que são frequentemente usados ​​como o novo roteador React versão 4 são um pouco difíceis de entender, mas também são muito poderosos quando você aprende a executá-lo e configurá-lo. Existem muitas maneiras diferentes de usá-lo também. O React não possui um componente HTTP principal como o Angular, mas você pode usar o Fetch ou o Axios, que é um cliente HTTP externo e o Enzyme é popular para atestar o React. Existem alguns dos diferentes pacotes que são comumente usados ​​com o React, mesmo que não façam parte da biblioteca real.

Embora ambas as tecnologias compartilhem um bom número de recursos, se você estiver apenas comparando as principais tecnologias, o Angular é o vencedor.

Vencedor: Angular

ferramentas

Angular e React têm algumas interfaces de linha de comando muito boas. O Angular CLI e o aplicativo Create React são ótimos e realmente nos permitem simplificar o desenvolvimento. O Angular CLI é um pouco mais poderoso porque podemos gerar rapidamente coisas como componentes e serviços. Create React não pode fazer isso. Você tem que criar tudo sozinho, tanto quanto os arquivos e a estrutura básica. Ambos os sistemas usam web pack, possuem seus próprios servidores de desenvolvimento de carregamento automático e ferramentas de compilação e construção. Obviamente, Angular tem a tarefa adicional de transpilar Typescript. A CLI tem um script para isso quando executamos ng serve. Tudo isso aconteceu nos bastidores. Ele usa algo chamado TSC ou Typescript Compiler para isso e ambos têm ferramentas de teste também.

Características Angular Reagir
Interface da Linha de comando Angular CLI Criar Reagir
Tarefas adicionais Transpilando texto datilografado Nenhum
teste jasmim e carma É

Se for um aplicativo de pilha completa, eles são realmente importantes. Você não precisa usá-los. Você pode criar um aplicativo React desde o início com o pacote da web. Isso torna muito mais fácil não apenas construir o aplicativo, mas também compilá-lo e desenvolvê-lo para produção.

Ambos são bonitos, mesmo nesse departamento.

Vencedor: Angular

Ecossistema

Como eu disse, ambas as tecnologias têm seus próprios ecossistemas que agora se espalham muito além do navegador da web.

Ionic é uma estrutura híbrida popular que é um aplicativo Angular executado dentro de um wrapper nativo para aplicativos móveis. Você pode criar aplicativos móveis usando Angular. Os aplicativos híbridos podem ser um pouco desajeitados em comparação com os aplicativos nativos. A experiência do usuário pode não ser tão boa às vezes, nem tão rápida e responsiva. Entre os vários frameworks híbridos, o Ionic 3 é o melhor. Há também o NativeScript, que nos permite criar verdadeiros aplicativos nativos para iOS e Android com Angular e JavaScript.

Características Angular Reagir
Desenvolvimento de aplicativos híbridos iônico *Não requerido
Desenvolvimento de aplicativos nativos NativeScript Reagir nativo
Renderização no lado do servidor Angular Universal ESTE
Biblioteca de gerenciamento de estado Loja NgRx Reax Redux, MobX
Biblioteca de IU de materiais material angular Material-UI
Realidade virtual RV reativa ESTE

No entanto, o NativeScript não parece ser tão bom quanto o React Native do Facebook, pelo menos neste ponto. O Angular também possui uma biblioteca de componentes de design de material, se você for um fã de design de material. Angular Universal é um projeto inicial que pode ser usado para renderizar Angular no lado do servidor. Há também a loja NgRx, que é uma biblioteca de gerenciamento de estado inspirada no Reax redux. É baseado no estado mutado por redutores de mesmo nível. Também possui integração com extensões reativas.

Você teria notado. Uma vez, um deles faz algo que o outro copia de maneira diferente. React e Angular tornaram-se Microsoft e Apple de frameworks JavaScript.

React tem um ecossistema e tanto. Possui React nativo, que é popular. É a melhor maneira de criar aplicativos móveis com tecnologias da web. O React Native é rápido e muitos dos aplicativos, se construídos corretamente, estão lá em cima com aplicativos nativos que são construídos em Swift ou Java. O React tem uma biblioteca de design de material chamada Material-UI, muito parecida com o componente de design de material do Angular, mas mais madura. JS é uma estrutura para renderizar aplicativos React do lado do servidor. Ele visa fazer isso da maneira mais simples possível, para que possa ser comparado ao Angular Universal. MobX é outra maneira de gerenciar o estado. Funciona um pouco diferente do que o redux. Ele fornece um conjunto de decoradores para definir observáveis ​​e observadores e introduz a lógica reativa em seu estado.

Storybook é um ambiente de desenvolvimento para React. Ele permite que você navegue em uma biblioteca de componentes, visualize diferentes estados de cada componente e desenvolva e teste componentes de forma interativa. A RV reativa está levando o React para a realidade virtual. React desktop é uma biblioteca JavaScript construída sobre a biblioteca Reacts que supostamente traz uma experiência nativa de desktop para a web, apresentando muitos componentes macOS e Windows 10. O ecossistema React é extremamente grande e poderoso. O React está entrando em todos os aspectos da tecnologia e é um claro vencedor.

Vencedor: Reagir

As pessoas de terno e gravata estão usando Angular e os hipsters com barbas desgrenhadas estão usando React.
  AngularJS Reagir
Principais desenvolvedores Google Facebook+Instagram
Era 6 anos 2 anos
Extensibilidade Sim Sim
Velocidade* 1,35 segundos 310 milissegundos
DOM Navegador Virtual; apenas reprocessa dados alterados com mecanismo de correção
Arquitetura Estrutura MVC completa Apenas o componente de exibição
Curva de aprendizado Difícil no início; requer conhecimento de conceitos específicos, como diretivas DOM, filtros e fábricas. Mais fácil de começar; contém uma API e sintaxe simplificadas
Estrutura e Componentes HTML,JS e CSS Mesmo; mas pode integrar HTML com JS, usando JSX

Resumindo: é um empate

Se você está decidindo entre essas estruturas, observe as diferentes categorias e veja o que lhe interessa. Experimente os dois e veja qual você pega mais rápido. Faça mais algumas pesquisas mais do que este blog. Você nunca obterá todas as informações de que precisa em um blog, então leia um pouco mais.

Se você estiver procurando por um ecossistema maior que inclua o desenvolvimento de aplicativos móveis nativos, escolha React sem pensar duas vezes. Se você procura recursos, o Angular é enorme. Existem mais recursos do que você precisa.

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação