Как правильно хранить HTML-шаблон на HTML-странице?
у меня есть несколько небольших строк шаблона, которые будут отображаться через усы.JS на той же странице.Мне не нужно создавать отдельные HTML-файлы для шаблоны.
опции для хранения шаблонов:
хранение в переменных javascript: хакерские многострочные строки, много экранирования кавычек.
хранение как innerHTML скрытых divs.
я попробовал Метод#2, но он, похоже, не работает правильно.
Скрипка: http://jsfiddle.net/RHwnq/2/
<html>
<head></head>
<body>
<div id='templates' class='hide' align="">
<div id='tableTemplate'>
<table class="table">
{{#name_list}}
<tr><td> {{name}} </td></tr>
{{/name_list}}
</table>
</div>
</div>
<script>
var template = $('#tableTemplate').html();
console.log(template);
</script>
</body>
</html>
Это журналы :
{{#name_list}}
{{name}}
{{/name_list}}
<table class="table"><tbody><tr><td></td></tr></tbody></table>
вместо :
<table class="table">
{{#name_list}}
<tr><td> {{name}} </td></tr>
{{/name_list}}
</table>
это может быть связано с некоторой коррекцией разметки браузером. Каковы другие хорошие приемы для хранения HTML-шаблонов на HTML-странице ?
3 ответов
Я храню их в теге скрипта, поэтому они не отображаются, например:
<script id="abc-template" type="text/html">
<h1>{{name}}</h1>
</script>
затем вы можете ссылаться на них такой:
var template = $('#abc-template').html();
var html = Mustache.to_html(template, data);
$('#abc-div').html(html);
используя <script>
теги отлично подходит для этого:
<script id="tableTemplate" type="text/html">
<table class="table">
{{#name_list}}
<tr><td> {{name}} </td></tr>
{{/name_list}}
</table>
</script>
это на самом деле замена drop-in, она будет работать с вашим var template = $('#tableTemplate').html();
В зависимости от вашей IDE вы можете или не можете получить подсветку синтаксиса HTML в <script></script>
блоки. Я использую div
блок, как вы сделали, но добавить
#templates {display: none;}
в CSS.