hbs模块 mysql_让koa-hbs模块支持koa2

个人比较喜欢handlebars渲染,不喜欢ejs、jade之类,因此在试验koa2开发时,第一时间就想到集成koa-hbs模块!

koa-hbs模块来自https://github.com/gilt/koa-hbs

问题是,该模块不支持koa2,就支持koa1

那么咱就出动koa-convert模块来进行转换……可是,仍然有问题。关键点在于ctx.render方法仍然是个generator函数。

这难不倒咱,翻一下koa-convert模块的源码,有样学样,用下面的办法解决之:

const hbs = require('koa-hbs');

const convert = require('koa-convert');

const co = require('co');

app.use(convert(hbs.middleware({

viewPath: __dirname + '/views',

partialsPath: __dirname + '/views/partials'

})));

app.use(async (ctx, next) => {

ctx.render_ = ctx.render;

ctx.render = function (tpl, locals) {

return co.call(ctx, ctx.render_(tpl, locals));

}

await next();

})

另外,如果不用koa-hbs模块,而是用支持koa2的koa-views模块,必须用最新的5.1.2版本(此文章发表时的最新版本),或更高的版本:

npm i koa-views@5.1.2

我在一开始时使用npm i koa-views@next命令安装,结果不是最新版本,被坑了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值