通用模板引擎
mustache.js 用JS对象加工出内容
https://github.com/janl/mustache.js/
logic-less,模板中没有if-else,for-loop,只有标签
调用方法
渲染很简单,提供模板和对象,返回渲染后结果
1 | Mustache.render(template, obj); |
如果多次使用可以预编译模板,会放入内部cache缓存起来
1 | Mustache.parse(template); |
模板可以单独写在script标签内,使用时读出
1 | <script id="template" type="x-tmpl-mustache"> |
1 | let template = document.getElementById('template').innerHTML |
也可以存成单独的.mustache
文件,使用时发送请求模板资源
标签
标准标签是双大括号 {{ }}
,可以采用其他符号自定义标签
- 单次渲染修改
改动渲染函数的第四参数
1 | Mustache.render(template, view, {}, [ '<%', '%>' ]); |
- 全局修改
1 | Mustache.tags = [ '<%', '%>' ]; |
- 模板中修改
1 | {{ default_tags }} |
{{prop}}
模板中标签替换成对象值
如果是值,显示属性值
1 | let obj = { |
如果是函数,先执行函数,再显示函数返回值
1 | let obj = { |
{{ data }}
双大括号是包含HTML转义的, 如果想原样输出可以采用三个括号{{{ data }}}
或者{{ &data }}
1 | let obj = { |
可以直接用.
访问对象嵌套属性
1 | let obj = { |
{{#prop}}{{/prop}}
- if
控制是否渲染
1 | let obj = { |
- for
数组循环渲染
如果是对象数组,可以直接引用当前值的内部属性
1 | let obj = { |
如果是值数组,可以用{{ . }}
表示当前内容
1 | let obj = { |
- 动态扩展
用函数扩展原内容
1 | let obj = { |
{{^prop}}{{/prop}}
反向if逻辑
1 | let obj = { |
{{! This is a comment }}
注释内容,不会进行渲染
{{> partial}}
引用子模板,模块化有助于组合成更加复杂的结构
利用渲染函数第三参数,key是子模板名,value是子模板内容
1 | let obj = { |
一分也是爱~
版权声明
This site by Linest is licensed under a Creative Commons BY-NC-ND 4.0 International License.
由Linest创作并维护的博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。