Estou tentando aprender sobre os novos usos do javascript como uma linguagem do lado do servidor e como uma linguagem funcional. Alguns dias atrás, ouvi falar do node.js e do framework express. Então eu vi o underscore.js como um conjunto de funções utilitárias. Eu vi essa pergunta no stackoverflow . Ele diz que podemos usar o underscore.js como um mecanismo de modelo. alguém conhece bons tutoriais sobre como usar underscore.js para modelagem, especialmente para biginners que têm menos experiência com javascript avançado. obrigado
262
Respostas:
Tudo o que você precisa saber sobre o modelo de sublinhado está aqui . Apenas três coisas a serem lembradas:
<% %>
- para executar algum código<%= %>
- para imprimir algum valor no modelo<%- %>
- para imprimir alguns valores que o HTML escapouÉ tudo sobre isso.
Exemplo simples:
então
tpl({foo: "blahblah"})
seria renderizado para a string<h1>Some text: blahblah</h1>
fonte
fonte
text/html
tãotype="text/html"
mentiroso, mentiras podem causar problemas. Você seria melhor com um tipo preciso comotext/x-underscore
.type="foo/bar"
porque quero que todos saibam que isso não importa, desde que o navegador / servidor não o reconheça e tente fazer algo com isso. Desde html não é um tipo de roteiro, me sinto bastante seguro com text / html (John Resig usa-lo) obras foo / bar, bem :)*/x-*
tipos para usos "inventados", não acho que exista umtext/underscore
tipo nos registros oficiais, então usotext/x-underscore
porque sou paranóico e eles realmente querem me pegar.Em sua forma mais simples, você usaria como:
Se você usar um modelo algumas vezes, será necessário compilá-lo para que seja mais rápido:
Pessoalmente, prefiro a sintaxe do estilo Bigode. Você pode ajustar os marcadores de token do modelo para usar chaves duplas:
fonte
interpolate
dica não funcionou, mas foi isso:_.templateSettings = { interpolate: /\{\{\=(.+?)\}\}/g, escape: /\{\{\-(.+?)\}\}/g, evaluate: /\{\{(.+?)\}\}/g };
A documentação para o modelo é parcial, observei a fonte.
A função _.template possui 3 argumentos:
Se nenhum dado (ou nulo) for fornecido, uma função de renderização será retornada. Tem 1 argumento:
Existem 3 padrões de regex e 1 parâmetro estático nas configurações:
O código em uma seção de avaliação será simplesmente avaliado. Você pode adicionar string desta seção com o comando __p + = "mystring" ao modelo avaliado, mas isso não é recomendado (não faz parte da interface de modelagem), use a seção interpolar em vez disso. Este tipo de seção é para adicionar blocos como se ou para o modelo.
O resultado do código na seção interpolar será adicionado ao modelo avaliado. Se nulo for devolvido, a sequência vazia será adicionada.
A seção de escape escapa html com _.escape no valor de retorno do código fornecido. Portanto, a sua semelhante do que um _.escape (código) em um interpolate secção, mas escapa com \ os caracteres em branco como \ n antes de passar o código para o _.escape . Não sei por que isso é importante, está no código, mas funciona bem com o interpolar e _.escape - que não escapa aos caracteres do espaço em branco - também.
Por padrão, o parâmetro data é passado por uma instrução with (data) {...} , mas esse tipo de avaliação é muito mais lento que a avaliação com a variável nomeada. Portanto, nomear os dados com o parâmetro variável é algo bom ...
Por exemplo:
resultados
Você pode encontrar aqui mais exemplos de como usar o modelo e substituir as configurações padrão: http://underscorejs.org/#template
Ao carregar o modelo, você tem muitas opções, mas no final você sempre precisa converter o modelo em string. Você pode atribuí-la como sequência normal, como no exemplo acima, ou carregá-la a partir de uma tag de script e usar a função .html () do jquery, ou carregá-la de um arquivo separado com o plugin tpl do require.js .
Outra opção para construir a árvore de dom com lacônico em vez de modelagem.
fonte
Estou dando um exemplo muito simples
1)
O resultado seria
2) Este é um modelo
Este é html
Este é o código javascript que contém o objeto json e coloca o modelo em html
fonte
com express é tão fácil. tudo o que você precisa é usar o módulo consolidar no nó para que você precise instalá-lo:
você deve alterar o mecanismo padrão para o modelo html da seguinte forma:
registre o mecanismo de modelo de sublinhado para a extensão html:
está feito !
Agora, para carregar, por exemplo, um modelo chamado 'index.html':
Espero que isso tenha ajudado!
fonte
Eu queria compartilhar mais uma descoberta importante.
o uso de <% = variable => resultaria em vulnerabilidade de script entre sites. Portanto, é mais seguro usar <% - variable ->.
Tivemos que substituir <% = por <% - para evitar ataques de script entre sites. Não tenho certeza, se isso terá algum impacto no desempenho
fonte
Lodash também é o mesmo Primeiro, escreva um script da seguinte maneira:
Agora escreva algumas JS simples da seguinte maneira:
Onde popoup é uma div em que você deseja gerar a tabela
fonte