Koa2学习之旅----koa基础

npm i koa

服务器启动文件

const Koa = require('koa');

// 热重载:  supervisor
npm i -g supervisor
// npm i supervisor

supervisor app.js

客户端从发请求到看到内容

服务器:接收到请求(request)-> 处理请求,生成数据 -> 发送数据(response)

Koa: request -> middleware -> response

koa处理了request和response,我们需要做的是注册(编写)middleware
const Koa = require('koa')
const app = new Koa()
app.use((ctx, next) => {
  ctx.body = '<strong />koa'
  next()
})
app.listen(8080, () => {
  console.log('app is runing 8080')
})

  Application

  当前应用程序对象,即 new Koa() 得到的实例对象,保存了应用全局状态以及其他对象,后面的ContextReqeustResponse对象都是该对象下的子对象

  - .listen()

  - .use(callback)

中间件

  - .use(callback)

  - callback(context, next)

  - context 对象

  每一次请求都会包装一个context对象

  - next

  每一个中间件都是一个迭代器

  - 异步中间件

  .use(async callback)

 

错误处理

  - app.on('error', err => {})

 

context 对象

  每一次请求都会包装一个 context 对象

  该对象对 node request response 对象进行了封装(加强了node中的requestresponse

  同时提供了其他一些有用的 api

  koa 会把 context 传入到中间件函数的第一个参数中

  可以对context进行扩展,并在中间件中使用

 

 

context 对象

  - .reqNode request 对象

  - .resNode response 对象

  注意:在 Koa 中尽量使用Koa提供的封装对象

  - .requestKoa request 对象

  - .responseKoa response 对象

  - .state:用户数据存储空间

  - .app:当前应用程序实例 - Application 对象

======================================================================

const Koa = require('koa')
const app = new Koa()
app.use((ctx, next) => {
  ctx.body = '<strong />koa'
  next()
})
app.use((ctx, next) => {
  let n = Math.random()
  // ctx.n = n
  ctx.state.n = n
  next()
})
app.use((ctx, next) => {
  // 不推荐这种直接取上个中间件值的做法,虽然可以取得到
  // console.log(ctx.n)
  // 而应该用这种命名空间的写法
  console.log(ctx.state.n)
})
app.listen(8080, () => {
  console.log('app is runing 8080')
})
const Koa = require('koa')
const app = new Koa()
app.use((ctx, next) => {
  ctx.body = '<strong />koa'
  next()
})
app.use((ctx, next) => {
  let n = Math.random()
  ctx.n = n
  next()
})
app.use((ctx, next) => {
  // 不推荐这种直接取上个中间件值的做法,虽然可以取得到
  console.log(ctx.n)
})
app.listen(8080, () => {
  console.log('app is runing 8080')
})

猜你喜欢

转载自blog.csdn.net/qfxlw/article/details/83855350
今日推荐