promise
koa
- 代码编写上避免了多层的嵌套异步函数调用 async await来解决异步
- async await 需要依赖于promise
- 更轻… 减少了内置的中间件 express.static处理静态资源的内置中间件 express.Router() 路由
- 启动步骤
- 引入Koa构造函数对象
const Koa = require('koa')
- 创建服务器示例对象
const app = new Koa();
- 配置中间件
app.use(做什么?)
- 监听端口启动服务器
app.listen(8888);
- 引入Koa构造函数对象
- 做什么? (函数参数说明)
- context上下文对象: 该对象类似原生http中的 req + res
- 该对象的req,res属性也存在,就是原生没有包装过的req,res
- 简单说: context 对象就是从请求到响应 过程中的一个描述对象
- next函数:调用下一个中间件 (当前任务完成可以执行下一个任务)
- context上下文对象: 该对象类似原生http中的 req + res
- request(请求对象): 其中包含客户端请求的相关信息
- response(响应对象): 包含响应数据的具体操作
request常用属性
- ctx.request.url(ctx.url)
- ctx.request.method(ctx.method)
- ctx.request.headers(ctx.headers)
response常用属性
-
ctx.response.set(ctx.set) 函数:参数key,val
-
ctx.response.status(ctx.status)
-
ctx.response.body(ctx.body)
小结
- 以上所有使用的属性,都可以简写 ctx.xxx
- 使用async await的应用场景,如果你出现了异步操作,使用其, 后一个中间件使用了async,前后都使用
- 三主角: 函数前面 async, 内部才能await,要想await能有用,就用promise包裹他
第三方中间件
-
处理请求体 koa-bodyparser
- 非GET请求,比如说post请求 ,包括表单提交的form内的数据,都能轻松获取
- ctx.request.body 获取form中的数据
-
处理路由 koa-router
- 获取查询字符串 ctx.query
- 获取/xxx/:id ctx.params.id
-
koa-bodyparser是解析请求体数据的,koa-router中可以通过ctx.query||ctx.params获取url上的参数
-
处理静态资源 koa-static
-
渲染页面 koa-art-template
- koa与视图通信的对象 ctx.state
-
session中间件 koa_session
- sign:true 会生成一个关于cookie数据保障不被修改的签名,如果数据改了,但是签名还是之前的状态,就说明数据不安全
- app.keys 必须要,内部通过该值进行标识或者说计算
- 操作session ctx.session.xxx