一、koa2

const http = require('http');
const compose = require('./compose'); class Koa {
constructor() {
this.ctx = {};
this.middleWares = [];
} use(fn) {
this.middleWares.push(fn);
} handler(ctx, fnMiddleware) {
fnMiddleware(ctx);
} callback() {
const fn = compose(this.middleWares);
const handleRequest = () => {
this.handler(this.ctx, fn);
};
return handleRequest;
} listen(...args) {
const server = http.createServer(this.callback());
server.listen(...args);
}
} module.exports = Koa;

二、compose 中间键组合

function compose(middleWare) {
return function fnMiddleWare(ctx) {
function dispatch(i) {
const fn = middleWare[i];
if (!fn) return Promise.resolve();
try {
return Promise.resolve(fn(ctx, dispatch.bind(null, i + 1)));
} catch (error) {
return Promise.reject(error);
}
}
return dispatch(0);
};
} module.exports = compose;

最新文章

  1. GCD 开发
  2. JavaScript的继承
  3. 求x^0+x^1+x^2+.......x^n mod p; x,n,p<=10^9
  4. Android架构分析之Android消息处理机制(二)
  5. centos7 搭建 docker 环境
  6. [CSS3] Using CSS Combinators to Identify Siblings and Descendants in CSS
  7. Absolute sort
  8. shell 文件中列的整合成一个文件
  9. discuz开发学习
  10. webstorm配置编译sass的输出目录
  11. centos开放端口8080
  12. 《MySQL必知必会》读书笔记_3
  13. 通用权限管理系统之权限菜单zTree树的展示及移动的处理方法
  14. 前后端分离djangorestframework——视图组件
  15. input 手机号
  16. week06 07 创建RPC SERVER 换个镜像安装下载
  17. width:100%和width:auto区别
  18. 用Fiddler抓到的报文Content-Type: application/x-www-form-urlencoded,怎样解析?
  19. 用kubeadm 搭建 高可用集群问题记录和复盘整个过程 - 通过journalctl -u kubelet.service命令来查看kubelet服务的日志
  20. 小程序插入html代码

热门文章

  1. dubbo学习笔记二(服务调用)
  2. echarts图表自适应盒子的大小(盒子的大小是动态改变的),大到需要全屏展示
  3. PIL:处理图像的好模块
  4. epoll机制和简述
  5. 关于tp5.0中对象数组转换普通数组使用助手函数collection而不是toArray
  6. string::erase
  7. 关于Mongodb的其他知识
  8. Java I/O(二)其他常用的输入输出流PrintStream等、标准流重定向
  9. :last-child的坑-CSS3选择器
  10. 各种环境下搭建ruby on rails开发环境