首页 热点资讯 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

koa2试水

2024-12-20 来源:化拓教育网

koa2出来已经很长一段时间了,之前一直没有遇上可以练手的项目,这次刚好有了机会,正好折腾一下。

安装

koa2需要7.6.0及以上的node版本,目的是为了支持async await语法,不需要babel支持(7.6.0以下如果使用async await语法需要babel配置)。

官方推荐使用nvm去做node的版本管理。(因之前遇到的一些坑,而且对于版本管理的需求不是很大,笔者都是直接覆盖安装最新版本。)

yarn add koa

(当然也可以使用npm)

简单使用

const Koa = require('koa');
const app = new Koa();

app.use(ctx => {
  ctx.body = 'Hello World';
});

// 监听端口3000
app.listen(3000);
console.log('打开127.0.0.1:3000查看');

中间件模式

const Koa = require('koa');
const app = new Koa();

// x-response-time

app.use(async function (ctx, next) {
  const start = new Date();
  await next();
  const ms = new Date() - start;
  ctx.set('X-Response-Time', `${ms}ms`);
});

// logger

app.use(async function (ctx, next) {
  const start = new Date();
  await next();
  const ms = new Date() - start;
  console.log(`${ctx.method} ${ctx.url} - ${ms}`);
});

// response

app.use(ctx => {
  ctx.body = 'Hello World';
});

app.listen(3000);

通过async await 来实现中间件的同步模式,由最上面的async开始 一只进入下一个await


中间件模式

路由模块

使用koa-router来实现路由

yarn add koa-router

独立的index.js路由文件

const Router = require('koa-router');
const users = require('./users');

const myRouter = new Router();
myRouter.use('/users', users.routes(), users.allowedMethods());


myRouter.get('/', async (ctx) => {
    ctx.body = 'Hello Worlddjlhud h!';
});

module.exports = myRouter;

app.js

const myRouter = require('./routers/index');
app
  .use(myRouter.routes())
  .use(myRouter.allowedMethods());

一个简单的koa2服务器就搭建好了

显示全文