La documentación para la creación de plantillas es parcial, vi la fuente.
La función _.template tiene 3 argumentos:
- Texto de cadena : la cadena de plantilla
- Datos del objeto : los datos de evaluación
- Configuración de objeto : configuración local, _.templateSettings es el objeto de configuración global
Si no hay datos dado (o nula), de un hacer que la función será devuelto. Tiene 1 argumento:
- Datos del objeto : igual que los datos anteriores
Hay 3 patrones de expresiones regulares y 1 parámetro estático en la configuración:
- Evaluación de RegExp : "<% code%>" en la cadena de plantilla
- Interpolación RegExp : "<% = code%>" en la cadena de plantilla
- RegExp escape : "<% - code%>"
- Variable de cadena : opcional, el nombre del parámetro de datos en la cadena de plantilla
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:
var html = _.template(
"<pre>The \"<% __p+=_.escape(o.text) %>\" is the same<br />" +
"as the \"<%= _.escape(o.text) %>\" and the same<br />" +
"as the \"<%- o.text %>\"</pre>",
{
text: "<b>some text</b> and \n it's a line break"
},
{
variable: "o"
}
);
$("body").html(html);
resultados
The "<b>some text</b> and
it's a line break" is the same
as the "<b>some text</b> and
it's a line break" and the same
as the "<b>some text</b> and
it's a line break"
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.