Publicado por Rafael Rosa em 10 de October de 2009
Mustache – Lugar de lógica não é na view
O Mustache é uma nova biblioteca para templating library criada por Chris Wanstrath (também conhecido como o defunkt do GitHub), que oferece uma maneira diferente de renderizar views no seu framework web Ruby preferido. Influenciado pelo ctemplate, o Mustache ajuda a manter suas camadas to keep your MVC separadas impedindo a inclusão de lógica de aplicação em suas views.
Usando ele, a camada de views é dividida em duas sub-camadas: uma classe Ruby para a "view" e um "template" HTML, para que você possa se concentrar em criar seu HTML sem poluí-lo com lógica em Ruby. Essa separação também facilita testes do código da view.
O nome do projeto ("bigode" em inglês), vêm das tags utilizadas para inserir referências a classe da view no template, que são feitas utilizando chaves duplas, ou "bigodes", como por exemplo {{nome}}.
Na sua forma mais simples, essas tags são apenas chamadas à métodos Ruby da classe da view, mas elas também podem usar blocos, chamar partials ou helpers de módulos incluídos na classe da view.
Você pode ver mais exemplos e a documentação no repositório do GitHub, mas aqui vai um exemplo retirado do README:
Lógica da View:
class Simple < Mustache
def name
"Chris"
end
def value
10_000
end
def taxed_value
value - (value * 0.4)
end
def in_ca
true
end
end
Template:
Hello {{name}}
Você acabou de ganhar U$CA {{value}}!
{{#in_ca}}
Bem, U$CA{{taxed_value}}, deduzidos os impostos.
{{/in_ca}}
Até o momento, só há suporte padrão para Sinatra support, mas ele deve ser bem fácil de integrar a outros frameworks Ruby.
Instalação
O Mustache está disponível no Gemcutter ou no Rip, e você pode instala-lo de uma das seguintes maneiras:
$ gem install mustache $ rip install git://github.com/defunkt/mustache.git

Clique aqui para adicionar ao del.icio.us

11 de October de 2009 às 11:05
Eu fui o unico que nao achou graça nenhuma nisso? Helper, view, view "traveis".... ahh, to mto bem com haml + helpers.
15 de October de 2009 às 20:17
Não consegui ver diferença entre usar um helper e o tradicional erb. No helper:
#...
def taxed_value
value - (value * 0.4)
end
#...
Na view:
// ...
Bem, U$CA, deduzidos os impostos.
// ...
Além disso, acredito que seja mais simples pra todo mundo usar a notação
do que
{{#in_ca}}
{{/in_ca}}
29 de October de 2009 às 13:22
também não vi graça alguma nisso.
um helper me parece resolver esse problema e não adicionar mais complexidade ao projeto.
23 de November de 2009 às 20:33
Helper resolve muito bem sim, mas mesmo assim se vê muito código de helper na view. Já peguei um haml com quase 20 linhas de lógica para montar uma tabela oO
Acho que a idéia do Mustache é não permitir isso de forma alguma, obrigando o vivente a colocar tudo dentro da classe mesmo.
Bom, eu vou dar uma testada nele é agora. Falou!