Estoy tratando de aprender sobre nuevos usos de javascript como lenguaje del servidor y como lenguaje funcional. Hace unos días escuché sobre node.js y express framework. Luego vi sobre underscore.js como un conjunto de funciones de utilidad. Vi esta pregunta en stackoverflow . Dice que podemos usar underscore.js como motor de plantillas. Alguien conoce buenos tutoriales sobre cómo utilizar underscore.js para crear plantillas, especialmente para los fanáticos que tienen menos experiencia con javascript avanzado. Gracias
262
Respuestas:
Todo lo que necesita saber sobre la plantilla de subrayado está aquí . Solo 3 cosas a tener en cuenta:
<% %>
- para ejecutar un código<%= %>
- para imprimir algún valor en la plantilla<%- %>
- para imprimir algunos valores HTML escapadoDe eso se trata todo.
Ejemplo simple:
luego
tpl({foo: "blahblah"})
se representaría en la cadena<h1>Some text: blahblah</h1>
fuente
fuente
text/html
así que decir quetype="text/html"
es una mentira, las mentiras pueden causar problemas. Sería mejor con un tipo exacto comotext/x-underscore
.type="foo/bar"
porque quiero que todos sepan que no importa mientras el navegador / servidor no lo reconozca e intente hacer algo con eso Como html no es un tipo de script, me siento bastante seguro con text / html (John Resig lo usa) foo / bar también funciona :)*/x-*
tipos para usos "inventados", no creo que haya untext/underscore
tipo en los registros oficiales, así que lo usotext/x-underscore
porque soy paranoico y realmente están tratando de atraparme.En su forma más simple, lo usarías como:
Si va a utilizar una plantilla varias veces, querrá compilarla para que sea más rápida:
Personalmente prefiero la sintaxis de estilo bigote. Puede ajustar los marcadores de token de plantilla para usar llaves dobles:
fuente
interpolate
propina no funcionó, pero esto sí:_.templateSettings = { interpolate: /\{\{\=(.+?)\}\}/g, escape: /\{\{\-(.+?)\}\}/g, evaluate: /\{\{(.+?)\}\}/g };
La documentación para la creación de plantillas es parcial, vi la fuente.
La función _.template tiene 3 argumentos:
Si no hay datos dado (o nula), de un hacer que la función será devuelto. Tiene 1 argumento:
Hay 3 patrones de expresiones regulares y 1 parámetro estático en la configuración:
El código en una sección de evaluación será simplemente evaluado. Puede agregar cadenas desde esta sección con el comando __p + = "mystring" a la plantilla evaluada, pero esto no se recomienda (no es parte de la interfaz de plantillas), use la sección de interpolación en lugar de eso. Este tipo de sección es para agregar bloques como if o for a la plantilla.
El resultado del código en la sección de interpolación se agregará a la plantilla evaluada. Si se devuelve un valor nulo, se agregará una cadena vacía.
La sección de escape escapa html con _.escape en el valor de retorno del código dado. Por lo tanto, es similar a un _.escape (código) en una sección de interpolación , pero se escapa con \ los espacios en blanco como \ n antes de pasar el código al _.escape . No sé por qué es tan importante, está en el código, pero funciona bien con la interpolación y _.escape , que tampoco escapa a los caracteres de espacio en blanco.
De forma predeterminada, el parámetro de datos se pasa por una instrucción with (data) {...} , pero este tipo de evaluación es mucho más lenta que la evaluación con variable con nombre. Entonces nombrar los datos con el parámetro variable es algo bueno ...
Por ejemplo:
resultados
Puede encontrar aquí más ejemplos de cómo usar la plantilla y anular la configuración predeterminada: http://underscorejs.org/#template
Al cargar la plantilla tiene muchas opciones, pero al final siempre tiene que convertir la plantilla en una cadena. Puede darlo como una cadena normal como en el ejemplo anterior, o puede cargarlo desde una etiqueta de script y usar la función .html () de jquery, o puede cargarlo desde un archivo separado con el complemento tpl de require.js .
Otra opción para construir el árbol dom con lacónico en lugar de plantillas.
fuente
Estoy dando un ejemplo muy simple
1)
El resultado sería
2) Esta es una plantilla
Esto es html
Este es el código javascript que contiene el objeto json y pone la plantilla en html
fuente
con express es muy fácil. todo lo que necesita es usar el módulo consolidado en el nodo, por lo que debe instalarlo:
entonces debe cambiar el motor predeterminado a la plantilla html de esta manera:
registre el motor de plantilla de subrayado para la extensión html:
está hecho !
Ahora para cargar, por ejemplo, una plantilla llamada 'index.html':
¡Espero que esto te ayude!
fuente
Quería compartir un hallazgo más importante.
El uso de <% = variable => daría como resultado una vulnerabilidad de secuencias de comandos entre sitios. Por lo tanto, es más seguro usar <% - variable -> en su lugar.
Tuvimos que reemplazar <% = con <% - para evitar ataques de secuencias de comandos entre sitios. No estoy seguro, si esto tendrá algún impacto en el rendimiento
fuente
Lodash también es el mismo Primero escribe un guión de la siguiente manera:
Ahora escriba algunos JS simples de la siguiente manera:
Donde popoup es un div donde desea generar la tabla
fuente