Mustache 模板引擎

mustache.js 是一个简单强大的 JavaScript 模板引擎,最新版本:https://www.bootcdn.cn/mustache.js/

1. Mustache模版引擎流程

1.1 第一步:定义模板字符串

// js直接定义
var template = ['<ul>', '<li>', '</li>', '</ul> ].join('');
// 或者
<script id="tpl" type="text/html">
    {{name}}
</script>
var template = document.getElementById('tpl').innerHTML.trim();

1.2 第二步:预编译模板

  • 使用静态函数Mustache.parse;
  • 预编译后的 template 已经不是原来的模板字符串了,连接数据类型都变成了数组类型;
Mustache.parse(template);

1.3 第三步:渲染模板

  • 使用 render 函数进行渲染;
  • mustache 会把模板中属性标签替换成与数据源对象属性名相同的属性值;
var rendered = Mustache.render(template, {name: "dennis"})

1.4 第四步:替换 DOM 内容

  • 将渲染后的数据挂载到DOM树上;

2. Mustache标签与语法

2.1 变量:{{prop}}

  • 默认情况下,在渲染该标签时,是对 prop 的原始值进行 URL 编码或者 HTML 编码之后再输出,若要阻止这种编码行为,应该使用 {{{prop}}};
  • 如果 prop 引用的值是 null 或 undefined,则渲染成空串;
  • 如果 prop 引用的是一个函数,则在渲染是自动执行这个函数,并把这个函数返回值作为渲染结果;
  • 其他场景,直接把 prop 引用的值转为字符串作为渲染结果;

2.2 带有 HTML 的变量:{{{arg}}}

2.3 动态渲染:{{#variable}} … {{/variable}}

  • 该标签可以同时完成 if-else 和 for-each 以及动态渲染的模板功能。在这对标签之间,可以定义其他模板内容,嵌套说有标签。
{
    "stooges":[
        {"name":"MOE"},
        {"name":"LARRY"}
    ]
}

{{#stooges}}
    {{name}}
{{/stooges}}

2.4 {{^variable}}…{{/variable}}

  • 这对标签,与{{#variable}} … {{/variable}}的 if-else 渲染执行相反逻辑,即只有在 variable 属性不存在或者引用的是一个 false 值,或者是一个空数组时才会显示标签之间的内容,否则不会显示。

2.5 注解:{{!注解}}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容