Koa2基础
安装
1.初始化项目
npm init -y
//-y是初始项目默认所有都是yes,若想另外设置可以直接npm init
2.安装koa2
npm i koa --save
基础用法
1.在文件目录下新建一个index.js,然后写下如下代码:
const Koa = require('koa')
const app = new Koa()
app.use( async(ctx) => {
ctx.body = "hello world"
})
app.listen(3000)
如果想使用import、export用法需要安装babel进行转编译(“babel-core(包括了整个babel工作流)”,“babel-preset-env(比babel-preset-latest好)”,)注意其版本号的对应
babel-loader 8.x | babel 7.x
npm install --save-dev babel-loader @babel/core @babel/preset-env
babel-loader 7.x | babel 6.x
npm install --save-dev babel-loader@7 babel-core babel-preset-env
具体babel的使用可以看看这里
2.运行这个文件:
nodemon index.js
Nodemon,它会监测项目中的所有文件,一旦发现文件有改动,Nodemon 会自动重启应用
3.打开浏览器,输入 http://127.0.0.1:3000 ,看到页面内容有hello world则成功。
4.koa中会经常使用async和await的用法(es7)的内容,如果还没了解过的同学建议去了解学习一下先。
function a(ctx){
return ctx++;
}
async function test() {
let text = await setTimesout(a(1),1000);
console.log(text)
}
console.log('start')
5.koa属性
app.listen(…)
app.listen(3000)
//Koa 应用程序被绑定到 3000 端口
app.callback()
返回适用于 http.createServer() 方法的回调函数来处理请求。你也可以使用此回调函数将 koa 应用程序挂载到 Connect/Express 应用程序中。
app.use(function)
将给定的中间件方法添加到此应用程序。参阅 Middleware 获取更多信息.
app.keys=
设置签名的 Cookie 密钥。
这些被传递给 KeyGrip,但是你也可以传递你自己的 KeyGrip 实例。
例如,以下是可以接受的:
app.keys = ['im a newer secret', 'i like turtle'];
app.keys = new KeyGrip(['im a newer secret', 'i like turtle'], 'sha256');
app.context
app.context 是从其创建 ctx 的原型。您可以通过编辑 app.context 为 ctx 添加其他属性。这对于将 ctx 添加到整个应用程序中使用的属性或方法非常有用,这可能会更加有效(不需要中间件)和/或 更简单(更少的 require()),而更多地依赖于ctx,这可以被认为是一种反模式。
例如,要从 ctx 添加对数据库的引用:
app.context.db = db();
app.use(async ctx => {
console.log(ctx.db);
});
获取请求数据
2.1 Get请求的接收
在Koa2中GET请求可以通过 request 接受收,但接受的方式有两种:
- query:返回的是格式化后的参数对象
- querystring:返回的请求字符串
我们可以由两种方式来获取GET请求,一种是通过 ctx.request 来获取GET请求