• 微信小程序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}}

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

  • 相关阅读:
    Caused by: java.lang.ClassNotFoundException: org.dom4j.DocumentException
    Android-Launcher开发之ShortCut(1)
    墨菲定律、二八法则、马太效应、手表定理、“不值得”定律、彼得原理、零和游戏、华盛顿合作规律、酒与污水定律、水桶定律、蘑菇管理原理、钱的问题、奥卡姆剃刀等13条是左右人生的金科玉律
    Java利用jcifs集成AD域用户认证
    Python_生成測试数据
    怎样设计接口?
    一道关于CSS选择器优先级的题
    hibernate的orphanRemoval
    js实现表格配对小游戏
    amazeui中内置的web组件有哪些且如何用
  • 原文地址:https://www.cnblogs.com/yk123/p/6396751.html
Copyright © 2020-2023  润新知