swift 之 mustache模板引擎

用法:html

  • Variable Tagsgit

    1. {{name}} 用来渲染值namegithub

      datas: 
      
       let data = ["value": "test"]
      
       -----------
       template:
      
       {{value}} a lession 
      
       -----------
       rendering:
      
       test a lession
  • Section Tagsswift

    1. {{#items}}...{{/items}} 执行条件语句,枚举出里面的对象app

      • 按需渲染数据
      • 遍历数据
      • 获取里面的每一项

      若是{{value}}...{{/value}}中的value错误的(下面的),那么将不会被渲染:
      1. 缺乏值
      2. false
      3. 0
      4. 字符串
      5. 空集合
      6. 为NSNullless

      若是value 是集合的话ide

      datas: 
       [
         "friends": [
           [ "name": "Hulk Hogan" ],
           [ "name": "Albert Einstein" ],
           [ "name": "Tom Selleck" ],
         ]
       ]
      
       -------------
      
       template:
       {{# friends }}
       - {{ name }}
       {{/ friends }}
      
       -------------
       rendering:
      
       - Hulk Hogan
       - Albert Einstein
       - Tom Selleck

      上面所说的集合能够是Arrays,ranges, sets, NSArray, NSSet等code

      其余值既不是falsey, 也不是collection,那么这个块就会被渲染一次:htm

      datas:
       [
         "user": [
           "name": "Mario"
           "score": 1500
         ]
       ]
      
       -------------
       template:
       {{# user }}
       - {{ name }}
       - {{ score }}
       {{/ user }}
      
       --------------
       rendering:
       - Mario
       - 1500
    2. {{^items}}...{{/items}} 对应于上方的对立面对象

      data: 
       [
         "persons": []
       ]
      
       --------------
       template: 
       {{# persons }}
       - {{name}} is {{#alive}}alive{{/alive}}{{^alive}}dead{{/alive}}.
       {{/ persons }}
       {{^ persons }}
       Nobody
       {{/ persons }}
      
       -------------
       rendering: 
       Nobody
      
       --------------
       data:
       [
         "persons": [
           ["name": "Errol Flynn", "alive": false],
           ["name": "Sacha Baron Cohen", "alive": true]
         ]
       ]
       ---------------
       rendering: 
       - Errol Flynn is dead.
       - Sacha Baron Cohen is alive.
  • Partial Tags

    1. {{>partial}} , 嵌入其余模块

      douc.mustanche
       Guests:
       {{# guests }}
         {{> person }}
       {{/ guests }}
      
       --------------
       person.mustache
       {{ name }}
      
       -------------
       data: 
       [
         "guests": [
           ["name": "Frank Zappa"],
           ["name": "Lionel Richie"]
         ]
       ]
      
       --------------
       rendering:
       Guests:
       - Frank Zappa
       - Lionel Richie
  • Partial Override Tags

    1. {{<layout}}...{{/layout}}, 模板继承

      layout.mustache // title , 和content 能够被覆盖
       <html>
       <head>
           <title>{{$ title }}Default title{{/ title }}</title>
       </head>
       <body>
           <h1>{{$ title }}Default title{{/ title }}</h1>
           {{$ content }}
               Default content
           {{/ content }}}
       </body>
       </html>
      
       ---------------
       article.mustuche:
      
       {{< layout }}
      
           {{$ title }}{{ article.title }}{{/ title }}
      
           {{$ content }}
               {{{ article.html_body }}}
               <p>by {{ article.author }}</p>
           {{/ content }}
      
       {{/ layout }}
      
       ---------------
       data:
      
       [
           "article": [
               "title": "The 10 most amazing handlebars",
               "html_body": "<p>...</p>",
               "author": "John Doe"
           ]
       ]
      
       ----------------
       rendering:
      
       <html>
       <head>
           <title>The 10 most amazing handlebars</title>
       </head>
       <body>
           <h1>The 10 most amazing handlebars</h1>
           <p>...</p>
           <p>by John Doe</p>
       </body>
       </html>

      {{$ title }}...{{/ title }}每次都会被渲染,而且只被渲染一次, no boolean checks, no collection iteration.

      一个模板能够包含不少partial override tags

      避免循环

  • Set Delimiters Tags

    1. {{=<% %>=}}, 让你改变标签分隔符。
  • Comment Tags

    1. {{! Wow. Such comment. }} , 注释
  • paragma Tags

    {{% CONTENT_TYPE:TEXT }}
      {{% CONTENT_TYPE:HTML }}

参考:GRMustache.swift

相关文章
相关标签/搜索