美文网首页
koa知识点整理

koa知识点整理

作者: 龚达耶 | 来源:发表于2019-04-05 17:16 被阅读0次
    • 什么是Koa?

    Koa是基于Node.js的web框架,现在大家使用的版本是koa2。其特点是对异步处理变简单,使用async和Promise,避免回调地狱。

    • 什么是Context对象?

    Koa将Node.js的Request和Response对象封装到Context对象中,所以Context对象成为一次对话的上下文,通过加工就可以控制返回给用户的内容。

    • 使用过的Koa中间件

    Koa就是包含一组中间件的函数对象

    https://www.jianshu.com/p/0790efc02c22

    • Koa-body原理

    koa-body就是结合了koa-bodyparse和koa-multer

    可以把POST的参数解析到ctx.request.body中

    支持文件上传并限制大小

    • 与Express的对比

    Express的中间件更多,但是Express采用ES5的语法所以容易造成回调地狱,Koa2使用ES67 Promise/Async,可读性更好更简单。并且Koa2几乎所有的功能都需要由第三方中间件完成

    • Koa中间件概念

    中间件函数就是带有ctx和next的函数,ctx就是封装了response和request,next用于将执行权交给下游的中间件.在next()之前使用awiat关键字因为next()会返回promise对象,在中间件中位于next()之后的会暂停执行,直到最后一个中间件执行完毕,再自下而上执行next()之后的函数,先进后出。

    • 使用Koa写出简易路由

    不使用koa-router

    const koa = require('koa');
    const app = new koa();
    app.use(async (ctx, next) => {
        const {url, method} = ctx;
        if(url === '/404' && method === 'GET'){
            ctx.body = 'Not Found'
            ctx.status = 404;
        } else {
            ctx.body = 'Default Content'
        }
        await next();
    })
    app.listen(3000)
    

    使用koa-router

    const koa = require('koa');
    const app = new koa();
    const bodyparser = require('koa-bodyparser')
    const Router = require('koa-router')
    const router = new Router() // 初始化router
    app.use(bodyparser({
      enableTypes:['json', 'form', 'text']
    }))
    
    app.use(require('koa-static')(__dirname + '/public'))
    app.use(router.routes()) // 加载router中间件
    app.use(router.allowedMethods()) //对异常码处理
    
    
    router.get('/', async (ctx, next) => {
      ctx.render('index')
    })
    
    router.post('/test1', async (ctx, next)=>{
      let retunData = ctx.request.body
      console.log(ctx.request.body)
      ctx.body = retunData
    })
    

    相关文章

      网友评论

          本文标题:koa知识点整理

          本文链接:https://www.haomeiwen.com/subject/gbkkiqtx.html