zoukankan      html  css  js  c++  java
  • Mustache模板引擎

    Mustache是一个Logic-Less模板引擎,即:零逻辑引擎,原因在于它只有标签,没有流程控制语句,这是它与其它模板引擎不同的地方。
    Mustache小巧玲珑,几乎用各种语言都实现了一遍。

    Mustache的用途

    不仅仅用于HTML页面渲染,也可以用于配置文件、XML渲染等各种文本文件。

    第一个例子

    一个典型的mustache文件如下:

    Hello {{name}}
    You have just won {{value}} dollars!
    {{#in_ca}}
    Well, {{taxed_value}} dollars, after taxes.
    {{/in_ca}}
    

    给定一个哈希表:

    {
      "name": "Chris",
      "value": 10000,
      "taxed_value": 10000 - (10000 * 0.4),
      "in_ca": true
    }
    

    将会产生如下结果:

    Hello Chris
    You have just won 10000 dollars!
    Well, 6000.0 dollars, after taxes.
    

    Mustache只有5种标签,就是这么简单

    变量标签

    {{username}}
    默认情况下,username中的<等符号会被转义为&lt;
    防止转义使用{{&username}}或者使用{{{username}}}

    区块标签

    {{#sectionVariable}}
    这里是区块
    {{/sectionVariable}}

    区块变量可以取四种数据类型:
    1、 false或者空数组:不显示区块内容
    2、 非空数组:表示迭代数组中的每一项

    Template:
    
    {{#repo}}
      <b>{{name}}</b>
    {{/repo}}
    Hash:
    
    {
      "repo": [
        { "name": "resque" },
        { "name": "hub" },
        { "name": "rip" }
      ]
    }
    Output:
    
    <b>resque</b>
    <b>hub</b>
    <b>rip</b>
    

    如果区块直接是一个字符串列表

    View:
    
    {
      "musketeers": ["Athos", "Aramis", "Porthos", "D'Artagnan"]
    }
    Template:
    
    {{#musketeers}}
    * {{.}}
    {{/musketeers}}
    
    结果:
    * Athos
    * Aramis
    * Porthos
    * D'Artagnan
    

    3、函数:调用一次函数

    Template:
    
    {{#wrapped}}
      {{name}} is awesome.
    {{/wrapped}}
    Hash:
    
    {
      "name": "Willy",
      "wrapped": function() {
        return function(text, render) {
          return "<b>" + render(text) + "</b>"
        }
      }
    }
    Output:
    
    <b>Willy is awesome.</b>
    

    4、字典类型:控制上下文

    Template:
    
    {{#person?}}
      Hi {{name}}!
    {{/person?}}
    Hash:
    
    {
      "person?": { "name": "Jon" }
    }
    Output:
    
    Hi Jon!
    

    反转区块标签:用于实现else结构

    Template:
    
    {{#repo}}
      <b>{{name}}</b>
    {{/repo}}
    {{^repo}}
      No repos :(
    {{/repo}}
    Hash:
    
    {
      "repo": []
    }
    Output:
    
    No repos :(
    

    注释标签

    {{!这里随便写点注释}}

    包含标签

    {{>head.mustache}}
    Mustache的包含是动态包含,而不是简单地复制粘贴。

    我所知道的其它模板引擎

    java模板引擎

    freemarker
    velocity
    beetl
    smarty4j
    httl

    各种语言:
    mustuche

    参考资料

    官方文档
    Python版
    Java版

  • 相关阅读:
    hdu4331 Image Recognition 就暴力啊。。啊。。
    [置顶] ASP.Net中服务器控件的生命周期
    Windows下通过脚本快速修改IP地址
    java对象转json应clone,避免生成json串有问题
    Oracle表空间常用操作
    redhat5安装jdk6、eclipse和tomcat6
    Oracle 表的常见操作
    一道来自华为的C机试题目
    [置顶] 获取系统时间的方法--linux
    html5 命运之轮生产
  • 原文地址:https://www.cnblogs.com/weiyinfu/p/7087543.html
Copyright © 2011-2022 走看看