- Hamon Vitorino
- Desenvolvedor na Fortes desde 2010
- Trabalho há 9 anos com tecnologias .Net
- Web Forms x MVC
- Testabilidade
- Manutenibilidade
- Customização
- 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.
- 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?
- 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.
- 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.
- 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!).
- 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.
- 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)
- 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
- 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).
- 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.
- http://jquery.com/
- http://jqueryui.com/
- http://sammyjs.org/intro
- http://mustache.github.com/
- http://knockoutjs.com/
- @hvitorino
- github.com/hvitorino
- [email protected]