zoukankan      html  css  js  c++  java
  • KOA2 笔记

    KOA2

    基于ES7开发,完全使用Promise并配合async来实现异步的node框架

    核心是对node的HTT模块P进行了封装,用多个async函数组成处理链,来不断地接收HTTP请求(ctx对象)并处理。

    这拯救了无限嵌套回调和promise无限链式.then()的写法

    Middleware:koa把很多async函数组成一条处理链,一个async函数就是一个middleware,函数中可以自己处理一些事情,然后用ES7的await ->await next()来调用下一个async函数,

                           middleware顺序很重要,如果一个middleware没有调用await next(),则处理链中断,后续的middleware将不再执行。

                           await只有一个限制,就是必须在async函数中调用

    核心代码

    对于每一个http请求,koa将调用我们传入的异步函数来处理:

    //一个async函数
    async (ctx, next) => {
        await next();
        // 设置response的Content-Type:
        ctx.response.type = 'text/html';
        // 设置response的内容:
        ctx.response.body = '<h1>Hello, koa2!</h1>';
    }

    KOA-ROUTER

    基本路由实现:

    1. controllers 中编写每个请求对应的处理函数,可以在函数中初始化URL数据并用router实现跳转操作,然后暴露这些controllers,当然每个处理函数都是一个async函数

               (注意:更多的时候不止需要返回静态页面,还需要根据不同的数据渲染页面,这时候就需要用到nunjucks模板

                              配合nunjucks模板时,整体思路也是大同小异,controllers中把router跳转换成用render()模板渲染的操作就可以,当然模板渲染这个操作需要另写一个middleware

               )

             2. controller.js 依次读取(fs模块)controllers中每个js文件中的各个处理函数,push进路由, 当匹配到对应url时,controllers中对应的函数将被执行

                 (注意:配合nunjucks模板时,还需要在开发环境加一个处理静态文件的middleware,以便在HTML中引入css/js等静态文件。模拟服务器端处理静态文件的功能)

             3. app.js中执行controller.js

    Koa-bodyparser: 用于解析原始request请求消息体,比如post请求发送表单,数据存在请求的body中,但是node与koa的request对象都没有解析请求消息体的功能。

                                 还可以用于rest API的开发

            注:REST请求是一种请求类型和响应类型均为JSON的HTTP请求

             廖雪峰老师rest的教程: https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/0014735914606943e2866257aa644b4bdfe01d26d29960b000

    express实现异步只能通过层层回调,可以配合co函数库实现类似于koa的middleware

  • 相关阅读:
    跃迁方法论 Continuous practice
    EPI online zoom session 面试算法基础知识直播分享
    台州 OJ 2648 小希的迷宫
    洛谷 P1074 靶形数独
    洛谷 P1433 DP 状态压缩
    台州 OJ FatMouse and Cheese 深搜 记忆化搜索
    台州 OJ 2676 Tree of Tree 树状 DP
    台州 OJ 2537 Charlie's Change 多重背包 二进制优化 路径记录
    台州 OJ 2378 Tug of War
    台州 OJ 2850 Key Task BFS
  • 原文地址:https://www.cnblogs.com/jlliu/p/8288913.html
Copyright © 2011-2022 走看看