Dado que o Angular 2.0 tá aí, vale a pena investir no Angular 1.X?

Angular-2.0
O Angular 2.0 está sendo desenvolvido a todo vapor, e vai ser completamente incompatível com o Angular 1.X.

Em outras palavras, não será possível migrar a sua aplicação do Angular 1.x pro 2.0 sem um refactoring muito grande no código.

Por isso, muita gente me fez/faz alguma variante da pergunta acima.
Tem gente que até me pergunta “cadê o curso de Angular 2.0 que eu quero me matricular!”

Estou escrevendo esse post porque assim, da próxima vez eu posso simplesmente redirecionar a pessoa pro meu blog. Pura preguiça, digo, puro reuso.

Mas então, qual a resposta?

Antes de responder, eu quero deixar claro que essa é a minha opinião sobre um assunto polêmico.
Eu não sou o dono da verdade e programadores diferentes podem ter opiniões diferentes.
E digo mais, nada impede que no futuro minha opinião mude! A única coisa que eu garanto nesse caso é que se isso acontecer, eu voltarei aqui nesse post pra fazer um update. OK?

Então tá.

Sim, vale muito a pena investir no Angular 1.

E aproveitando pra fazer o jabá-de-cada-dia: se vc quer aprender Angular 1, ainda dá tempo de se inscrever pra turma 4 do ng-masters! Nessa edição vamos usar a versão 1.3 (é a versão stable mais recente)

E não, não vale a pena investir no Angular 2 HOJE, a menos que vc domine Angular 1, e tenha tempo sobrando, e não tenha nada mais relevante na sua fila de coisas que vc gostaria de aprender. (então no meu caso, por exemplo, não vale).

Mas… por que?!

Angular 2.0 vai ser o cão chupando manga. Vai usar webcomponents, vai ser mais rápido, vai ser lindo, vai usar recursos da nova versão do javascript

Opa! Alguém falou novo javascript?

Pois é… O Angular 2 depende do ecmascript 6, o novo Javascript que vai ter classes, Map, Set, Object.observe (que deverá deixar os bindings bem mais rápidos) – também vai ser outra coisa linda de Deus o ecma 6.

MAS

Sua aplicação web precisa rodar no browser do seu usuário.
Então, na prática, até que todos os navegadores tenham suporte nativo ao ecma 6, Angular 2 está fora de questão pra ser usado em produção.

Então… “Dado que o Angular 2.0 tá aí”…
FALSO! O Angular 2.0 não tá tãaao aí assim. E vai demorar um pouco até que ele possa estar aí.

Estudar Angular 2 hoje é equivalente a se matricular numa escolinha de hoverboard: vc pode até se divertir pacas, mas vai demorar um pouco até vc conseguir aplicar o que aprendeu.

hoverboard1

Então eu tenho uma postura mais pragmática: eu vou me especializando cada vez mais no que eu posso usar em produção, que é o Angular 1.X véio de guerra! :-). Pra resolver hoje problemas que meus usuários têm hoje.

A hora nós tivermos ecma 6 em todos os browsers, aí sim eu pretendo dar uma olhada nos frameworks e como eles me ajudam a resolver problemas. Nesse dia possivelmente eu decidirei investir em Angular 2, mas pode ser que eu decida por outra coisa tb, sei lá. Duvido que Angular 2 vai ser a única opção. Acho muito provável que será a melhor opção, mas duvido que será a única.

De qq forma esse dia parece meio longe ainda.

Tá, então tem outra pergunta mais relevante que pode ser feita que é a seguinte:

Dá pra fazer alguma coisa hoje na minha aplicação pra minimizar o tamanho do refactoring se eu quiser migrar pra Angular 2, no dia que isso for possível?

Eu acho essa pergunta bem mais relevante que a primeira.

A resposta é: Tem sim: pára de armazenar estado no $scope dos seus controllers.
Tem um vídeo que fiz há um tempo atrás que eu considero a sacada mais importante sobre Angular que eu já tive.
O vídeo é esse aqui: Como fazer TDD com Angular.

Nesse vídeo eu explico como vc pode armazenar o estado da sua tela num serviço criado com angular.factory() ao invés de usar o $scope do controller.
Fazendo isso, vc tem um objeto javascript puro que armazena todos os dados que aparecem na sua tela, e contém alguns métodos que aplicam transformações no estado interno dele. Enfim, um objeto simples como o que vc viu na aula de OO.
Com isso sua aplicação fica mais testável (daí o título do vídeo), e menos dependente do próprio Angular.
Eu acredito que uma aplicação construída nesse esquema vai dar um pouco menos de trabalho pra migrar pra Angular 2, ou pra qualquer outra coisa!
Nós já estamos trabalhando nesse esquema lá no QMágico e só tem benefícios. Não só pela testabilidade, mas a qualidade do código tá melhorando bastante por causa disso. Recomendo demais.

Bom, tá aí minha opinião…
Se eu falei alguma bobagem aí, por favor fica a vontade pra me corrigir nos comentários abaixo, e se vc tem alguma informação relevante pra jogar na roda, fica a vontade (principalmente, se vc acha que eu estou errado, bora quebrar o pau!!! :-)) ). O assunto é polêmico mesmo, eu acho.

11 comentários em “Dado que o Angular 2.0 tá aí, vale a pena investir no Angular 1.X?

  1. Tony, concordo com cada palavra do que disse. Parabéns pelo excelente trabalho com a comunidade Angular, posso dizer que graças a ti hoje sou um dos fãs desta tech que com certeza vai nos dar trabalho pelos próximos anos. Abraço do Simas!

  2. Tony, se puder, sintetiza pra gente também a relação entre o Angular 2 e o Typescript? Abraços

  3. Olá Tony, tudo bom?

    Excelente artigo. Curti bastante.

    Só uma pergunta n00b.

    Vc comenta: “Então, na prática, até que todos os navegadores tenham suporte nativo ao ecma 6, Angular 2 está fora de questão pra ser usado em produção.”

    Mas o TypeScript não é compilado para JS puro? Dessa forma, o Angular2 não rodaria, teoricamente, nos principais navegadores atuais? Algo como isso?
    http://angularjs.blogspot.com.br/2015/08/angular-1-and-angular-2-coexistence.html

    Aproveitando, vc acha que valeria a pena tentar usar o Angular2 com um Template em Angular1?

    Parabéns pelo ótimo trabalho e muito sucesso.

    Um abraço.

  4. Olá Tony

    Parabéns pelo artigo. Vi que a publicação é do ano passado e te pergunto: hoje 01/06/2016 vale a pena investir no AngularJS 2? Já conheço a versão 1.x porém me preocupo se usarei typescript ou o javascript q ja li nao ser aconselhavel já q perderia muitas vantagens do typescript.

Deixar mensagem para Anderson Ferreira Cancelar resposta