diegoleme
3/24/2015 - 8:13 PM

Qual técnologia usar para um SPA

Qual técnologia usar para um SPA

###Requisitos:

  • Sistema logado, sem preocupação de SEO
  • Single Page Application
  • IE8+
  • Não ficar amarrado eternamente em uma técnologia

###Dados interessantes:

NameStarsForksContriVesion
Angular36,66615,1051,2121.3.15
Backbone21,1514,7352521.1.2
Marionette6,0091,1222552.4.1
React18,4962,4723360.12.2
Flux5,266781522.0.2
jQuery33,8358,1302152.1.3

Google Trends

###Decisões:

Onde vai ficar a lógica? Backbone, Flux ou Modulos

Onde vai ficar as views? React ou Templates


##1. Angular ####Prós:

  • Tem o Google por trás
  • Tem a maior comunidade

####Contras:

  • Suporte IE8 só até 1.2 (Versão atual 1.3.15)
  • Versão 2.0 terá suporte só a IE10+, e será incompatível com a versão atual
  • É um framework completo, isso é bom, porém você fica totalmente amarrado a ele
  • Não trabalha bem com outras libs

Obs.: Não atende

##2. Backbone + Marionettejs ####Prós:

  • Tem uma comunidade grande, estável e mais madura
  • Já foi bastante testado no mercado e permite criar uma aplicação web tranquila
  • É uma lib. Fácil utilizar junto com outras libs e/ou trocar por outra

####Contras:

  • Outras tecnologias estão mostrando diferentes abstrações (Flux por exemplo que não é MVC)
  • Se escreve muito código por pouco beneficio

##3. React + Flux ####Prós:

  • Implementa Virtual DOM, que é a nova tendencia para libs JS (Angular e Ember já estão começando a implementar)
  • É uma lib. Fácil utilizar junto com outras libs e/ou trocar por outra
  • Tem o Facebook por trás
  • O React te permite criar componente isomórficos. Ou seja os componentes que vc criar para o client-side poderão ser utilizados para gerar o markup do lado server

####Contras:

  • Não utiliza o padrão de MVC já conhecido de outras bibliotecas
  • Técnologia nova comparada as demais, porém já tem 2 anos

##4. jQuery + Module + Director ####Prós:

  • Fácil entendimento
  • O caminho mais básico e rápido para início
  • São libs. Fácil utilizar junto com outras libs e/ou trocar por outra

####Contras:

  • Não resolve problemas já conhecidos de SPA
  • Não tem nenhum padrão de utilização definido, o que pode se tornar um problema para manutenção

Obs.: Possibilidade de trocar a biblioteca Module, por modulos em CommonJs compilando com WebPack.