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++

    哥德巴赫分解 哥德巴赫猜想认为:不小于4的偶数都可以表示为两个素数的和. 你不需要去证明这个定理,但可以通过计算机对有限数量的偶数进行分解,验证是否可行. 实际上,一般一个偶数会有多种不同的分解方案, ...

  2. C# 数据库连接字符串拼接

    string connectionString = string.Format(@"Data Source={0};User ID={1};Password={2};Initial Cata ...

  3. [Android]Android四大组件之Service总结

    一.Service介绍 Service是Android中实现程序后台运行的解决方案,它非常适合用于去执行那些不需要和用户交互而且还要长期运行的task.Service的运行不需要依赖于任何用户界面,即 ...

  4. echart 初级尝试

    var option = { title: { text: 'ECharts 入门示例'//标题 }, legend: { data:['销量']//图例 }, xAxis: { data: [&qu ...

  5. Linux中/etc/passwd 和 /etc/shadows 详解

    linux操作系统上的用户如果需要登录主机,当其输入用户名和密码之后: 首先在/etc/passwd文件中查找是否有你的账号,如果没有无法登录,如果有的话将该用户的UID和GID读出来,此外将此用户的 ...

  6. CoreCLR源码2

    CoreCLR源码 前一篇我们看到了CoreCLR中对Object的定义,这一篇我们将会看CoreCLR中对new的定义和处理new对于.Net程序员们来说同样是耳熟能详的关键词,我们每天都会用到ne ...

  7. NET Core 1.1 静态文件、路由、自定义中间件、身份验证简介

    NET Core 1.1 静态文件.路由.自定义中间件.身份验证简介   概述 之前写过一篇关于<ASP.NET Core 1.0 静态文件.路由.自定义中间件.身份验证简介>的文章,主要 ...

  8. 安卓H5软键盘遮挡输入框

    由于安卓app内嵌入H5页面,webview对于软键盘没有处理(如果不是产品强烈要求建议不要处理这种拆东墙补西墙的问题,因为其他的手机上可能会出现已经优化软键盘的情况) 1.input下方还有多余空位 ...

  9. P3290 寻找第K大数

    描述 寻找第K大数 N个小朋友在一起做游戏.每个小朋友在自己的硬纸板上写一个数,然后同时举起来.接着,小y老师提一个问题,看哪个小朋友先抢答出来.问题是:在这N个数中,第K大的是哪个数?请你编程完成. ...

  10. SQL SERVER 同一个表并且是同一个时间字段进行相减

    表AID NUM TIEM1 10 2012-06-10 10:10:002 20 2012-06-10 20:10:003 20 2012-06-10 20:10:004 10 2012-06-10 ...