Explicación de <script type = "text/template">... </script>

Resuelto Matt asked hace 13 años • 7 respuestas

Me acabo de topar con algo que nunca había visto antes. En la fuente de la aplicación TODO de ejemplo de Backbone.js ( Ejemplo TODO de Backbone ), tenían sus plantillas dentro de un <script type="text/template"></script>código que contenía un código que parece sacado de PHPpero con JavaScriptetiquetas.

¿Alguien puede explicarme esto? ¿Es esto legítimo?

Matt avatar Feb 06 '11 16:02 Matt
Aceptado

Esas etiquetas de script son una forma común de implementar la funcionalidad de plantillas (como en PHP), pero en el lado del cliente.

Al establecer el tipo en "texto/plantilla", no es un script que el navegador pueda entender, por lo que el navegador simplemente lo ignorará. Esto le permite colocar cualquier cosa allí, que luego puede extraerse y usarse en una biblioteca de plantillas para generar fragmentos HTML.

Backbone no le obliga a utilizar ninguna biblioteca de plantillas en particular; existen bastantes: Moustache , Haml , Eco , Plantilla de cierre de Google , etc. (la que se usa en el ejemplo al que se vinculó es underscore.js ). Estos utilizarán su propia sintaxis para que usted escriba dentro de esas etiquetas de secuencia de comandos.

David Tang avatar Feb 06 '2011 09:02 David Tang

¡Es legítimo y muy útil!

Prueba esto:

<script id="hello" type="text/template">
  Hello world
</script>
<script>
  alert($('#hello').html());
</script>

Varias bibliotecas de plantillas de Javascript utilizan esta técnica. Manillar.js es un buen ejemplo.

Rimian avatar May 14 '2012 04:05 Rimian

Al configurar una etiqueta de secuencia de comandos typedistinta de text/javascript, el navegador no ejecutará el código interno de la etiqueta de secuencia de comandos. Esto se llama microplantilla. Este concepto se utiliza ampliamente en aplicaciones de una sola página (también conocidas como SPA).

<script type="text/template">I am a Micro template. 
  I am going to make your web page faster.</script>

Para la microplantilla, el tipo de etiqueta de secuencia de comandos es text/template. Está muy bien explicado por el creador de Jquery, John Resig http://ejohn.org/blog/javascript-micro-templating/

Fizer Khan avatar Mar 17 '2014 05:03 Fizer Khan

Para agregar a la respuesta de Box9:

Backbone.js depende de underscore.js, que a su vez implementa las microplantillas originales de John Resig.

Si decide utilizar Backbone.js con Rails, asegúrese de consultar la gema Jammit. Proporciona una forma muy limpia de gestionar el empaquetado de activos para plantillas. http://documentcloud.github.com/jammit/#jst

Por defecto, Jammit también utiliza las microplantillas de JResig, pero también le permite reemplazar el motor de plantillas.

Andrew De Andrade avatar Feb 23 '2011 22:02 Andrew De Andrade

Es una forma de agregar texto a HTML sin que se represente ni se normalice.

No es diferente a agregarlo como:

<textarea style="display:none"><span>{{name}}</span></textarea>
Kernel James avatar Mar 19 '2012 03:03 Kernel James