nodjs开发系列koa框架

Posted 海内知天涯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nodjs开发系列koa框架相关的知识,希望对你有一定的参考价值。

koa是一个轻量级web框架,由express框架原班人马打造。koa引入了中间件的模式,解决了大量回调函数导致代码混乱的问题。

  • 依赖包安装

    新建一个应用目录koawx,在目录中新建package.json文件,文件内容如下:

{

    "name": "koawx",

    "version": "1.0.0",

    "description": "Hello Koa 2 example with async",

    "main": "app.js",

    "scripts": {

        "start": "node app.js"

    },

    "keywords": [

        "koa",

        "async"

    ],

    "author": "xiaop",

    "license": "Apache-2.0",

    "dependencies": {

        "koa": "2.5.0",

        "koa-router": "7.4.0",

        "koa-bodyparser": "4.2.0"

    }

}

 然后执行npm install,会自动安装dependencies中的依赖。

  • koa框架的基本使用

const Koa = require('koa'); //引入koa包

const app = new Koa(); // 创建koa对象

app.use(ctx => {

    console.log(`Process ${ctx.request.method} ${ctx.request.url}...`);

    ctx.body="Hello World";  //ctx.response.body的简写

}); // 每收到一个http请求,koa就会调用通过app.use()注册的函数,传入封装了request、response对象的参数ctx

app.listen(3000); // 监听3000端口

console.log('app started at port 3000...');

将以上代码放入app.js文件中,运行node app.js即可启动一个web服务器,通过localhost:3000访问将返回Hello World。

如果要异步执行,只需

app.use(async (ctx,next) => {

    console.log(`Process ${ctx.request.method} ${ctx.request.url}...`);

    await next();

    ctx.body="Hello World";

});

由async标记的函数称为异步函数,在异步函数中,可以用await调用另一个异步函数,达到同步的效果。next是需要处理的下一个函数。异步函数执行的顺序跟app.use的顺序有关,将上面的代码分解如下:

app.use(async (ctx,next) => {

    console.log(`Process ${ctx.request.method} ${ctx.request.url}...`);

    await next();

});

app.use(async (ctx,next) => {

    ctx.body="Hello World";

});

每个async定义的函数称为middleware,每个middleware按app.use的顺序执行,这样所以请求将先进入第一个app.use部分处理,然后再进入第二个。如果一个middleware中没有await next()的话,以后的middleware就不会执行了。


     



以上是关于nodjs开发系列koa框架的主要内容,如果未能解决你的问题,请参考以下文章

干货 | koa 包教包会系列1 —— 白话 koa

node.js系列10 koa2框架

sau交流学习社区--songEagle开发系列:Vue.js + Koa.js项目中使用JWT认证

Koa 系列 — 如何编写属于自己的 Koa 中间件

node进阶一文带你快速入门koa框架

koa2中间件koa和koa-compose源码分析原理