美文网首页
Koa2基本用法

Koa2基本用法

作者: happystory | 来源:发表于2017-02-11 21:51 被阅读0次

安装

因为需要部分ES2015的特性的支持,Koa需要node v4.0.0或更高版本。

cnpm i koa@next

中间件

Koa是一个中间件框架,可以接受三种不同类弄的函数作为中间件:

  • 普通函数
  • async函数
  • generator函数

下面是一个使用不同类型函数作为日志记录中间件的例子:

普通函数

正常情况下中间件接受两个参数(ctx, next),ctx是请求的上下文,next是能引发下游中间件函数的执行,它会返回一个Promise对象。

'use strict';

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

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

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

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

async函数(需要Babel)

对于Node 4.0和Babel 6.0,可以通过以下方式编绎。

cnpm i babel-register babel-plugin-transform-async-to-generator --save
// start.js
'use strict';

// http://babeljs.io/docs/setup/#babel_register

require('babel-register')({
    plugins: ['transform-async-to-generator']
});
require('./app.js');
// app.js
'use strict';

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

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

app.use(async (ctx) => {
    ctx.response.type = 'text/html';
    ctx.response.body = '<h1>Hello, koa2!</h1>';
});

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

Generator函数

为了使用generator函数,需要使用co这样的wrapper。

cnpm i co --save
'use strict';

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

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

app.use(co.wrap(function *(ctx) {
    ctx.body = 'Hello Koa';
}));

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

相关文章

  • Koa2基本用法

    安装 因为需要部分ES2015的特性的支持,Koa需要node v4.0.0或更高版本。 中间件 Koa是一个中间...

  • iKcamp团队制作|基于Koa2搭建Node.js实战(含视频

    中间件用法——讲解 Koa2 中间件的用法及如何开发中间件 ?? iKcamp 制作团队 原创作者:大哼、阿干、...

  • koa2入门系列

    koa2入门系列(一) koa2入门系列(二) koa2入门系列(三) koa2入门系列(四) koa2入门系列(...

  • 定时器

    setTimeout和clearTimeout基本用法 setInterval和clearInterval基本用法...

  • 2019-11-16

    E战到底DAY14 SUMIF和SUMIFS函数 一.基本用法 SUMIF基本用法 SUMIFS基本用法 SUMI...

  • 11 - 动态数据绑定实现原理

    一、defineProperty 基本用法 1、基本写法: 2、参数 3、descriptor 参数的基本用法 1...

  • as 基本用法

    插件安装 plugin auto import 相当于 eclipse ctrl+o 或者as alt+enter...

  • 基本用法

    Installation 安装 npm install vue vue-server-renderer --sav...

  • 基本用法

    html css js

  • 基本用法

    本地与远程:push 命令会把本地仓库推送到远程仓库(比如gitbub,码云)在push之前要与某个远程仓库建立连...

网友评论

      本文标题:Koa2基本用法

      本文链接:https://www.haomeiwen.com/subject/brvoittx.html