一、安装
# 项目初始化
npm init -y
# 安装koa2
npm i koa2
二、入口文件
在项目根目录创建 app.js
文件,并在上一步操作中生成的 package.json
里配置:
package.json
{
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node app.js"
},
}
app.js
const Koa = require('koa2');
const app = new Koa();
const port = 9000;
/*
解释下面这段代码:
app.use()方法是:将给定的中间件方法添加到此应用程序。简单说就是调用中间件
app.use() 返回 this, 因此可以链式表达
*/
app.use(async (ctx)=>{
ctx.body = "Hello, Koa";
// ctx.body是ctx.response.body的简写
})
app.listen(port, ()=>{
console.log('Server is running at http://localhost:'+port);
})
三、洋葱模型
const Koa = require('koa2');
const app = new Koa();
const port = 9000;
app.use(async (ctx, next)=>{
console.log(1)
await next();
console.log(1)
})
app.use(async (ctx, next)=>{
console.log(2)
await next();
console.log(2)
})
app.use(async (ctx)=>{
console.log(3)
})
app.listen(port, ()=>{
console.log('Server is running at http://localhost:'+port);
})
//输出
1
2
3
2
1
四、路由中间件
npm i koa-router
const Koa = require('koa2');
const Router = require('koa-router');
const app = new Koa();
const router = new Router();
const port = 9000;
router.get('/', async (ctx)=>{
ctx.body = "首页";
})
router.get('/list', async (ctx)=>{
ctx.body = "列表页";
})
app.use(router.routes(), router.allowedMethods());
app.listen(port, ()=>{
console.log('Server is running at http://localhost:'+port);
})
备注:
// 调用router.routes()来组装匹配好的路由,返回一个合并好的中间件
// 调用router.allowedMethods()获得一个中间件,当发送了不符合的请求时,会返回 `405 Method Not Allowed` 或 `501 Not Implemented`
allowedMethods方法可以做以下配置:
app.use(router.allowedMethods({
// throw: true, // 抛出错误,代替设置响应头状态
// notImplemented: () => '不支持当前请求所需要的功能',
// methodNotAllowed: () => '不支持的请求方式'
}))
五、路由拆分
1、基础使用
抽取出一个list路径
2、路由重定向
把/重定向到/home
router.redirect('/', '/home');