Frameworks JavaScript vs EcmaScript 2015

Caros amigos, estou passando por uma dúvida mortal que está me consumindo. Eu conheço JavaScript e Angular 1.0. Até montei a arquitetura de front-end da empresa que trabalho atualmente pensando em vários aspectos como: testes, internacionalização, organização do código, documentação e etc… Mas quando decidi me atualizar, e quando digo me atualizar cito estudar ES2015, SASS, Angular 2, cai em uma dúvida mortal: Vale a pena utilizar um framework como Angular 2 ou ReactJS nos projetos ou ir de EcmaScript 2015 puro? É muito mais performático e fácil de manter?

Vejam bem, cada framework além de possuir uma curva de aprendizado muito grande ainda faz com que haja cargas de processamento desnecessários no cliente, maior tamanho do arquivo final e uma maneira engessada de como trabalhar com JS (ReactJS com HTML no JS e Angular com seu modelo MVW). Como a tecnologia evolui muito rápido, todo mês há um framework novo surgindo, com metodologias diferentes e muitas vezes sendo incompatíveis entre si. Um exemplo, é que Angular 2 é incompatível com Angular 1. Tudo bem que Angular 1 foi criado em 2009 e ficou quase 6 anos no mercado, mas o impacto final foi muito grande.

Pensando em mobile multiplataforma, pressupondo que haja a necessidade de criar um aplicativo offline então temos:

  • Web App: Mesma base de código com apenas alguns ajustes (Limitação de recursos).
  • Angular 2: Ionic 2, NativeScript e outros.
  • ReactJS: React Native.

Como @sergiolopes colocou em outro tópico deste mesmo fórum, adicionar o Cordova em um aplicativo, sem que haja a devida necessidade, faz com que haja gargá-los na performance e um significativo tamanho do app final. Fora que cada item, seja biblioteca ou framework, acaba alterando o seu ambiente de desenvolvimento e tornando-o mais difícil de se manter (Encontrar problemas devido á complexidade que as dependências envolvidas colocam).

.A minha dúvida é por que eu estava decidido a estudar Angular 2, mas antes quis reforçar o meu conhecimento de JavaScript, e após ler o livro Elouquent JavaScript de Marijn Haverbeke percebi que com JS puro é possível fazer coisas grandiosas, utilizando pouco código, graças há uma modelagem muito bem pensada. Além desta postagem: ReactJS + Redux - Blog like a JavaScript Hacker do blog Beija Flor Engenharia que mostra o poder do ReactJS + Redux que permite definir toda aplicação como um objeto, restaurar um estado para depuração e processamento no front-end no servidor. Então fiquei com mais dúvida ainda se Angular 2 é uma jogada certeira, sendo que o :heart_decoration: Google Progressive Web Development, que é um material que ensina como criar uma aplicação Web multi-plataforma pensando em todos os aspectos como UI, performance e outros não utiliza um framework.

Mas com o shadow-DOM do Polymer e o DOM virtual do ReactJS, eu não sei se atualizar o DOM via JavaScript puro acaba sendo mais lento, por que no fundo… estas bibliotecas terão que atualizar os elementos do DOM, mesmo que utilizando event.stopPropagation para não disparar eventos para todos os elementos pai. E também não sei se é possível utilizar Web Components com JavaScript puro.

Conversando com Yamada, o criador da empresa BeijaFlor.io que citei no parágrafo anterior, referente ao ReactJS e se realmente valeria a pena deixar Angular de lado, ele respondeu o seguinte:

Teve uma talk sinistra de um desenvolvedor do Atom, no GitHub, sobre a história do editor. Como eles passaram de jQuery/Backbone, pra React.js e de volta pra JavaScript puro (Atom do Github - Do jQuery para ReactJS e de volta para JavaScript puro). A talk é muito boa porque nota que nós temos que nos concentrar nos produtos e não nas tecnologias.

Essa odisseia que estou passando é por que quero investir fortemente meu escasso tempo no estudo e desenvolvimento de aplicações Web (Cross-Platform Mobile), por que acredito que boa parte das aplicações, o que @sergiolopes cita em torno de 99.5%, podem ser escritas utilizando uma :heart_eyes: única base de código. Acredito que este seja o futuro do desenvolvimento cross-platform. Digo até o :video_game: desenvolvimento de jogos. (Há Angry Birds e Cute the Hope para o Chrome). Então, não quero ter que experimentar todos para decidir qual é o melhor para este meu objetivo, além do que as pessoas tendem a não criar conflitos, dizendo que cada um atende um objetivo ou proposta diferente, o que discordo pois no final o que queremos é a mesma coisa: Uma única base de código, performance (Fluidez) e fácil manutenção.

Eu tenho essas mesmas dúvidas como trabalho com C# diariamente, vou começar a focar no Xamarim.
Sobre o EcmaScript pelo menos a galera do .NET está se preparando usando TypeScript para não sentir uma diferença tão drástica.

1 curtida

Se o seu foco é mobile, saia dessa confusão e aprenda diretamente soluções nativas (iOS, Android, Windows Mobile), que é mais valorizado e onde as apps mais consagradas são feitas.

Xamarin facilita por um lado cross plataform, mas é um risco de ficar num mundo paralelo. Só invista se estiver mirando vagas pedindo.

Definitivamente não dá pra ficar aprendendo tudo, tem que ter um foco baseado nos seus objetivos. Eu trabalho com web mas de acordo com meu horizonte não tenho a necessidade de aprender Angular e nem EcmaScript, embora acompanhe tudo isso, para quando chegar o momento da necessidade vou me adaptar sem traumas e sem vícios de versão 1.0.

1 curtida