如何在HTML页面中正确存储HTML模板?

Dhr*_*hak 10 javascript mustache

我有一些小模板字符串,它们将通过同一页面上的Mustache.js呈现.我不需要为模板创建单独的html文件.

存储模板的选项:

  1. 存储在javascript变量中:破解多行字符串,大量转义引号.

  2. 存储为隐藏div的innerHTML.

我尝试了方法#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>
Run Code Online (Sandbox Code Playgroud)

这个日志:

{{#name_list}}
  {{name}} 
{{/name_list}}
<table class="table"><tbody><tr><td></td></tr></tbody></table>
Run Code Online (Sandbox Code Playgroud)

代替 :

  <table class="table">
                     {{#name_list}}
                      <tr><td> {{name}} </td></tr>
                    {{/name_list}}
  </table>
Run Code Online (Sandbox Code Playgroud)

这可能是由于浏览器进行了一些标记更正.在HTML页面中存储HTML模板有哪些其他好的技巧?

Ros*_*Nab 22

我将它们存储在脚本标记中,因此它们不会被渲染,如下所示:

<script id="abc-template" type="text/html">
    <h1>{{name}}</h1>
</script>
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样引用它们:

var template = $('#abc-template').html();
var html = Mustache.to_html(template, data);
$('#abc-div').html(html);
Run Code Online (Sandbox Code Playgroud)


And*_*mpi 6

使用<script>标签非常适用于此:

<script id="tableTemplate" type="text/html">
  <table class="table">
    {{#name_list}}
    <tr><td> {{name}} </td></tr>
    {{/name_list}}
  </table>
</script>
Run Code Online (Sandbox Code Playgroud)

它实际上是一个替代品,它将与您合作 var template = $('#tableTemplate').html();