资讯专栏INFORMATION COLUMN

让koa-hbs模块支持koa2

huaixiaoz / 3214人阅读

摘要:个人比较喜欢渲染,不喜欢之类,因此在试验开发时,第一时间就想到集成模块模块来自问题是,该模块不支持,就支持那么咱就出动模块来进行转换可是,仍然有问题。

个人比较喜欢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命令安装,结果不是最新版本,被坑了。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/80733.html

相关文章

  • 从segmentfault爬数据到 用koa2,vue全家桶,mongodb开发一个segmentf

    摘要:注意网站中用的所有技术可以交流学习不要以线上环境运行,因为源码中没有包含相关文件中的,授权登陆需要自己配置账号密码只有读取权限交流群 前言 线上环境小包总 showImg(https://segmentfault.com/img/bVTvhf?w=1297&h=763); 技术栈 服务器: node、koa2 客户端: vue、vuex、vue-router、Element-UI 数...

    ChristmasBoy 评论0 收藏0
  • 从segmentfault爬数据到 用koa2,vue全家桶,mongodb开发一个segmentf

    摘要:注意网站中用的所有技术可以交流学习不要以线上环境运行,因为源码中没有包含相关文件中的,授权登陆需要自己配置账号密码只有读取权限交流群 前言 线上环境小包总 showImg(https://segmentfault.com/img/bVTvhf?w=1297&h=763); 技术栈 服务器: node、koa2 客户端: vue、vuex、vue-router、Element-UI 数...

    aaron 评论0 收藏0
  • learning koa1.x

    摘要:定义框架前端开发框架,它是一款基于语法的网页端开发框架。它类似于框架,可以快速开发服务,方便快捷。 定义 koa框架 web前端开发框架,它是一款基于es6语法的网页端开发框架。它类似于express框架,可以快速开发服务,方便快捷。 api手册http://koa.bootcss.com/ 开发实战篇 首先,创建package.json 使用版本为1.x npm init #依赖 d...

    gaosboy 评论0 收藏0
  • KOA2框架原理解析和实现

    摘要:实现的四大模块上文简述了源码的大体框架结构,接下来我们来实现一个的框架,笔者认为理解和实现一个框架需要实现四个大模块,分别是封装创建类构造函数构造对象中间件机制和剥洋葱模型的实现错误捕获和错误处理下面我们就逐一分析和实现。 什么是koa框架?        koa是一个基于node实现的一个新的web框架,它是由express框架的原班人马打造的。它的特点是优雅、简洁、表达力强、自由度...

    tracymac7 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<