Hogan的安装和使用


通过npm安装hogan:

npm install hogan.js --save-dev

CommonJs下的使用方式:

// 引入hogan
var hogan = require('hogan.js'); // 渲染所需模板
var template = '<div>Hey! I am {{name}}!</div>'; // 渲染所需数据
var data = {
name : 'Rosen'
}; // 模板的编译
var compiledTemplate = hogan.compile(template); // 模板的渲染
var result = compiledTemplate.render(data); // 输出结果
console.log(result); // output: <div>Hey! I am Rosen!</div>

这里要注意一下,npm里还有一个叫hogan的组件,是对hogan.js做的一个套壳的包装,同学们如果使用hogan出错的话,可以换成这里的hogan.js,还是原厂的好!除了引用名称,其他用法都是完全一样的。

Hogan语法


{{name}}

// 数据:
{ name : 'Rosen' }; // 模板:
<div>Hey! I am {{name}}!</div> // 结果:
<div>Hey! I am Rosen!</div>

这就是读取一个变量,假如name是个html片段,这里会对html编码,如果放到dom里,就显示成了一段html代码。

{{{name}}}

// 数据:
{ name : '<span color="red">Rosen</span>' }; // 模板
<div>Hey! I am {{{name}}}!</div> // 结果
<div>Hey! I am <span color="red">Rosen</span>!</div>

大括号能怎么样?还是读取一个变量,只不过name是个html片段的话,这里不对html编码,放在dom里就是一段dom。

