Prazer, Angular!!
Olá! Hoje vim trazer para vocês um conteúdo mais técnico. Decidi falar sobre Angular, um framework web usado para a criação de páginas SPAs (como o React e Vue). Ao decorrer do texto farei alguns comparativos com o React.
Antes de iniciar o post, queria deixar algumas coisas claras: Eu sou um aspirante a dev full stack com Angular + C# (.NET). Iniciei meus estudos em Angular recentemente e resolvi revisar o que aprendi ensinando. Por isso, fique a vontade a passar alguma critica construtiva. Agora vamos ao conteúdos!
Afinal, o que é Angular?
Angular é um framework, que inicialmente foi baseado em Javascript, mas atualmente está escrito em Typescript (irei falar sobre isso mais tarde) para a criação de páginas SPA´s.
O Angular veio para resolver um problema no desenvolvimento web, que era a criação de páginas SPA (Single Page Aplication). Ele foi um dos (ou o) pioneiro neste sentido, visto que sua primeira versão foi lançada em meados de 2010.
O Angular é baseado em componentes. E isso significa que a aplicação web é dividida em "pedaços" e depois juntos para formar o que o dev desejar. Imagine que é como se fosse um lego, que você monta peça a peça. As maiores vantagens disso é mais facilidade na manutenção e reaproveitamento de componentes.
A sua estrutura é organizada e bem definida, ou seja, o Angular impõe alguns padrões de arquitetura para o dev seguir. Isso facilita na escala do projeto. Diferentemente do React, que deixa o desenvolvedor mais livre para organizar as coisas. Mas isso não quer dizer que o Angular é melhor que React e vice-versa. Isso vai depender muito do contexto da sua aplicação. Esse assunto será tratado mais a frente.
O seu sistema de ferrramentas (system tooling) é muito completo, que contém sua própria CLI, Router, HTTP etc. Ele já te da basicamente tudo que você precisa e raramente você irá precisar instalar bibliotecas de terceiros. O que é mais uma diferença do React, que dificilmente ao criar um projeto você não precise instalar alguma biblioteca externa. Mais uma vez: Isso não faz Angular melhor que React e vice-versa.
O Angular não é muito indicado de se utilizar em projetos pequenos ou quando você sabe que o projeto não tomará grandes proporções, pois o Angular ira adicionar uma complexidade desnecessária.
AngularJs x Angular
É muito comum para iniciantes confundir AngularJS com Angular, eu também fui um deles, mas AngularJS e Angular são duas coisas totalmente diferentes.
O AngularJs é a primeira versão do Angular, que foi escrito em Javacript e teve seu primeiro lançamento em meados de 2010. Porém, com a rápida evolução do Javascipt e a implementação do ECMAScript, o AngularJS passou por mudanças drásticas.
Essas mudanças deixaram muita gente descontente. Pode-se dizer que isso foi a porta de abertura para a criação de tantos frameworks para resolver o mesmo problema.
A partir da sua segunda versão, o Angular foi totalmente reescrito em Typescript, sua arquitetura foi alterada e seu nome também. Desde então passou a se chamar Angular.
O AngularJs se tornou legado e praticamente caiu em desuso. Diferente do Angular, que é mantido pela gigante Google e recebe atualizações até hoje.
Angular vs React
Pode-se dizer que esse é um excelente debate, mas a resposta para qual é o melhor é um tradicional depende.
Não existe tecnologia ou framework melhor que o outro. Existe contexto e cada um se sairá melhor em seu contexto. Por exemplo, o Angular é mais indicado para projetos de grande porte ou para projetos que você sabe que no futuro precisará escalar, pois em projetos menores pode ser adicionado uma complexidade desnecessária. Já o React é mais indicado para projetos de menor porte ou que não vai precisar escalar.
O principal motivo para Angular ser mais indicado para projetos de grande porte é pelo fato do Angular ser um framework. Isso faz com que o dev seja “forçado” a seguir uma arquitetura e jeito de escrever códigos imposto pelo framework.
O React é uma biblioteca, então ele é uma soma a mais a seu projeto. Como se fosse uma caixa de ferramentas ou uma peça a mais. Ele não impõe organização de pastas ou algo do tipo. Isso fica a cargo do desenvolvedor.
Isso não quer dizer que um projeto pequeno não pode ser feito em Angular ou que não da pra escalar um projeto React. Códigos ruins podem ser escritos independente da ferramenta - e é isso que são: Ferramentas. O código final é sempre feito por você. Se estiver mal feito, o problema esta entre o monitor e a cadeira e não no framework ou biblioteca.
Angular comparado ao React com mais detalhes
O Angular é mantido pela Google. Já o React pelo Facebook. Uma verdadeira briga de gigantes.
Como já foi dito, o Angular é um framework, ou seja, impera na forma que as coisas são organizadas ou te mostra o jeito de se organizar. Já o React é uma biblioteca, ele soma ao seu projeto, mas não altera a forma que o projeto deve ser estruturado. O desenvolvedor é mais livre para organizar.
Templating: O Angular cria seus templates com HTML + Typescript. O React cria com JS ou JSX.
Binding: Binding é a forma pelo qual as informações trafegam pelos componentes. O Angular usa a estratégia de Two-way data binding. Ou seja, as informações trafegam de forma bi-direcional. Tanto do componente pai para o componente filho, como do filho para o pai. No React as informações trafegam de forma uni-direcional, ou seja, somente de pai para filho. Seguindo sempre a hierarquia.
Manipulação da DOM: O React cria uma DOM virtual - chamada de Virtual DOM, que é uma cópia da DOM e vai injetando a lógica criada. Já o Angular não cria uma DOM virtual, o Angular faz algo como uma vinculação de dados, que permite que os elementos sejam atualizados de forma automatica assim que são alterados.
E essa breve introdução sobre Angular fica por aqui. Muito obrigado se você leu até aqui e fique a vontade para corrigir informações erradas ou adicionar mais alguma informação!!