zoukankan      html  css  js  c++  java
  • 微信小程序Mustache语法

    小程序开发的wxml里,用到了Mustache语法。所以,非常有必要把Mustache研究下。

    什么是Mustache?Mustache是一个logic-less(轻逻辑)模板解析引擎,它是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,通常是标准的HTML文档。比如小程序的wxml中的代码:

    {{userInfo.nickName}},这里的{{ }}就是Mustache的语法。

    1、Mustache的模板语法很简单,就那么几个:

    {{keyName}}

    {{{keyName}}}

    {{#keyName}} {{/keyName}}

    {{^keyName}} {{/keyName}}

    {{.}}

    {{!comments}}

    {{>partials}}

    1、{{keyName}}

    ⑴ 简单的变量替换:{{name}}

    var data = { "name": "weChat" };

    Mustache.render("{{name}} is excellent.",data);

    返回 weChat is excellent.

    ⑵ 变量含有html的代码,如:

    、等而不想转义,可以在用{{&name}}

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var data = {
     
           "name" : "
    weChat
    "
     
         };
     
    var output = Mustache.render("{{&name}} is excellent.", data);
     
    console.log(output);

    返回:

    weChat
    is excellent.

     去掉"&"的返回是转义为:

    weChat
    is excellent.

    另外,你也可以用{{{ }}}代替{{&}}。

    ⑶ 若是对象,还能声明其属性

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    var data = {
     
           "name" : {
     
           "first" : "Chen"
     
           "last" : "Jackson"
     
           },
     
           "age" : 18
     
         };
     
    var output = Mustache.render(
     
          "name:{{name.first}} {{name.last}},age:{{age}}", data);
     
    console.log(output);

    返回:name:Chen Jackson,age:18

     2、{{#keyName}} {{/keyName}}

    以#开始、以/结束表示区块,它会根据当前上下文中的键值来对区块进行一次或多次渲染。它的功能很强大,有类似if、foreach的功能。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    var data = {
     
           "stooges" : [ {
     
             "name" : "Moe"
     
           }, {
     
             "name" : "Larry"
     
           }, {
     
             "name" : "Curly"
     
           } ]
     
         };
     
      
     
    var output = Mustache.render("{{#stooges}}{{name}}{{/stooges}}"
     
             data);
     
    console.log(output);

    返回:Moe

          Larry

          Curly

    3、{{^keyName}} {{/keyName}}

    该语法与{{#keyName}} {{/keyName}}类似,不同在于它是当keyName值为null, undefined, false时才渲染输出该区块内容。比如:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var data = {
     
           "name" : "
    weChat
    "
     
         };
     
      var tpl = ‘{{^nothing}}没找到 nothing 键名就会渲染这段{{/nothing}}';
     
      var output = Mustache.render(tpl, data);

    返回:没找到 nothing 键名就会渲染这段

    4、{{.}}

        {{.}}表示枚举,可以循环输出整个数组,例如:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    var data = {
     
      "product": ["Macbook ","iPhone ","iPod ","iPad "]
     
      }
     
      var tpl = '{{#product}}
     
    {{.}}
     
    {{/product}}';
     
      
     
      var html = Mustache.render(tpl, data);

    返回:

    Macbook

    iPhone

    iPod

    iPad

    5、{{!  }}表示注释

    6、{{>partials}}

    以>开始表示子模块,当结构比较复杂时,我们可以使用该语法将复杂的结构拆分成几个小的子模块

  • 相关阅读:
    [ PyQt入门教程 ] Qt Designer工具的使用
    [ PyQt入门教程 ] PyQt5开发环境搭建和配置
    Notepad++提升工作效率小技巧
    思考:测试人员如何快速成长
    Linux /tmp目录下执行脚本失败提示Permission denied
    使用Quartz实现定时任务
    算法篇(前序)——Java的集合
    深入理解 JVM(上)
    Linux集锦
    秒杀系统实现高并发的优化
  • 原文地址:https://www.cnblogs.com/yk123/p/6396751.html
Copyright © 2011-2022 走看看