• 微信小程序技术分析: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}}

    var data = {

                 "name" : "
    weChat
    "

             };

    var output = Mustache.render("{{&name}} is excellent.", data);

    console.log(output);

    返回:
    weChat
    is excellent.

     

    去掉"&"的返回是转义为:
    weChat
    is excellent.

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

     

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

    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的功能。

    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时才渲染输出该区块内容。比如:

    var data = {

                 "name" : "
    weChat
    "

             };

        var tpl = ‘{{^nothing}}没找到 nothing 键名就会渲染这段{{/nothing}}’;

        var output = Mustache.render(tpl, data);

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

     

    4、{{.}}

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

        var data = {

        "product": ["Macbook ","iPhone ","iPod ","iPad "]

        }

        var tpl = '{{#product}}

    {{.}}

    {{/product}}';

        var html = Mustache.render(tpl, data);

    返回:

    Macbook

    iPhone

    iPod

    iPad

     

    5、{{!  }}表示注释

    6、{{>partials}}

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

    作者名字:有渔 

    本文链接:http://wxapp.dreawer.com/portal.php?mod=view&aid=135

  • 相关阅读:
    2月1
    20220319 13:41:33
    88888
    Python窗口学习之使窗口变得更高清
    Oracle How To Query If A User Has Execute Privilege on DBMS_LOB
    flume 采集kafka数据到hdfs遇到的问题1
    每日博客
    每日博客
    每日博客
    每日博客
  • 原文地址:https://www.cnblogs.com/wxapp/p/5994769.html
Copyright © 2020-2023  润新知