用法:

  • 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. 排查Linux机器是否已经被入侵

    随着开源产品的越来越盛行,作为一个Linux运维工程师,能够清晰地鉴别异常机器是否已经被入侵了显得至关重要,个人结合自己的工作经历,整理了几种常见的机器被黑情况供参考 背景信息:以下情况是在CentO ...

  2. net core 安装web模板

    ---恢复内容开始--- 今天想试试在Linux用C#开发WebAPI,查了下,要用: dotnet new -t Web 来建立工程,结果我试了下,出来这段: Invalid input switc ...

  3. Apache Spark 2.2.0 中文文档 - Spark Streaming 编程指南 | ApacheCN

    Spark Streaming 编程指南 概述 一个入门示例 基础概念 依赖 初始化 StreamingContext Discretized Streams (DStreams)(离散化流) Inp ...

  4. SpringMVC Restful api接口实现

    [前言] 面向资源的 Restful 风格的 api 接口本着简洁,资源,便于扩展,便于理解等等各项优势,在如今的系统服务中越来越受欢迎. .net平台有WebAPi项目是专门用来实现Restful ...

  5. ubuntu下pip的安装和使用

    对于python包的安装而言,需要pip包,对python包资源管理.pip包的安装.对于python2.x和python 3.x 方法不同 : Python 2: sudo dnf upgrade ...

  6. 系统学习java高并发系列三

    转载请注明原创出处,谢谢! 首先需要说说线程安全?关于线程安全一直在提,比如StringBuilder和StringBuffer有什么区别? 经常就会出现关于线程安全与线程非安全,可能一直在提自己没有 ...

  7. 树状数组初步_ZERO

    原博客:树状数组 1 一维树状数组 1 什么是树状数组        树状数组是一个查询和修改复杂度都为log(n)的数据结构,假设数组A[1..n],那么查询A[1]+-+A[n]的时,间是log级 ...

  8. Jenkins定时任务

    Jenkins配置定时任务 选中Job名称--配置—构建触发器—勾选“Build periodically” 如图中配置所示:该任务每天上午7点定时执行一次. 官方说明翻译 MINUTE HOUR D ...

  9. Es6 Promise 用法详解

     Promise是什么??    打印出来看看  console.dir(Promise) 这么一看就明白了,Promise是一个构造函数,自己身上有all.reject.resolve这几个眼熟的方 ...

  10. noip的一些模板(参考了神牛的博客)

    一.图论 1.单源最短路 洛谷P3371 (1)spfa 已加SLF优化 419ms #include <iostream> #include <cstdio> #includ ...