koahub-handlebars

koahub-handlebars

koahub handlebars templates

Installation

$ npm install koahub-handlebars

Use with koa

 var koa = require('koa');
 var hbs = require('koahub-handlebars');
 
 var app = koa();
 
 // koahub-handlebars is middleware. `use` it before you want to render a view 
 app.use(hbs.middleware({
   viewPath: __dirname + '/views'
 }));
 
 // Render is attached to the koa context. Call `this.render` in your middleware 
 // to attach rendered html to the koa response body. 
 app.use(function *() {
   yield this.render('index', {title: 'koahub-handlebars'});
 })
 
 app.listen(3000);
 

Registering Helpers

Helpers are registered using the #registerHelper method. Here is an example using the default instance (helper stolen from official Handlebars docs:

hbs = require('koahub-handlebars');
 
hbs.registerHelper('link', function(text, url) {
  text = hbs.Utils.escapeExpression(text);
  url  = hbs.Utils.escapeExpression(url);
 
  var result = '<a href="' + url + '">' + text + '</a>';
 
  return new hbs.SafeString(result);
});

Your helper is then accessible in all views by using, {{link "Google" "http://google.com"}}

The registerHelperUtils, and SafeString methods all proxy to an internal Handlebars instance. If passing an alternative instance of Handlebars to the middleware configurator, make sure to do so before registering helpers via the koahub-handlebars proxy of the above functions, or just register your helpers directly via your Handlebars instance.

You can also access the current Koa context in your helper. If you want to have a helper that outputs the current URL, you could write a helper like the following and call it in any template as {{requestURL}}.

hbs.registerHelper('requestURL', function() {
  var url = hbs.templateOptions.data.koa.request.url;
  return url;
});

Registering Partials

The simple way to register partials is to stick them all in a directory, and pass the partialsPath option when generating the middleware. Say your views are in ./views, and your partials are in ./views/partials. Configuring the middleware via

app.use(hbs.middleware({
  viewPath: __dirname + '/views',
  partialsPath: __dirname + '/views/partials'
}));

will cause them to be automatically registered. Alternatively, you may register partials one at a time by calling hbs.registerPartial which proxies to the cached handlebars #registerPartial method.

Layouts

Passing defaultLayout with the a layout name will cause all templates to be inserted into the {{{body}}} expression of the layout. This might look like the following.

<!DOCTYPE html>
<html>
<head>
  <title>{{title}}</title>
</head>
<body>
  {{{body}}}
</body>
</html>

In addition to, or alternatively, you may specify a layout to render a template into. Simply specify {{!< layoutName }} somewhere in your template. koahub-handlebars will load your layout from layoutsPath if defined, or from viewPath otherwise.

At this time, only a single content block ({{{body}}}) is supported.

Options

The plan for koahub-handlebars is to offer identical functionality as koa-hbs (eventaully). These options are supported now.

  • viewPath: [required] Full path from which to load templates (Array|String)
  • handlebars: Pass your own instance of handlebars
  • templateOptions: Hash of handlebars options to pass to template()
  • extname: Alter the default template extension (default: '.html')
  • partialsPath: Full path to partials directory (Array|String)
  • defaultLayout: Name of the default layout
  • layoutsPath: Full path to layouts directory (String)
  • disableCache: Disable template caching (default: '.true')

Locals

Application local variables ([this.state](https://github.com/koajs/koa/blob/master/docs/api/context.md#ctxstate)) are provided to all templates rendered within the application.

app.use(function *(next) {
  this.state.title = 'My App';
  this.state.email = 'me@myapp.com';
  yield next;
});

The state object is a JavaScript Object. The properties added to it will be exposed as local variables within your views.

<title>{{title}}</title>
 
<p>Contact : {{email}}</p>

Thanks

koa-hbs

Differents

  1. Configuration file incremental changes
  2. Modify some of the features and the default configuration
  3. ...

官网:http://js.koahub.com

最新文章

  1. 【绝对干货】仿微信QQ设置图形头像裁剪,让你的App从此炫起来~
  2. 【Android】Android属性allowBackup安全风险
  3. 移动端UC /QQ 浏览器的部分私有Meta 属性
  4. JAVA JVM虚拟机选项:Xms Xmx PermSize MaxPermSize 区别
  5. ArrayList 保证多线程安全
  6. linux线程同步(2)-条件变量
  7. C结构体中数据的内存对齐问题
  8. Session超时处理
  9. HTTP协议学习笔记-1
  10. Kendo UI开发教程(9): Kendo UI Validator 概述
  11. Android Data Binding实战(一)
  12. python学习日记(函数进阶)
  13. 单片机成长之路(51基础篇) - 009 关于sdcc的多文件编译范例(一)
  14. spring 之 类型转换 2
  15. 牛客网第一场 A Monotonic Matrix
  16. js 正则函数初级之二
  17. python基础之字符串常用操作总结
  18. 百度搜索推出惊雷算法严厉打击刷点击作弊行为-SEO公司分享
  19. poj_3436 网络最大流
  20. KMP + 求最小循环节 --- HUST 1010 - The Minimum Length

热门文章

  1. HDU-1275-两车追及或相遇问题(数学题目)
  2. window.open a.href打开窗口referer的问题
  3. Eclipse中TODO的分类,以及自动去除
  4. 最简单的Linux虚拟机磁盘扩容方法
  5. windows服务用脚本无法启动
  6. Kafka 0.10 SocketServer源代码分析
  7. c#中读取数据库bit布尔字段数据转换Int和bool时的错误
  8. sonarqube+Scanner代码质量管理工具
  9. QML Object Attributes QML对象属性
  10. 提升iOS审核通过率之“IPv6兼容测试”