Entendendo Javascript - 5

Exemplos que utilizam Javascript

Fremeworks de Frontend

  • Angular

  • Vue

  • React

  • EXT

Fremeworks de Frontend

  • Todos são componentizados, ou seja, recebem um input e renderizam algum componente na tela com esses parâmetros.

  • React e Vue são excelentes ao tratar componentes mais simples

 Typescript vs. ES6 vs. ES5

  • React foca no uso de Javascript ES6;
  • Angular 1, Ext e Vue usam Javascript ES5 ou ES6;
  • Angular 2 e 4 usam TypeScript.

Templates

Angular exige conhecimento da sintaxe específica para usar algumas funcionalidades (ngIf ou ngFor) 

  • Angular coloca JS no HTML
  • React coloca HTML no JS com padrão JSX
  • EXT suprime HTML

Ponto importante aqui é notar, qual é mais poderoso, HTML ou JS? 

Templates

VUE usa o conceito um pouco diferente, chamado "Single File Component", onde os templates, scripts e estilos ficam armazenados em apenas um arquivo, mas em seções diferentes

Templates

Framework vs Biblioteca

Angular e EXT são frameworks, são a "solução completa" com seus conceitos fortes e estabelecidos, não é preciso procurar outras coisas compatíveis, é pegar e usar.

Vue e React são mais voltados a bibliotecas, são universalmente flexíveis, e podem ser pareadas com todo o tipo de biblioteca. Contudo... com grandes poderes vem grandes responsabilidades.

Framework vs Biblioteca

Angular, EXT e React caem em vários conceitos que são necessários aprender para utilizar plenamente as ferramentas, você precisa conhecer JS para aí aprender o framework X ou Y.

VUE elimina essa barreira com simplicidade, facilidade de uso e clareza de código sendo o mais intuitivo dos 4, todas as coisas são bem diretas.

Data bind

One-way vs. Two-way binding

Componentes descrevem a interface em qualquer momento do tempo. Quando os dados mudam, o framework precisa re-desenhar tudo o que for necessário para que os dados permaneçam sempre atualizados.

Angular utiliza por padrão o two-way data binding, enquanto os outros por padrão utilizam one-way (mas podem ser adaptados se necessário)

MVC

Angular traz o conceito de MVC integrado, enquanto os outros são mais V, e se necessário o desenvolvedor precisa criar o M e o C.

App

Algumas bibliotecas mais ambiciosas tentam tornar mais acessível o desenvolvimento de apps mobile apresentando algumas propostas, notoriamente React e Angular.

Para soluções nativas o Angular tem o NativeScript e o React tem o React-native.

 

Para uma solução híbrida o Angular tem o Ionic com o Cordova e o EXT apresenta suporte na versão 6.

Curva de Aprendizado

Angular exige conhecimento de Typescript, aprender como o framework funciona e conhecer os atributos adicionais das tags. Pode ser uma curva grande de aprendizado. 

React é flexível, utiliza ES6 o que é bom, porém pouco difundido e a sintaxe do JSX é de fácil compreensão, mas exige conhecimento e decisões de arquitetura para utilizar React em todo seu potencial 

Curva de Aprendizado

Vue é o mais simples de todos, com uma baixa curva de aprendizado e facilitando a entrada de novos desenvolvedores no projeto.

Ext embora tenha um fluxo simples, ele exige acompanhamento constante de documentação devido ao grande volume de componentes e é desejável entendimento da estrutura do framework. 

  • Principal notação: Typescript
  • Templates: HTML com atributos específicos do framework
  • Framework ou biblioteca? framework
  • Data bind: MVC two-way
  • Solução para app: Nativa (NativeScript) ou Híbrida (Ionic)
  • Curva de aprendizado: Alta
  • Principal notação: ES6
  • Templates: JSX
  • Framework ou biblioteca? biblioteca
  • Data bind: one-way padrão mas permite two-way
  • Solução para app: Nativa (react-native)
  • Curva de aprendizado: Alta
  • Principal notação: ES5 ou ES6
  • Templates: single-file-component com arquivos .vue
  • Framework ou biblioteca? biblioteca
  • Data bind: one-way padrão mas permite two-way
  • Solução para app: N/A
  • Curva de aprendizado: Baixa
  • Principal notação: ES5
  • Templates: JS
  • Framework ou biblioteca? framework
  • Data bind: one-way
  • Solução para app: Versão 5 apresenta responsividade, versão 6 incorporou solução híbrida
  • Curva de aprendizado: Média

Ok, qual eu escolho?

Se gosto de TypeScript: Angular

Eu gosto de flexibilidade e grandes ecosistemas: React

Eu gosto da ideia de "Tudo é Javascript": React ou Ext

Eu gosto de código limpo e baixa curva de aprendizado: Vue

Sozinho ou em um time pequeno: Vue ou React

Aplicações grandes: Angular, React ou Ext

Aplicações mobile: React

Trabalho com designers e quero um HTML limpo: Angular ou Vue

Gostei do Vue mas tenho medo do ecossistema limitado: React

Dúvidas?

That's all folks!

Entendendo Javascript - 5

By Chrysthian Simão

Entendendo Javascript - 5

Frameworks de Front-end

  • 183