const stream = require('stream');
const webpackHot = require('webpack-hot-middleware');
const PassThrough = stream.PassThrough;
module.exports = ({compiler, others}) => {
const middleware = webpackHot(compiler, others);
return async (ctx, next) => {
const res = Object.assign({}, ctx.res);
const streamInstance = new PassThrough();
streamInstance.on('data', chunk => {
if(chunk && global.cache &&global.cache.updateCache){
global.cache.updateCache();
}
});
ctx.body = streamInstance;
await middleware(
ctx.req,
Object.assign(res, {
write: streamInstance.write.bind(streamInstance),
writeHead: (
status ,
headers,
) => {
ctx.status = status;
ctx.set(headers);
},
end: (content) => {
ctx.body = content || 'devMiddleWare no body';
},
}),
next
) }
}

webpackHotMiddleware改造成koa支持的中间件的更多相关文章

  1. koa 基础(十一)koa 中 koa-bodyparser 中间件获取表单提交的数据

    1.app.js /** * koa 中 koa-bodyparser 中间件获取表单提交的数据 * 1.npm install --save koa-bodyparser * 2.引入 const ...

  2. koa 中,中间件异步与同步的相关问题

    同步中间件很容易理解,如以下代码: const Router = require('koa-router') , koa = new Router({ prefix: '/koa' }) , fs = ...

  3. 魔改——MFC SDI 支持 内嵌 EXCEL OLE

    ==================================声明================================== 本文版权归作者所有 未经作者授权 请勿转载 保留法律追究的 ...

  4. 3-5 第三天 Koa 和 Express 中间件

    Koa和Express这两个框架除了在接收请求和返回数据方面有非常通用.好用的封装以外,最有价值的地方就是它们有自己的中间件机制,所以说中间件可以看做是流水线上一个又一个的加工房间,每个加工的房间都只 ...

  5. 改修jquery支持cmd规范的seajs

    手动包装jquery1.10.2,firebug说$没有定义 define(function (require, exports, module) {//jquery源码module.exports= ...

  6. Koa - 中间件(理解中间件、实现一个验证token中间件)

    前言 Koa 应用程序是一个包含一组中间件函数的对象,它是按照类似堆栈的方式组织和执行的. 当一个中间件调用 next() 则该函数暂停并将控制传递给定义的下一个中间件.当在下游没有更多的中间件执行后 ...

  7. nextjs作为koa中间件的使用

    react客户端渲染的缺点:首屏速度慢,对SEO不友好 浏览器请求步骤                                                        客户端跳转 1. ...

  8. 深入探析koa之中间件流程控制篇

    koa被认为是第二代web后端开发框架,相比于前代express而言,其最大的特色无疑就是解决了回调金字塔的问题,让异步的写法更加的简洁.在使用koa的过程中,其实一直比较好奇koa内部的实现机理.最 ...

  9. 高吞吐koa日志中间件

    Midlog中间件 node服务端开发中少不了日志打点,而在koa框架下的日志打点在多进程环境中日志信息往往无法对应上下文,而且在高并发下直接进行写buffer操作(内核调用writev)也会造成内存 ...

  10. 咏南中间件+开发框架支持最新的DELPHI 10.2 TOKYO

    咏南中间件+开发框架支持最新的DELPHI 10.2 TOKYO 价格十分优惠.有意者请向本人索取演示程序! 你只需花一套中间件的价格,就可获得:中间件,CS开发框架一套(赠送),BS开发框架一套(赠 ...

随机推荐

  1. 你不能只会flex居中布局,精制动画讲解所有flex布局方式!通俗易懂纯干货教程!...

    flex布局相信很多人都已经有不少了解,其优势和作用被越来越多的开发者所喜爱,网上也有很多关于关于flex的介绍和教程.但是根据笔者的面试经验发现,很多人尤其是初中级开发者对flex布局都仅仅停留下c ...

  2. ssm框架下的拦截器过滤静态资源以及拦截jsp

    这篇文章如果能给你带来帮助 不胜荣幸,如果有错误 ,欢迎批评指正,共同进步. 今天啊搭了一个ssm的框架 虽然说现在大部分都在使用shiro权限,可是正如mybatis.hibernate和jdbc的 ...

  3. 复习第6点-6.SpringMVC作用域传值

    作用域范围 对象名称 作用范围 application 整个作用范围 session 在当前会话中有效 request 在当前请求中有效 page 在当前页面有效 request/session/ap ...

  4. DP5340:国产兼容替代CS5340立体声音频A/D转换器芯片

    DP5340简介 DP5340 是一款完整的采样.模数音频信号转换. 抗混叠滤波的芯片,在串行格式下以每声道最高 200kHz 采样率高达 24 位宽,并支持大部分的音频 数据格式. DP5340 基 ...

  5. GPT和MBR分区格式

    目前市面上磁盘有两个格式,一种是GPT(Master Boot Record)分区一种是MBR(Master Boot Record)分区. 像UEFI用于取代老旧的BIOS,而GPT则为的是取代老旧 ...

  6. jQuery对象和js对象是怎样转换的?

    两种转换方式将一个jQuery对象转换成js对象:[index]和.get(index); (1)jQuery对象是一个数据对象,可以通过[index]的方法,来得到相应的js对象. 如:var $v ...

  7. (一)用go实现单链表

    本篇,我们用go简单的实现单链表这种数据结构. 1.节点定义 type Node struct{ data int next *Node } 2.节点的添加 // 尾插法插入节点 func (p *N ...

  8. 【根文件系统 】开发板通过nfs挂载ubuntu上的根文件系统

    在此基础上制作可用的根文件系统:https://www.cnblogs.com/hengqiu/p/15908597.html 1.ubuntu搭建nfs服务器 sudo apt-get instal ...

  9. idea的操作快捷键

    IDEA调试快捷键 F8 跳到下一步 相当于eclipse的F6 F7 进入到方法 相当于eclipse 的F7 F9 恢复程序到下一个断点 相当于eclispe的 进入下一个断点 shift+F8 ...

  10. uniapp引入腾讯云直播助手插件

    在uniapp开发小程序,引入腾讯云直播助手插件 1.在manifest.json文件中,找到微信小程序特有相关,声明要使用的插件 /* 小程序特有相关 */ "mp-weixin" ...