Skip to content

Instantly share code, notes, and snippets.

@hvitorino
Created June 21, 2012 20:00
Show Gist options
  • Save hvitorino/2968185 to your computer and use it in GitHub Desktop.
Save hvitorino/2968185 to your computer and use it in GitHub Desktop.
cejspub

Quem sou eu?

  • Hamon Vitorino
  • Desenvolvedor na Fortes desde 2010
  • Trabalho há 9 anos com tecnologias .Net

Início

  • Web Forms x MVC
  • Testabilidade
  • Manutenibilidade
  • Customização

jQueryUI

  • Bom poder de customização
  • Domínio sobre (quase todo) o HTML exibido
  • Componentes client-side prontos: calendário, popup, validação
  • Boa disponibilidade de componentes de terceiros
  • Documentação razoável e uma comunidade muito grande.

Massssss...

  • Como fazer disso tudo uma app homogênea visualmente?
  • Cadê a grid paginada, com filtro assíncrono no client-side ou no server-side (você escolhe), flutuante e com ordenação por múltiplas células, que podem ser escolhidas pelo usuário, movidas, removidas e adicionadas?

ExtJs 3 (Seus problemas acabaram!)

  • Componentes client-side em javascript.
  • Visual muito bom.
  • Possui a maioria dos componentes necessários para o desenvolvimento de uma app.
  • Documentação então nem se fala.

Massssss...

  • Não tem boa convivência com outras bibliotecas.
  • Enorme quantidade de javascript.
  • Na última vez que comparamos tínhamos ~5k linhas de código em C# e 22k em javascript (sem espaços)
  • Quase nenhum domínio sobre o HTML + CSS gerado.
  • Muita dificuldade de customizar devido ao ciclo de vida obscuro dos componentes.
  • Baixa manutenibilidade.
  • Gerenciamento de layout próprio. (Desnecessário e pesado)
  • Pesado no browser.
  • O HTML gerado é muito ruim e denso. (Tenta escrever um teste de aceitação e você vai ver)
  • Desenvolvia no Firefox e precisava fechar o browser a cada ~3 horas
  • Cheguei a ter 1.5GB de memória devorada pelo FF.
  • Excessivamente parecido com Desktop. Diria que é uma tentativa de reproduzi-lo.

ExtJs 4

  • Todos os componentes da versão anterior mais um framework mvc.
  • Permitia a criação e gerenciamento de módulos e quando deveriam ser carregados.
  • Componentização melhorada (e muito!).

Massssss...

  • Todos os defeitos da versão 3, exceto pela componentização e a modularização.
  • O defeito da modularização era ser baseada em strings, impedindo a IDE (VS2010) de gerar intellisense (isso faz uma faaaaaalta!).
  • A baixa capacidade de customização foi mais decisiva aqui e desistimos do ExtJs.

SammyJS + Mustache

  • Total controle sobre o HTML (enfim!)
  • Boa convivência (e necessária) com outras bibliotecas (jQuery!)
  • Liberdade de escolha da sua biblioteca de templates (mustache)

Massssss...

  • Dois sistemas de rotas (client-side e server-side)
  • Dificuldade de criar componentes usando somente uma biblioteca de templates client-side
  • Baixa manutenibilidade
  • Fazer uma view com um comportamento de média complexidade usando somente jQuey

Helpers server-side + Knockoutjs (Atualmente)

  • Componentes (templates) tipados e configuráveis escritos no server-side usando Razor.
  • Helpers (C#) que renderizam os componentes.
  • Aparência e comportamento homogêneos e definidos pela equipe.
  • Comportamentos dinâmicos ficaram mais fáceis com a implementação de MVVM do ko e seus bindings.
  • Menos código javascript!
  • Boa convivência com outras bibliotecas.
  • Layout gerenciado pelo browser (#win).

Como tudo, também tem um "Massssss..."

  • Todo o código é de nossa responsabilidade e isso implica manutenção evolutiva e de correção.
  • A expectativa é de poder reaproveitá-lo em outras soluções.
  • Ainda não escrevemos tão pouco javascript quanto gostaríamos, mas estamos trabalhando nisso.

Links

Contatos

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment