Porque você não deve utilizar AngularJS? – Fernando Monteiro - Front-end Developer
Algum tempo depois de primeira versão deste post ir ao ar, recebi a notícia de que Rob Eisenberg, hávia deixado o core team do AngularJS, isso ocorreu deviado a alguns desentendimentos entres os membros, segundo o proprio Rob Eisenberg.
Eis que surge então o Aurelia, que na verdade é/será algo muito similar ao AngularJS 2.0.
A atual versão estável do AngularJS é: 1.4.7, e está muito melhor do que a versão 1.3, quando saiu este post abaixo.
Entretanto com pouco mais de 2 anos desenvolvendo com AngularJS, 8h por dia 5 dias por semana, seu tool kit e snippets já estão maduros o suficiente para iniciar qualquer aplicação do zero, muito rápidamente, $http está mais conciso e eficiente além de muitas outras alterações.
Mas enquanto a versão nova não chega, desevolver com a verão 1.4.x é uma ótima opção.
Neste link esta uma pesquisa sobre as mudanças na nova bibilotéca. Uma delas não me agrada, Typescript. Mas isso é tema para outro post.
A razão principal para toda essa mudança é uma só: Performance, o que é ótimo. Se voce já desenvolveu alguma aplicação realmente grande, sabe que a Performance é bastante sacrificada.
Apesar de robusto e bem popular este excelente framework não é a solução para todos os seus problemas. Isso infelizmente é um fato muito verdadeiro.
Escrevi este artigo, porque após 8 meses trabalhando em um projeto com Angular (em meados de 2013), pude verificar que, apesar do projeto ter finalizado com sucesso, perdemos um tempo relevante em seu desenvolvimento e após concluído, o mesmo foi engavetado. Poderíamos ter concluído o projeto em metade do tempo utilizando jQuery e alguma Lib. com Observable (Na época, ainda não tinha Object.observe()) e com certeza poderíamos ter realizado o pivô do negócio, antes do fracasso. Não entenda que o projeto fracassou devido a utilização do framework, e sim porque fizemos a escolha errada para este projeto devido ao conhecimento da equipe e o curto espaço de tempo.
É fundamental saber onde você não deve utilizar o Angular e buscar alternativas semelhantes. Não ele não é indicado para pequenos web sites ou landing pages, mas utiliza-lo em aplicações de grande porte pode ser muito complexo, vamos entender porque:
O Angular compila todos os elementos do HTML antes de mostra-los no browser, exatamente tudo na aplicação é compilado, data-binding, directivas, etc… isso pode impactar no tempo de carregamento e no browser utilizado.
Ele é Flexível, e quando este elemento não esta acompanhando de uma padrão de organização previamente estabelecido, a flexibilidade se torna bagunça, e mais dor de cabeça.
Se a equipe esta acostumada a manipular o DOM com jQuery, vai ter que apreender a pensar diferente com Angular.js. Existe um versão light do jQuery dentro do Angular com alguns métodos, mas para utiliza-lo você vai ter que gastar um tempo aprendendo, senão corre o risco de estar utilizando jQuery para fazer muitas coisas que o framework tem seus próprios recursos para fazer.
Atualmente existem poucos desenvolvedores (Front-end) realmente experientes em Angular no mercado. Isso é uma realidade. (Entenda desenvolvedores com experiência na solução de problemas complexos de interface, não apenas para escrever TO-DO app.).
Escrever a lógica da aplicação na View.
Manter um único arquivo para todos os Controllers.
Deixar o client acessar diretamente os dados, sem passar por um Model.
A evolução para esta nova versão esta a passos largos, veja este report de Março, a própria versão 1.3 já mostra alguns sinais do que vem por ai, esta versão já não oferece suporte ao IE8. Mais detalhes podem ser encontrados nos rascunhos da documentação.
Muita coisa vai mudar, acredito que para melhor, mas coisas como Controllers, $scope, não existiram mais da maneira que conhecemos. Recentemente tem ocorrido um murmúrio muito grande em relação a todas estas mudanças e isso tem desapontado muita gente envolvida diretamente com o core de desenvolvimento do Angular.
Este texto tem o intuito de facilitar a tomada de decisão, afinal é muito facíl encontrar inumeros motivos para utilizar os frameworks mais populares, a comunidade é vibrante e sem duvida o Angular é o mais popular, além disso atualmente muitas empresas estão buscando profissionais front-end com conhecimentos em Angular, Backbone, Ember.
Mas atenção, já observei alguns projetos muito simples(Site institucional / Hotsite) terem em sua especificação a utilização do Angular, apenas porque dizem que ele é robusto e rápido, isso tem inspirado pessoas(Líderes e Gestores de TI) com pouco conhecimento a exigirem este tipo de coisa em pequenos projetos pontuais.
Frameworks facilitam a sua vida, e sem dúvida o Angular é ótimo, mas utiliza-lo em todos projetos possiveis e imaginaveis não é uma atitude muito racional.