用法:

  • Variable Tags

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

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

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

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

      如果{{value}}...{{/value}}中的value错误的(下面的),那么将不会被渲染:

      1. 缺少值

      2. false

      3. 0

      4. 字符串

      5. 空集合

      6. 为NSNull

      如果value 是集合的话

       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等

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

       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

swift 之 mustache模板引擎的更多相关文章

  1. JS模板引擎-Mustache模板引擎使用实例1-表格树

    1 使用实例代码 1.jsp代码 <!DOCTYPE html> <html lang="zh-CN"> <head> <title> ...

  2. Mustache模板引擎

    Mustache是一个Logic-Less模板引擎,即:零逻辑引擎,原因在于它只有标签,没有流程控制语句,这是它与其它模板引擎不同的地方. Mustache小巧玲珑,几乎用各种语言都实现了一遍. Mu ...

  3. nodejs+Express中使用mustache模板引擎

    由于公司一个seo项目,需要我协助.此项目他人已经开发大半,由于seo需要,使用了服务器端模板引擎.我项目的后端同事说项目是go语音写的,跑项目麻烦,只给了我template和css等静态文件. 为了 ...

  4. 前端数据渲染及mustache模板引擎的简单实现

    早期数据渲染的几种方式 在模板引擎没有诞生之前,为了用JS把数据渲染到页面上,诞生了一系列数据渲染的方式. 最最基础的,莫过于直接使用DOM接口创建所有节点. <div id="roo ...

  5. js模板引擎mustache介绍及实例

    在Javascript中 mustache.js是实现mustache模板系统. Mustache是一种没有逻辑的模板语法.它可以应用于HTML.配置文件.源代码等任何地方. 它通过使用散列或对象中提 ...

  6. 【转】在Express项目中使用Handlebars模板引擎

    原文:http://fraserxu.me/2013/09/12/Using-Handlebarsjs-with-Expressjs/ 最近在用Expressjs做一个项目,前后端都用它来完成.自己之 ...

  7. Handlebars的基本用法 Handlebars.js使用介绍 http://handlebarsjs.com/ Handlebars.js 模板引擎 javascript/jquery模板引擎——Handlebars初体验 handlebars.js 入门(1) 作为一名前端的你,必须掌握的模板引擎:Handlebars 前端数据模板handlebars与jquery整

    Handlebars的基本用法 使用Handlebars,你可以轻松创建语义化模板,Mustache模板和Handlebars是兼容的,所以你可以将Mustache导入Handlebars以使用 Ha ...

  8. Javascript模板引擎mustache.js详解

    mustache.js是一个简单强大的Javascript模板引擎,使用它可以简化在js代码中的html编写,压缩后只有9KB,非常值得在项目中使用.本文总结它的使用方法和一些使用心得,内容不算很高深 ...

  9. Mustache.js前端模板引擎源码解读

    mustache是一个很轻的前端模板引擎,因为之前接手的项目用了这个模板引擎,自己就也继续用了一会觉得还不错,最近项目相对没那么忙,于是就抽了点时间看了一下这个的源码.源码很少,也就只有六百多行,所以 ...

随机推荐

  1. Java main方法继承

    java中main方法是可以继承的 Test1.java package Variables; public class Test1 { public static void main(String[ ...

  2. Log Reservation

    本文是在阅读<SQL Server Transaction Log Management>的Chapter 2: Log Internals时发现以往对Log Grows的理解比较片面,大 ...

  3. mongodb 与关系型数据库

    设计 MongDB 模式时应注意的问题 根据用户需求来设计模式. 如果想一起使用对象,请将这些对象合并到一个文档中,否则要将它们分开(但是要确保不需要连接). 经常复制数据(但要有一定限度),因为与计 ...

  4. mongoDB rs和sh关键字的作用

    rs是一个全局变量,其其中定义了很多分片操作的辅助函数, 可以sh.help()查看使用的辅助函数 这些是rs和sh所有函数 在mongoDB中有两种方法表示 例 sh.enableSharding( ...

  5. [UIKit学习]03.关于UILable

    代码创建UILabel UILabel *label = [[UILabel alloc] init]; label.text = @"单肩包"; label.frame = CG ...

  6. Sql Server——数据的增删改

    所谓数据的增删改就是在创建好数据库和表后向表中添加数据.删除表中的数据.更改表中的一些数据. 新增数据: 语法一: insert into 表名 values (数据内容)        --这里需要 ...

  7. 集群提交spark任务命令

    >>spark-submit --class WordCount  DataMining.jar /dept_ana/part-00000 /dept_ana/output/wordCou ...

  8. Ubuntu12.04 Firefox安装flash

    1. 实验环境 Ubuntu 14.04x86 2.安装步骤 2.1 浏览器访问:https://get.adobe.com/flashplayer/?loc=cn 2.2 网址会自动识别ubuntu ...

  9. flex的三个属性:

    (1)flex-grow:指的是相对于其他的子元素的扩展比率:默认值为0:数字 (2)flex-basis:指的是子元素的具体长度:可以为长度(rem,px,em)也可以为百分比: (3)flex-s ...

  10. Another app is currently holding the yum lock; waiting for it to exit 解决方法

    Another app is currently holding the yum lock; waiting for it to exit... The other application is: P ...