Javascript模板引擎:Hogan
hogan.js是一个开源前端模板引擎,无逻辑的设计,简单好用,性能也不错。
使用
引入hogan.js,下载链接:http://www.bootcdn.cn/hogan.js/,然后通过hogan.js语法把模版渲染出来。代码如下:
<script src="hogan.js"></script>
<script>
var data = {
name: "执念"
};
var template = "我的名字:{{name}}"; var hogan = Hogan.compile(template); //Hogan模版对象
var html = hogan.render(data); //结果:我的名字:执念
</script>
模版语法
1、{{keyName}}:
{{}}就是模版的标示符,花括号里的 keyName 表示键名,这句的作用是直接输出与键名匹配的键值,就如上面的例子。
2、{{#keyName}} {{/keyName}}:
以#
开始、以/
结束表示区块,它会根据当前上下文中的键值来对区块进行一次或多次渲染,例如:
var data = {
people: [{
name: "Jack",
age: 18
}, {
name: "Davide",
age: 19
}]
};
var template = "{{#people}}名字:{{name}},年龄:{{age}};{{/people}}"; var hogan = Hogan.compile(template); //Hogan模版对象
var html = hogan.render(data); //结果:名字:Jack,年龄:18;名字:Davide,年龄:19;
{{#keyName}}{{/keyName}}具备简单的判断功能,如果keyName值为null/undefined/false;则不渲染输出任何内容。如:
var data = {
unvisible: false,
visible: true
};
var template = "{{#unvisible}}false;{{/unvisible}}{{#visible}}true{{/visible}}"; var hogan = Hogan.compile(template); //Hogan模版对象
var html = hogan.render(data); //结果:true
3、{{^keyName}} {{/keyName}}:
与{{^keyName}}{{/keyName}}类似,不同在于它是当keyName值为null/undefined/false时才渲染输出该区块内容。如:
var data = {
unvisible: false,
visible: true
};
var template = "{{#unvisible}}false;{{/unvisible}}{{#visible}}true{{/visible}}";
var hogan = Hogan.compile(template); //Hogan模版对象
var html = hogan.render(data); //结果:true
4、{{.}}:
表示枚举,可以循环输出整个数组,如:
var data = {
array: [1,2,3]
};
var template = "{{#array}}数字:{{.}};{{/array}}";
var hogan = Hogan.compile(template); //Hogan模版对象
var html = hogan.render(data); //结果:数字:1;数字:2;数字:3;
5、{{>modular}}:
以">"开始表示子模块,如{{>modular}};当结构比较复杂时,我们可以使用该语法将复杂的结构拆分成几个小的子模块,如:
var data = {
name: "执念",
age: 18,
sex: "男"
};
var template1 = "我的名字:{{name}};{{>age}};{{>sex}};";
var template2 = {
age: "年龄:{{age}}",
sex: "性别:{{sex}}"
}; var hogan = Hogan.compile(template1); //Hogan模版对象
var html = hogan.render(data, template2); //结果:我的名字:执念;年龄:18;性别:男;
6、{{{keyName}}}或者{{&keyName}}:
{{keyName}}输出会将等特殊字符转译,如果想保持内容原样输出可以使用{{{}}}或者{{&}},如:
var data = {
specialChar: "<span>转义</span>"
};
var template = "{{specialChar}}<br />{{{specialChar}}}<br />{{&specialChar}}"; var hogan = Hogan.compile(template); //Hogan模版对象
var html = hogan.render(data); //结果:<span>转义</span><br /><span>转义</span><br /><span>转义</span>
正常的{{specialChar}}被Hogan转义,最终会以纯文本方式显示,而{{{specialChar}}}和{{&specialChar}}中包含的标签依旧正常输出,未转义。
7、{{!notes}}或者<!-- notes -->:
{{!}}表示注释,注释后不会渲染输出任何内容,但是不足之处在于注释内部不能包含mustache变量,否则会不好用。使用HTML的注释,能够注释掉任何内容。
var data = {
notes: "注释"
};
var template = "{{!notes}}"; var hogan = Hogan.compile(template); //Hogan模版对象
var html = hogan.render(data); //结果:"",空字符串
处理复杂数据
Hogan展示的还可以是一个function返回的结果,function可以读取当前变量的上下文来获取其他属性执行其他操作,如:
var data = {
judgements: [{
name: "Jack",
age: 18
},{
name: "Davide",
age: 35
},{
name: "King",
age: 60
}],
ageStage: function() {
if(this.age < 20) {
return "青年"
}
else if(this.age < 40) {
return "中年"
}
else {
return "老人"
}
}
};
var template = "{{#judgements}}{{name}}人生阶段:{{ageStage}};{{/judgements}}"; var hogan = Hogan.compile(template); //Hogan模版对象
var html = hogan.render(data); //结果:Jack人生阶段:青年;Davide人生阶段:中年;King人生阶段:老人;
通过此种方式,可以对复杂的数据进行处理。从上面可以看出,ageStage并不是judgemengs包含的部分,但是可以被使用,这说明只要是data包含的数据,在其他地方也可以被使用。
Javascript模板引擎:Hogan的更多相关文章
- 推荐13款javascript模板引擎
javaScript 在生成各种页面内容时如果能结合一些模板技术,可以让逻辑和数据之间更加清晰,本文介绍 X 款 JavaScript 的模板引擎.(排名不分先后顺序) 1. Mustache 基于j ...
- 各种JS模板引擎对比数据(高性能JavaScript模板引擎)
最近做了JS模板引擎测试,拿各个JS模板引擎在不同浏览器上去运行同一程序,下面是模板引擎测试数据:通过测试artTemplate.juicer与doT引擎模板整体性能要有绝对优势: js模板引擎 Ja ...
- JavaScript模板引擎artTemplate.js——为什么使用模板引擎?
作为一个工作一年的菜鸟,在公司做了几个外包项目,也接触到了不同形式的web开发.其实也没多少,就是javaweb开发和HTML5移动开发,这两者在页面展示的时候的解决方案还是有所不同的. 1.vo+e ...
- 最简单的JavaScript模板引擎
在小公司待久了感觉自己的知识面很小,最近逛博客园和一些技术网站看大家在说JavaScript模版引擎的事儿,完全没有概念,网上一搜这是08年开始流行起来的...本来以为这是很高深的知识,后来在网上看到 ...
- JavaScript模板引擎实例应用
在之前的一篇名为<移动端基于HTML模板和JSON数据的JavaScript交互>的文章中,我向大家说明了为什么要使用JavaScript模板以及如何使用,文末还提到了laytpl.art ...
- JavaScript 模板引擎实现原理解析
1.入门实例 首先我们来看一个简单模板: <script type="template" id="template"> <h2> < ...
- Javascript模板引擎mustache.js详解
mustache.js是一个简单强大的Javascript模板引擎,使用它可以简化在js代码中的html编写,压缩后只有9KB,非常值得在项目中使用.本文总结它的使用方法和一些使用心得,内容不算很高深 ...
- 如何选择Javascript模板引擎(javascript template engine)?
译者 jjfat 日期:2012-9-17 来源: GBin1.com 随着前端开发的密集度越来越高,Ajax和JSON的使用越来越频繁,大家肯定免不了在前台开发中大量的使用标签,常见到的例子如下: ...
- 【JavsScript】推荐五款流行的JavaScript模板引擎
摘要:Javascript模板引擎作为数据与界面分离工作中最重要一环,受到开发者广泛关注.本文通过开发实例解析五款流行模板引擎:Mustache.Underscore Templates.Embedd ...
- Juicer javascript 模板引擎
模板引擎是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档. js模板引擎包括如下:template官方参考:http://au ...
随机推荐
- maven-replacer-plugin
今天多认识了下这个maven插件. 基本用法: <plugin> <groupId>com.google.code.maven-replacer-plugin</grou ...
- Struts2 文件上传和文件下载
一.单个文件上传 文件上传需要两个jar包: 首先制作一个简单的页面,用于实现文件上传 <h1>单个文件上传</h1> <s:form action="uplo ...
- CentOS 安装 Zend Guard Loader
说明:PHP5.3以上的版本不再支持Zend Optimizer,已经被全新的 Zend Guard Loader 取代,下面是安装Zend Guard具体步骤,以下操作均在终端命令行执行 在 Zen ...
- ASP.NET使用Memcached
一.安装Memcached及Memcached配置和状态查询 要想使用Memcached做缓存首先需要安装Memcached服务,安装方法如下: memcached.exe下载 保存至相应路径 打开c ...
- 分布式缓存技术memcached学习(四)—— 一致性hash算法原理
分布式一致性hash算法简介 当你看到“分布式一致性hash算法”这个词时,第一时间可能会问,什么是分布式,什么是一致性,hash又是什么.在分析分布式一致性hash算法原理之前,我们先来了解一下这几 ...
- iOS 自定义的CodeSnippets添加按下tab键切换到指定输入位置
在需要使用tab来选中并输入内容的地方,添加: <#输入待覆盖的内容#>
- UVA567
var i,n,j,k,t:longint;a:array[1..20,1..20]of longint; function min(a,b:longint):longint;begin if a&l ...
- Python中的高级特性
1.切片.使用“[”和“]”即可,类似Matlab,可以切list,tuple,字符串等. 2.迭代.Python内置的enumerate函数可以把一个list变成索引-元素对. 3.列表生成式.列表 ...
- JVM中,对象在内存中的布局
在hotSpot虚拟机中,对象在内存中的布局可以分成对象头.实例数据.对齐填充三部分. 对象头:主要包括: 1.对象自身的运行行元数据,比如哈希码.GC分代年龄.锁状态标志等,这部分长度在32位虚拟机 ...
- IOS 开发调用打电话,发短信
1.调用 自带mail[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://admin@hzl ...