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是一个很轻的前端模板引擎,因为之前接手的项目用了这个模板引擎,自己就也继续用了一会觉得还不错,最近项目相对没那么忙,于是就抽了点时间看了一下这个的源码.源码很少,也就只有六百多行,所以 ...
随机推荐
- 02函数-04-箭头函数(ES6)
ES6新增的函数:Arrow Function,定义方式就是一个箭头 箭头函数相当于匿名函数,并且简化了函数定义,和匿名函数最大的区别在于其内部的this不再"乱跑",而是由上下文 ...
- jmeter通过BeanShell 脚本,实现对http请求参数的加密
jmeter一直是一款很好的接口和性能测试工具,它是开源的,不需要为此支付任何费用,而且可以下载源码,可以在修改源代码并在此基础上拓展自己的功能或插件,它可以跟ant和jenkins结合起来搭建自己的 ...
- MyBatis学习(四)XML配置文件之SQL映射的XML文件
SQL映射文件常用的元素: 1.select 查询语句是MyBatis最常用的语句之一. 执行简单查询的select元素是非常简单的: <select id="selectUser&q ...
- String类的源码分析
之前面试的时候被问到有没有看过String类的源码,楼主当时就慌了,回来赶紧补一课. 1.构造器(构造方法) String类提供了很多不同的构造器,分别对应了不同的字符串初始化方法,此处从源码中摘录如 ...
- 一个JavaScript触发器插件,可通过指定频次、指定时间内触发指定的处理函数
js-trigger是一个JavaScript触发器插件,可通过指定频次.指定时间内触发指定的处理函数 Tango<tanwei_yx@126.com> 特性 支持AMD/CMD/Comm ...
- Sublime Text 3 全程详细图文原创教程
Sublime Text 3 全程详细图文原创教程(持续更新中...) 一. 前言 使用Sublime Text 也有几个年头了,版本也从2升级到3了,但犹如寒天饮冰水,冷暖尽自知.最初也是不知道从何 ...
- Bootstrap对齐方式
<p class="text-left">我居左</p> <p class="text-center">我居中</p& ...
- 乐橙谷浅析JAVA程序员就业前景
不知道大家对Java就业前景了解多少.随着信息化的发展,IT培训受倒了越来越多人的追捧.在开发领域,JAVA培训成为了许多人的首选!JAVA应用广泛,JAVA培训就业前景良好!目前,虽然JAVA人才的 ...
- PLT文件 和 DXF文件
PLT: CAM/CAD类似软件处理的图像文件的文件格式 DXF: AutoCAD(Drawing Interchange Format或者Drawing Exchange Format) 绘图交换文 ...
- 【运维】CPU负载
最近对我的本本(4核8线程)用top命令看系统状况出现了CPU利用率超过200%的情况,非常诧异,查了下相关资料,把这个问题弄清楚了.首先来分析下CPU Load load average: 0.09 ...