webpackHotMiddleware改造成koa支持的中间件
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支持的中间件的更多相关文章
- koa 基础(十一)koa 中 koa-bodyparser 中间件获取表单提交的数据
1.app.js /** * koa 中 koa-bodyparser 中间件获取表单提交的数据 * 1.npm install --save koa-bodyparser * 2.引入 const ...
- koa 中,中间件异步与同步的相关问题
同步中间件很容易理解,如以下代码: const Router = require('koa-router') , koa = new Router({ prefix: '/koa' }) , fs = ...
- 魔改——MFC SDI 支持 内嵌 EXCEL OLE
==================================声明================================== 本文版权归作者所有 未经作者授权 请勿转载 保留法律追究的 ...
- 3-5 第三天 Koa 和 Express 中间件
Koa和Express这两个框架除了在接收请求和返回数据方面有非常通用.好用的封装以外,最有价值的地方就是它们有自己的中间件机制,所以说中间件可以看做是流水线上一个又一个的加工房间,每个加工的房间都只 ...
- 改修jquery支持cmd规范的seajs
手动包装jquery1.10.2,firebug说$没有定义 define(function (require, exports, module) {//jquery源码module.exports= ...
- Koa - 中间件(理解中间件、实现一个验证token中间件)
前言 Koa 应用程序是一个包含一组中间件函数的对象,它是按照类似堆栈的方式组织和执行的. 当一个中间件调用 next() 则该函数暂停并将控制传递给定义的下一个中间件.当在下游没有更多的中间件执行后 ...
- nextjs作为koa中间件的使用
react客户端渲染的缺点:首屏速度慢,对SEO不友好 浏览器请求步骤 客户端跳转 1. ...
- 深入探析koa之中间件流程控制篇
koa被认为是第二代web后端开发框架,相比于前代express而言,其最大的特色无疑就是解决了回调金字塔的问题,让异步的写法更加的简洁.在使用koa的过程中,其实一直比较好奇koa内部的实现机理.最 ...
- 高吞吐koa日志中间件
Midlog中间件 node服务端开发中少不了日志打点,而在koa框架下的日志打点在多进程环境中日志信息往往无法对应上下文,而且在高并发下直接进行写buffer操作(内核调用writev)也会造成内存 ...
- 咏南中间件+开发框架支持最新的DELPHI 10.2 TOKYO
咏南中间件+开发框架支持最新的DELPHI 10.2 TOKYO 价格十分优惠.有意者请向本人索取演示程序! 你只需花一套中间件的价格,就可获得:中间件,CS开发框架一套(赠送),BS开发框架一套(赠 ...
随机推荐
- ShareWAF 软件&云形态安装部署说明
一.常用文件说明sharewaf.js:主程序daemon.js:主程序守护程序oem.js:OEM 定制文件developer.js:二次开发接口rules.js:自定义规则文件regexp.js: ...
- Neo4j删除节点和关系、彻底删除节点标签名(转载备忘)
https://www.jianshu.com/p/59bd829de0de 总结提前: [1]先删关系,再删节点 [2]当记不得关系名时,type(r)可以查到关系名 [3]彻底删除节点标签名,需要 ...
- c++练习270题:三角形个数
*270题 原题传送门:http://oj.tfls.net/p/270 题解: #include<bits/stdc++.h>using namespace std;int a,b,c, ...
- .net5 winform 打开文件夹
直接使用System.Diagnostics.Process.Start("路径"),有可能会包拒绝访问的异常,建议采用以下写法: var newPath="" ...
- C语言中关于宏定义的学习
1.C语言中宏定义的使用 2.GCC官方文档 3.C语言宏定义的几个坑和特殊用法
- 有关谷歌下载PDF文件而不是直接打开预览的问题
找了很多帖子,都不行, 解决方法把链接处理成blob文件再调用下载. 但是仍然不行,最终原因找到: 缺少了这一部创建,需要把二进制数据重新用 Blob对象申明下 let data = new Blob ...
- JetCache源码整理
- docker私有镜像仓库搭建(简)
1.装包 yum install docker-registry 2.启动服务 systemctl start docker-distribution 3.打标自己的镜像 docker tag mys ...
- Python 自动化中三种等待时间的详解
1.强制等待 强制等待是最简单的一种等待方式,强制让浏览器等待X秒,不管当前操作是否完成,是否可以进行下一步操作,都必须等X秒的时间. 使用方法:time.sleep(X) .在python中是基于t ...
- 安装指定版本homeassistant
pip3 install homeassistant==0.84.5