zoukankan      html  css  js  c++  java
  • node系列--【KOA2框架】

    一、KOA2框架

    Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。 通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。

    二、安装

    参考官网https://koa.bootcss.com/

    先初始化 npm init -y ; 在命令行输入npm i koa

    二、KOA应用

    let Koa = require("koa");
    let app = new Koa();
    // 自定义中间件
    app.use(async (ctx)=>{
      ctx.body="hello world";
    })
    
    app.listen(3000,()=>{
      console.log("服务已启动");
    });
    

    三、KOA与express的区别

    1)KOA将 request对象和 response对象封装为一个ctx

      ctx.request; // 这是 koa Request
      ctx.response; // 这是 koa Response
    

    ​ koa请求对象上的方法:https://koa.bootcss.com/#request

    ​ koa响应对象上的方法:https://koa.bootcss.com/#response

    ​ 设置签名cookie

      app.keys =["offcn.com"];
      ctx.cookies.set("uname","zhangsan",{maxAge:1000*60*60*24,signed:true})
    

    ​ 读取cookie

    ​ ctx.cookies.get(name,)

    ​ 读取签名cookie

    ​ ctx.cookies.get(name, signed)

    3) express有内置中间件,KOA没有任何内置中间件

    ​ app.use( express.static("./public") )

    ​ app.use( express.urlencode( {extened:false} ) )

    ​ app.use(express.json());

    ​ let router=express.Router()

    4) KOA的洋葱皮模型

    洋葱模型

    app.use( async (ctx,next)=>{
      console.log(1);
      next();
      console.log(5);
    })
    app.use( async (ctx,next)=>{
      console.log(2);
      next();
      console.log(4);
    })
    app.use( async (ctx)=>{
      console.log(3);
    })
    
    //后台打印1 2 3 4 5
    

    四、KOA第三方中间件

    4.1 koa-router 实现路由功能

    ​ npm i koa-router

    使用步骤:

    1)引入模块

    let Router = require("koa-router");
    let router = new Router();
    

    2) 添加路由

    router.get("/home",(ctx,next)=>{
      ctx.body = "<h1>欢迎访问首页</h1>"
    })
    

    3) 启动路由

    app.use( router.routers() )
    

    4.2 二级路由实现

    创建routers目录,添加二级路由模块 book.js

    let Router = require("koa-router");
    let router = new Router();
    
    router.get("/china",(ctx)=>{
      ctx.body = "中文书籍"
    })
    
    router.get("/en",(ctx)=>{
      ctx.body = "英文文书籍"
    })
    
    module.exports = router.routes()
    

    在入口文件中,首先引入koa-router, 启动路由。再添加二级路由模块

    let Router = require("koa-router");
    let router = new Router();
    
    //引入二级路由模块
    let bookRouter = require("./routers/book.js")
    //定义二级路由
    router.use("/book", bookRouter)
    
    //启动路由
    app.use( router.routers() )
    

    4.3 koa-static 静态资源下载

    ​ npm i koa-static

    let static = require("koa-static")
    let path = require("path");
    
    // 设置public 为静态资源下载目录
    app.use( static( path.join(__dirname,"public") ) )
    

    4.4 表单数据解析

    ​ GET 方式提交: ctx.query

    ​ POST方式提交:使用 koa-bodyparser 中间件解析表单数据。

    ​ npm i koa-bodyparser

    ​ 配置:

    let bodyParser = require("koa-bodyparser");
    // 设置bodyParser中间件
    app.use( bodyParser() )
    

    ​ 表单数据解析,在路由的处理函数中,使用 ctx.request.body 即可获得表单属性组成的对象。

    router.post("/baoming",(ctx,next)=>{
      console.log( ctx.request.body );
    })
    

    ​ 注意,如果表单中有上传控件,请使用 koa-formidable 中间件。

  • 相关阅读:
    bedtools神器 | gtf转bed | bed文件运算
    常识的力量
    Introduction to dnorm, pnorm, qnorm, and rnorm for new biostatisticians
    最大似然估计实例 | Fitting a Model by Maximum Likelihood (MLE)
    (转)从最大似然估计开始,你需要打下的机器学习基石
    highly variable gene | 高变异基因的选择 | feature selection | 特征选择
    用R的igraph包来画蛋白质互作网络图 | PPI | protein protein interaction network | Cytoscape
    从fasta中提取或者过滤掉多个序列
    GenomicConsensus (quiver, arrow)使用方法 | 序列 consensus
    blast | diamond 输出结果选择和解析 | 比对
  • 原文地址:https://www.cnblogs.com/chenhaiyun/p/14706095.html
Copyright © 2011-2022 走看看