KoaHub平台基于Node.js开发的Koa的模板系统handlebars插件代码详情
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 registerHelper
, Utils
, 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 handlebarstemplateOptions
: Hash of handlebars options to pass totemplate()
extname
: Alter the default template extension (default:'.html'
)partialsPath
: Full path to partials directory (Array|String
)defaultLayout
: Name of the default layoutlayoutsPath
: 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
Differents
- Configuration file incremental changes
- Modify some of the features and the default configuration
- ...
代码地址:http://js.koahub.com/home/feature/koahub-handlebars
KoaHub平台基于Node.js开发的Koa的模板系统handlebars插件代码详情的更多相关文章
- KoaHub平台基于Node.js开发的Koa的get/set session插件代码详情
koa-session2 Middleware for Koa2 to get/set session use with custom stores such as Redis or mongodb ...
- KoaHub平台基于Node.js开发的Koa 连接支付宝插件代码信息详情
KoaHub平台基于Node.js开发的Koa 链接支付宝插件代码信息详情 easy-alipay alipay payment & notification APIs easy-alipay ...
- KoaHub平台基于Node.js开发的Koa的简单包装到请求库的类似接口
co-request co-request promisify wrapper for request co-request Simple wrapper to the request library ...
- KoaHub平台基于Node.js开发的Koa JWT认证插件代码信息详情
koa-jwt Koa JWT authentication middleware. koa-jwt Koa middleware that validates JSON Web Tokens and ...
- KoaHub平台基于Node.js开发的Koa的调试实用程序
debug small debugging utility debug tiny node.js debugging utility modelled after node core's debugg ...
- KoaHub平台基于Node.js开发的Koa的连接MongoDB插件代码详情
koa-mongo MongoDB middleware for koa, support connection pool. koa-mongo koa-mongo is a mongodb midd ...
- KoaHub平台基于Node.js开发的Koa的rewrite and index support插件代码详情
koa-static-server Static file serving middleware for koa with directory, rewrite and index support k ...
- KoaHub平台基于Node.js开发的Koa的skip插件代码详情
koahub-skip koahub skip middleware koahub skip Conditionally skip a middleware when a condition is m ...
- KoaHub平台基于Node.js开发的Koa router路由插件代码信息详情
koa-router Router middleware for koa. Provides RESTful resource routing. koa-router Router mid ...
随机推荐
- Servlet的请求HttpServletRequest
一.从容器到HttpServlet 1.web容器作了什么 web容器做的事情就是,创建Servlet实例,并完成Servlet的名称注册及URL模式的对应.在请求来到时,web容器会转发给正确的Se ...
- Oracle 11gR2 RAC ohasd failed to start 解决方法
rcrCRS-4124: Oracle High Availability Services startup failed. CRS-4000: Command Start failed, or co ...
- jQuery 处理TextArea
jQuery 处理TextArea: $('#btn001').click(function(e) { console.log("btn001Click"); var cmt = ...
- Flex中操作XML的E4X方法
用于处理 XML 的 E4X 方法 Flash Player 9 和更高版本,Adobe AIR 1.0 和更高版本 ECMAScript for XML 规范定义了一组用于使用 XML 数据的类 ...
- 理解FMS中的实例
FMS服务器端安装后,唯一需要注意的是设置端口,默认的访问端口是1935和80,如果服务器上安装了IIS提供 WEB服务,那么需要将80修改为其他端口如8080,否则,IIS将会无法工作.如果愿意,也 ...
- Bootstrap入门(二十)组件14:警告框
Bootstrap入门(二十)组件14:警告框 警告框组件通过提供一些灵活的预定义消息,为常见的用户动作提供反馈消息,提示.通知或者警示,可以迅速吸引注意力. 1.情景警告框 2.可关闭的警告框 3. ...
- 老司机教你下载tumblr上视频和图片的正确姿势
本文面向初学者. 很多同学问我:“我非常想学Python编程,但是找不到兴趣点”. 还有的同学呢,找到了很好的兴趣点,但是无从下手,“玄魂老师,我想下载tumblr上的视频, 怎么下载,Python能 ...
- 使用Grafana 展示Docker容器的监控图表并设置邮件报警规则
一.Docker 容器监控报警方式 接着上篇文章的记录,看到grafana的版本已经更新到4.2了,并且在4.0以后的版本中,加入了Alert Notifications 功能,这样在对容器 监控完, ...
- 最快让你上手ReactiveCocoa之基础篇(简称RAC)
前言 很多blog都说ReactiveCocoa好用,然后各种秀自己如何灵活运用ReactiveCocoa,但是感觉真正缺少的是一篇如何学习ReactiveCocoa的文章,小编看了很多篇都没看出怎么 ...
- windows下Visual Studio Code 1.9安装
点击送你去官网下载vs code 进入下载页面如下 下载完成双击安装 安装完成打开之后如下图,最新版的默认中文就挺好的! 注意下面是微软建议: Note: .NET Framework 4.5.2 i ...