• 微信 Mustache


    最近微信小程序非常火,对于前端开发的程序员是个利好的消息,这里主要记录下微信小程序  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}}

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

     感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

  • 相关阅读:
    经典哦,男女3.8,8.3
    在web窗体设计器中未能加载该文件
    使用客户端脚本
    C#的数据类型
    实验下cookie
    C#中Split分隔字符串的应用
    未将对象引用设置到对象的实例
    System.StackOverflowException 的异常;jit调试失败
    DataGrid中添加删除确认对话框 多种实现
    常用正则表达式
  • 原文地址:https://www.cnblogs.com/yelongsan/p/6419520.html
Copyright © 2020-2023  润新知