在koa的使用中,必修的一个应用是:
const Koa = require('koa'); //引入koa框架
const app = new Koa(); // new 一个app 对象
app.use(async ctx => {
ctx.body = 'Hello World'; //返回页面文本
});
app.listen(3000); //启动端口
根据原理,我们也可以新建一个类似的源码
class Kao {
//跟koa中的listen语法一样,
listen(...args){
const server = http.createServer((req, res) => {
//创建上下文
const ctx = this.createContent(req, res)
//执行use里面的函数
this.callback(ctx)
res.end(ctx.body)
});
return server.listen(...args)
}
//跟koa中的use一样
use(callback) {
this.callback = callback; //将回调函数绑定在callback上面
}
//这一步的目的是将req, res给挂载到一个对象上面,这样在使用的时候,我们只需要使用ctx这一个对象就可以了!
createContent(req, res) {
const ctx = Object.create({}) //新建一个ctx对象
ctx.req = req; //给ctx对象挂载一个req属性
ctx.res = res; //给ctx对象挂载一个res属性
return ctx //将ctx对象返回出去
}
}
// 下面代码为运行代码
let app = new Koa();
app.use(ctx => {
ctx.body = "hello body"
})
app.listen(3000, "localhost", () => {
console.log("启动成功")
});
用node app.js命令运行这个文件,就可以看到我们页面出现"hello body"
总结:
1、use函数执行是在listen启动后,node返回了req, res信息后,我们将这两个信息封装到一个ctx对象中。
2、在执行use回调函数中,回调的参数就只有一个ctx。这时候,我们就执行这个回调函数。
3、res.end(ctx.body) 为输出到页面的node用法。
网友评论