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. 053 Maximum Subarray 最大子序和

    给定一个序列(至少含有 1 个数),从该序列中寻找一个连续的子序列,使得子序列的和最大.例如,给定序列 [-2,1,-3,4,-1,2,1,-5,4],连续子序列 [4,-1,2,1] 的和最大,为 ...

  2. SpringMVC对HTTP报文体的处理

     客户端和服务端HTTP报文传递消息,而HTTP报文包含报文头和报文体.通常,解析请求参数以及返回页面都不需要我们关心HTTP报文体的读取和生成过程.但在某些特定场景下需要直接到请求报文中读取报文体, ...

  3. 开源分布式Job系统,调度与业务分离-如何创建周期性的HttpJob任务

    项目介绍: Hangfire:是一个开源的job调度系统,支持分布式JOB!! Hangfire.HttpJob 是我针对Hangfire开发的一个组件,该组件和Hangfire本身是独立的.可以独立 ...

  4. Dev控件工具箱安装

    安装目录\Components\Tools,打开命令行 安装DEV工具 $ ToolboxCreator.exe /ini:toolboxcreator.ini 移除DEV工具 $ ToolboxCr ...

  5. Hi,bro

    这是我第一次写部落格,也是我刚开始学python,希望我以后能把To Do List 做好,也希望大家可以好好学习,为了以后good life去努力,Do SomeThing OK?

  6. JavaScript 函数(方法)

    1 定义 1.1 函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块. 语法: 函数就是包裹在大括号中的代码块,前面使用了关键词 function function 方法名(参数列表){ 代码 ...

  7. win7 dos窗口模拟帧刷新

    前几天是白色情人节,临时脑抽写了个表白神器 高端大气上档次,就是不知道该送给谁,经过两天的反射弧思考决定还是写给博客娘吧.- -~ 这个程序就是打开后,在Dos窗口内模拟写出几行字母.其实主要就是模拟 ...

  8. android配置android studio not found target android-*.的问题

    列:not found target android-25, 打开下载android SDK的工具栏,找到android-25版本下载到你本地的sdk路径下就OK了.

  9. getuser

    Help on function getuser in module getpass: getuser()    Get the username from the environment or pa ...

  10. UVA 1599, POJ 3092 Ideal Path 理想路径 (逆向BFS跑层次图)

    大体思路是从终点反向做一次BFS得到一个层次图,然后从起点开始依次向更小的层跑,跑的时候选则字典序最小的,由于可能有多个满足条件的点,所以要把这层满足条件的点保存起来,在跑下一层.跑完一层就会得到这层 ...