让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敕令装置,效果不是最新版本,被坑了。

    原文作者:sagacite
    原文地址: https://segmentfault.com/a/1190000007349550
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