封装自己的koa--koa剖析

1 篇文章 0 订阅

koa是在express基础上封装起来的,使用起来比express要简单很多

 用express跑一个我们的服务器

const http = require('http');
const serve = http.createServer((req, res) => {
  res.writeHead(200)
  res.end("hello world")
})
serve.listen(8080);

用koa呢?首先要安装一下koa,`cnpm i koa --save`

const Koa = require('koa');
const app = new Koa();
const {
  createReadStream
} = require('fs')


//模块化的写法
app.use(async (ctx, next) => {
  if (ctx.path == '/favicon.ico') {
    ctx.body = createReadStream('./favicon.ico')
  } else {
    await next();
  }
})

app.use(ctx => ctx.body = 'hi koa2')
app.listen(3030)

 

很显然koa比expre的实现更精简!下面自己来实现下koa!!

框架名的话,随便取,这里就取名为kob,为了与koa区别开来。

第一步:新建demo1.js,假设我们的kob已经实现了,可以这样操作

const kob = require('./kob');
const app = new kob();

app.use(() => { //需要完善
  console.log('test')
});

app.listen(4040)

第二部:实现kob.js

//koa实现的主文件
const http = require('http');

//封装一个类
class Kob {
  //类的listen方法
  listen(...args) {
    http.createServer((req, res) => {
      res.writeHead(200);
      res.end("hello,myKoa")
    }).listen(...args)
  }
  //类的use方法
  use(callback) {
    this.callback = callback;
  }

}


//导出这个类
module.exports = Kob;

跑一下demo1.js,正常的话,结果就是下面那样,OK!

 接下来,进行进一步的改造,更加趋向koa框架

新建三个文件,分别是context.js上下文文件,request.js请求文件,response.js响应文件

//context.js
module.export = {
  get url() {
    return this.request.url;
  },
  get body() {
    return this.response._body;
  },
  set body(val) {
    this.response.body = val;
  }
}
//request.js
module.export = {
  get url() {
    return this.request.url;
  }
}
//response.js
module.exports = {
  get body() {
    this._body;
  },
  set body(val) {
    this._body = val;
  }
}

然后再kob.js进行整合

未完待续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值