swift 之 mustache模板引擎
用法:
Variable Tags
{{name}}
用来渲染值namedatas: let data = ["value": "test"] -----------
template: {{value}} a lession -----------
rendering: test a lession
Section Tags
{{#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
{{^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
{{>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
{{<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
{{=<% %>=}}
, 让你改变标签分隔符。
Comment Tags
{{! Wow. Such comment. }}
, 注释
paragma Tags
{{% CONTENT_TYPE:TEXT }}
{{% CONTENT_TYPE:HTML }}
swift 之 mustache模板引擎的更多相关文章
- JS模板引擎-Mustache模板引擎使用实例1-表格树
1 使用实例代码 1.jsp代码 <!DOCTYPE html> <html lang="zh-CN"> <head> <title> ...
- Mustache模板引擎
Mustache是一个Logic-Less模板引擎,即:零逻辑引擎,原因在于它只有标签,没有流程控制语句,这是它与其它模板引擎不同的地方. Mustache小巧玲珑,几乎用各种语言都实现了一遍. Mu ...
- nodejs+Express中使用mustache模板引擎
由于公司一个seo项目,需要我协助.此项目他人已经开发大半,由于seo需要,使用了服务器端模板引擎.我项目的后端同事说项目是go语音写的,跑项目麻烦,只给了我template和css等静态文件. 为了 ...
- 前端数据渲染及mustache模板引擎的简单实现
早期数据渲染的几种方式 在模板引擎没有诞生之前,为了用JS把数据渲染到页面上,诞生了一系列数据渲染的方式. 最最基础的,莫过于直接使用DOM接口创建所有节点. <div id="roo ...
- js模板引擎mustache介绍及实例
在Javascript中 mustache.js是实现mustache模板系统. Mustache是一种没有逻辑的模板语法.它可以应用于HTML.配置文件.源代码等任何地方. 它通过使用散列或对象中提 ...
- 【转】在Express项目中使用Handlebars模板引擎
原文:http://fraserxu.me/2013/09/12/Using-Handlebarsjs-with-Expressjs/ 最近在用Expressjs做一个项目,前后端都用它来完成.自己之 ...
- Handlebars的基本用法 Handlebars.js使用介绍 http://handlebarsjs.com/ Handlebars.js 模板引擎 javascript/jquery模板引擎——Handlebars初体验 handlebars.js 入门(1) 作为一名前端的你,必须掌握的模板引擎:Handlebars 前端数据模板handlebars与jquery整
Handlebars的基本用法 使用Handlebars,你可以轻松创建语义化模板,Mustache模板和Handlebars是兼容的,所以你可以将Mustache导入Handlebars以使用 Ha ...
- Javascript模板引擎mustache.js详解
mustache.js是一个简单强大的Javascript模板引擎,使用它可以简化在js代码中的html编写,压缩后只有9KB,非常值得在项目中使用.本文总结它的使用方法和一些使用心得,内容不算很高深 ...
- Mustache.js前端模板引擎源码解读
mustache是一个很轻的前端模板引擎,因为之前接手的项目用了这个模板引擎,自己就也继续用了一会觉得还不错,最近项目相对没那么忙,于是就抽了点时间看了一下这个的源码.源码很少,也就只有六百多行,所以 ...
随机推荐
- Java main方法继承
java中main方法是可以继承的 Test1.java package Variables; public class Test1 { public static void main(String[ ...
- Log Reservation
本文是在阅读<SQL Server Transaction Log Management>的Chapter 2: Log Internals时发现以往对Log Grows的理解比较片面,大 ...
- mongodb 与关系型数据库
设计 MongDB 模式时应注意的问题 根据用户需求来设计模式. 如果想一起使用对象,请将这些对象合并到一个文档中,否则要将它们分开(但是要确保不需要连接). 经常复制数据(但要有一定限度),因为与计 ...
- mongoDB rs和sh关键字的作用
rs是一个全局变量,其其中定义了很多分片操作的辅助函数, 可以sh.help()查看使用的辅助函数 这些是rs和sh所有函数 在mongoDB中有两种方法表示 例 sh.enableSharding( ...
- [UIKit学习]03.关于UILable
代码创建UILabel UILabel *label = [[UILabel alloc] init]; label.text = @"单肩包"; label.frame = CG ...
- Sql Server——数据的增删改
所谓数据的增删改就是在创建好数据库和表后向表中添加数据.删除表中的数据.更改表中的一些数据. 新增数据: 语法一: insert into 表名 values (数据内容) --这里需要 ...
- 集群提交spark任务命令
>>spark-submit --class WordCount DataMining.jar /dept_ana/part-00000 /dept_ana/output/wordCou ...
- Ubuntu12.04 Firefox安装flash
1. 实验环境 Ubuntu 14.04x86 2.安装步骤 2.1 浏览器访问:https://get.adobe.com/flashplayer/?loc=cn 2.2 网址会自动识别ubuntu ...
- flex的三个属性:
(1)flex-grow:指的是相对于其他的子元素的扩展比率:默认值为0:数字 (2)flex-basis:指的是子元素的具体长度:可以为长度(rem,px,em)也可以为百分比: (3)flex-s ...
- 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 ...