Explicación de


Me topé con algo que nunca había visto antes. En la fuente de la columna Vertebral.la aplicación TODO de ejemplo de js (Backbone TODO Example) tenían sus plantillas dentro de un <script type = "text/template"></script>, que contenía código que se parece a algo de PHP pero con etiquetas JavaScript.

¿Puede alguien explicarme esto? ¿Esto es legal?

Author: Jim Hunziker, 2011-02-06

7 answers

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 puede ser extraída más tarde y utilizada por una biblioteca de plantillas para generar fragmentos HTML.

Backbone no te obliga a usar ninguna biblioteca de plantillas en particular - hay bastante pocos por ahí: Bigote, Haml, Eco,Google Closure template , y así sucesivamente (la que se usa en el ejemplo al que se ha vinculado es underscore.js). Estos usarán su propia sintaxis para que escribas dentro de esas etiquetas de script.

 381
Author: David Tang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-21 09:35:13

Es de fiar y muy práctico!

Prueba esto:

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

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

 103
Author: Rimian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-28 00:37:13

Al establecer la etiqueta de script type que no sea text/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 una sola página (también conocida como SPA).

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

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

 21
Author: Fizer Khan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-17 05:33:25

Para añadir a la respuesta del recuadro 9:

Backbone.js depende del subrayado.js, que implementa las microtemplas originales de John Resig.

Si decide usar Backbone.js con Rails, asegúrate de echar un vistazo a la gema Jammit. Proporciona una forma muy limpia de administrar el empaquetado de activos para las plantillas. http://documentcloud.github.com/jammit/#jst

De forma predeterminada, Jammit también usa microtempladas de JResig, pero también le permite reemplazar el motor de plantillas.

 13
Author: Andrew De Andrade,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-23 22:16:06

Es una forma de agregar texto a HTML sin que sea renderizado o normalizado.

No es diferente de agregarlo como:

 <textarea style="display:none"><span>{{name}}</span></textarea>
 12
Author: Kernel James,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-19 03:34:41

<script type = “text/template”> … </script> es obsoleto. Utilice la etiqueta <template> en su lugar.

 7
Author: Reza Salarmehr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-30 13:05:16

JQuery Templates es un ejemplo de algo que usa este método para almacenar HTML que no se renderizará directamente (ese es el punto) dentro de otro HTML: http://api.jquery.com/jQuery.template /

 3
Author: Niels Heidenreich,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-21 08:02:17