Acabei de me deparar com algo que nunca vi antes. Na fonte do aplicativo TODO de exemplo do Backbone.js ( Exemplo do TODO do Backbone ), eles tinham seus modelos dentro de um <script type = "text/template"></script>
, que continha um código que se parece com algo fora do PHP, mas com tags JavaScript.
Alguém pode me explicar isso? Isso é legítimo?
type="text/tcl"
que eu vi no documento do W3C ? Como usá-lo? (Devo fazer outra pergunta?)Respostas:
Essas tags de script são uma maneira comum de implementar a funcionalidade de modelos (como no PHP), mas no lado do cliente.
Ao definir o tipo como "texto / modelo", não é um script que o navegador possa entender e, portanto, o navegador simplesmente o ignora. Isso permite que você coloque qualquer coisa lá, que pode ser extraído posteriormente e usado por uma biblioteca de modelos para gerar trechos de HTML.
O backbone não força você a usar nenhuma biblioteca de modelos em particular - existem algumas por aí: bigode , haml , eco , modelo do Google Closure e assim por diante (a usada no exemplo ao qual você vinculou é underscore.js ). Eles usarão sua própria sintaxe para você escrever nessas tags de script.
fonte
.innerHTML
, portanto, é prática comum agora entre os mecanismos de modelagem.<template />
marcar. html5rocks.com/en/tutorials/webcomponents/template & caniuse.com/#search=template<template>
está aqui, mas os sites ainda estão usando essa técnica, como o reddit.com. : FÉ legítimo e muito útil!
Tente o seguinte:
Várias bibliotecas de modelos Javascript usam essa técnica. O Handlebars.js é um bom exemplo.
fonte
Ao definir uma tag de script
type
diferente detext/javascript
, o navegador não executará o código interno da tag de script. Isso é chamado de micro modelo. Esse conceito é amplamente usado no aplicativo de página única (também conhecido como SPA).Para micro modelo, o tipo da tag de script é
text/template
. Isso é muito bem explicado pelo criador do Jquery, John Resig, http://ejohn.org/blog/javascript-micro-templating/fonte
Para adicionar à resposta do Box9:
O Backbone.js depende do underscore.js, que implementa os microtemplates originais de John Resig.
Se você decidir usar o Backbone.js com o Rails, verifique a gema Jammit. Ele fornece uma maneira muito limpa de gerenciar o empacotamento de ativos para modelos. http://documentcloud.github.com/jammit/#jst
Por padrão, o Jammit também usa os microtemplates do JResig, mas também permite substituir o mecanismo de modelagem.
fonte
É uma maneira de adicionar texto ao HTML sem que seja renderizado ou normalizado.
Não é diferente de adicioná-lo como:
fonte
<img src="image.jpg">
dentro de uma área de texto não fará com que o navegador seja buscadoimage.jpg
, o navegador sabe que o conteúdo dentro de uma área de texto não deve ser renderizado.</script>
você não poderá usá-lo dentro de uma tag de script; portanto, você poderá usar a área de texto e vice-versa.<script type = “text/template”> … </script>
é obsoleto. Use a<template>
tag.fonte
<template>
tag ainda não é suportado pelo Internet Explorer a partir de IE 11.<template>
. A maioria dos principais navegadores de desktop suportam essa<template>
tag. Eu recomendo fortemente usá-lo a partir de agora. developer.mozilla.org/en/docs/Web/HTML/Element/…O jQuery Templates é um exemplo de algo que usa esse método para armazenar HTML que não será renderizado diretamente (esse é o ponto principal) dentro de outro HTML: http://api.jquery.com/jQuery.template/
fonte