Me topé 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 parece algo salido de PHP pero con etiquetas JavaScript.
¿Alguien puede explicarme esto? ¿Es esto legítimo?
type="text/tcl"
lo que vi en el documento W3C ? ¿Cómo usarlo? (¿Debo hacer otra pregunta?)Respuestas:
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 poner cualquier cosa allí, que luego se puede extraer más tarde y utilizar por una biblioteca de plantillas para generar fragmentos de HTML.
Espina dorsal no le obliga a utilizar cualquier biblioteca de plantillas en particular - hay bastantes por ahí: bigote , Haml , Eco , plantilla de Google de cierre , y así sucesivamente (la utilizada en el ejemplo que es vinculado a underscore.js ). Estos usarán su propia sintaxis para que puedas escribir dentro de esas etiquetas de script.
fuente
.innerHTML
, por lo tanto, es una práctica común ahora entre los motores de plantillas.<template />
etiquetar. html5rocks.com/en/tutorials/webcomponents/template & caniuse.com/#search=template<template>
está aquí, pero los sitios todavía usan esta técnica, como reddit.com. : F¡Es legítimo y muy útil!
Prueba esto:
Varias bibliotecas de plantillas Javascript utilizan esta técnica. Handlebars.js es un buen ejemplo.
fuente
Al establecer una etiqueta de script
type
diferente atext/javascript
, el navegador no ejecutará el código interno de la etiqueta de script. Esto se llama micro plantilla. Este concepto es ampliamente utilizado en la aplicación de página única (también conocido como SPA).Para micro plantilla, el tipo de etiqueta de script es
text/template
. Está muy bien explicado por el creador de Jquery John Resig http://ejohn.org/blog/javascript-micro-templating/fuente
Para agregar a la respuesta de Box9:
Backbone.js depende de underscore.js, que implementa las microtemplates originales de John Resig.
Si decides usar Backbone.js con Rails, asegúrate de ver la gema Jammit. Proporciona una forma muy limpia de administrar el empaquetado de activos para plantillas. http://documentcloud.github.com/jammit/#jst
Por defecto, Jammit también usa las microtemplates de JResig, pero también le permite reemplazar el motor de plantillas.
fuente
Es una forma de agregar texto a HTML sin que sea renderizado o normalizado.
No es diferente a agregarlo como:
fuente
<img src="image.jpg">
dentro de un área de texto no hará que el navegador se recupereimage.jpg
, el navegador sabe que el contenido dentro de un área de texto no debe representarse.</script>
no puede usarla dentro de una etiqueta de script, por lo que puede usar el área de texto y viceversa.<script type = “text/template”> … </script>
es obsoleto. Use la<template>
etiqueta en su lugar.fuente
<template>
Internet Explorer todavía no admite la etiqueta a partir de IE 11.<template>
. La mayoría de los principales navegadores de escritorio son compatibles con esta<template>
etiqueta. Recomiendo usarlo a partir de ahora. developer.mozilla.org/en/docs/Web/HTML/Element/…jQuery Templates es un ejemplo de algo que usa este método para almacenar HTML que no se representará directamente (ese es el punto completo) dentro de otro HTML: http://api.jquery.com/jQuery.template/
fuente