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

  • 相关阅读:
    PHP 对Memcache的使用实例
    PHP Memcache 扩展安装
    Effective STL 读书笔记
    windows下安装和使用scrapy
    使用insert ignore来避免向数据库重复插入数据
    2017年末
    归并排序
    二叉树的中序遍历
    正则表达式
    tinymq学习小结
  • 原文地址:https://www.cnblogs.com/jlliu/p/8288913.html
Copyright © 2011-2022 走看看