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

相關文章
相關標籤/搜索