{{#list}} {{/list}}

这个老复杂了,是个循环呢,吓死老衲了!当然#标记还可以当做bool型的判断。

// 数据:
{
list : [
{name : 'Rosen'},
{name : 'JIM'}
],
isRosen : true
} // 数组型用法:
{{#list}}
<span>{{name}}</span>
{{/list}} // bool型用法:
{{#isRosen}}我就是Rosen啊!{{/isRosen}} // 数组型结果:
<span>Rosen</span><span>JIM</span> // bool型结果:
我就是Rosen啊!

{{^list}} {{/list}}

这货和上一个是相反的,就是非的逻辑。如果列表为空,或者非真值都会进这个分支,其中包括false,null,undefined,0什么的。

// 数据:
{
list : [],
isRosen : false
} // 数组型用法:
{{^list}}
这列表抠搜的,啥玩意都没有!
{{/list}} // bool型用法:
{{^isRosen}}谁是Rosen? 不认识!{{/isRosen}} // 数组型结果:
这列表抠搜的,啥玩意都没有! // bool型结果:
谁是Rosen? 不认识!

{{.}}

代表枚举类型里的当前元素,枚举类型没有索引名,只能用{{.}}

// 数据:
{
list : ['Rosen', 'JIM']
} // {{.}}用法:
{{#list}}
<span>{{.}}</span>
{{/list}} // 结果:
<span>Rosen</span><span>JIM</span>

{{!}}

我就是个注释,知道你们都不乐意用我

// 用法:
{{! 楼下是二货}}
<span>我最厉害!</span> // 执行结果:
<span>我最厉害!</span>

这些就是hogan的常用语法,还有个引入片段的语法基本用不到,这里就不讲了。

然后会是什么呢?然后就没有然后了,就这些!

总结:Hogan,不就这么几句


{{data}} 转义的变量

{{{data}}} 不转义的变量

{{#list}} {{/list}} 列表循环 / 真值判断

{{^list}} {{/list}} 空列表 / 非真值判断

{{.}} 枚举的当前元素

{{!}} 我是注释

作者: Rosen_Gao 
链接:http://www.imooc.com/article/18493
来源:慕课网

Hogan的安装和使用的更多相关文章

  1. Nodejs学习笔记(五)--- Express安装入门与模版引擎ejs

    目录 前言 Express简介和安装 运行第一个基于express框架的Web 模版引擎 ejs express项目结构 express项目分析 app.set(name,value) app.use ...

  2. (二)、NodeJS 、Express4安装使用方法

    第一步:安装Nodejs 第二步:安装express等部件 1.打开命令窗口,安装express.jade npm install -g express npm install -g express- ...

  3. Node 之 Express 学习笔记 第一篇 安装

    最近由于工作不忙,正好闲暇时间学学基于 node 的 web开发框架. 现在关于web开发框架除了Express 还有新出的 KOA以及其它一些. 但是想想还是先从 Express 入手吧.因为比较成 ...

  4. 安装4.x版本的express开发框架

    错误版本(未更新前的安装方法,更新后就不是这么安装了,好多网上的教程还是这种方法,所以这里先写明了,旧版这里是可以通过的,但是新版4.x就不行了,请用分割线下边的方法)   本文演示在Linux上安装 ...

  5. Express安装入门与模版引擎ejs

    Express安装入门与模版引擎ejs 目录 前言 Express简介和安装 运行第一个基于express框架的Web 模版引擎 ejs express项目结构 express项目分析 app.set ...

  6. npm 配置和安装 express4.X 遇到的问题及解决

    前言:懒得看前面两篇介绍的也可以从本节直接参考,但建议最好了解下,因为 4.X 的express 已经把命令行工具分离出来 (链接https://github.com/expressjs/genera ...

  7. Express全系列教程之(一):Express的安装 和第一个程序

    前言 ndoe.js,一个基于javsscript运行环境的服务器语言,它的出现使得javascript有能力去实现服务器操作.在gitHub上ndoe.js的star数已接近6万,可见其受欢迎程度: ...

  8. Nodejs学习笔记(五)—Express安装入门与模版引擎ejs

    前言 前面也学习了一些Node.js的基本入门知道,现在开始进入Web开发的部分: Node.js提供了http模块,这个模块中提供了一些底层接口,可以直接使用,但是直接开发网站那还是太累了,所以ht ...

  9. nodeJS学习(3)--- npm 配置和安装 express4.X 遇到的问题及解决

    前言:懒得看前面两篇介绍的也可以从本节直接参考,但建议最好了解下,因为 4.X 的express 已经把命令行工具分离出来 (链接https://github.com/expressjs/genera ...

随机推荐

  1. C/C++<算法>进制转换超详细

    16转10 用竖式计算: 16进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方 第0位: 5 * 16^0 = 5 第1位: F * 16^1 = 240 第 ...

  2. 74cms漏洞分析

    很早以前的一个洞,看到很有意思就拿来看看 这是雨曾经审过的一个洞,因为读取方式很特别复现了一下 upload\plus\weixin.php public function responseMsg() ...

  3. 前端JavaScript(2) --常用内置对象,函数,伪数组 arguments,关于DOM的事件操作,DOM介绍

    昨日内容回顾 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ...

  4. oracle查询语句大全 oracle 基本命令大全

    oracle查询语句大全 oracle 基本命令大全 来源于:http://download.csdn.net/download/jia584643753/5875619 1.create user ...

  5. 对jvm虚拟机 内存溢出的思考

    java内存溢出:当新产生对象时,新生代空间不够,导致无法申请到足够的空间,报内存溢出 内存泄漏:一些静态集合,静态常量没有被gc清理,越来越多,占用内存,最后导致无法申请到新的空间

  6. 关于Memcache的连接

    addServer 在说Memcache的长连接(pconnect)和短连接(connect)之前要先说说Memcache的addServer,Memcache的addServer是增加一个服务器到连 ...

  7. c#ADSL拨号类

    class ADSLHelper { /// <summary> ///拨号 /// </summary> /// <param name="connectio ...

  8. AJPFX关于Java中运用数组的四种排序方法

    JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法.冒泡法.选择排序法.插入排序法.快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现.冒泡法是运用遍历数组进行比 ...

  9. Ajax简单实例(基于jQuery)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  10. 使用 Kendo UI 库实现对象的继承

    使用 Kendo UI 库实现对象的继承 javaScript 也是一种面向对象的开发语言,但和 C++,Java,C# 所不同的是,它的对象不是基于类(Class),而是基于对象原型(ProtoTy ...