Koa2学习-1(学习记录)

185 阅读2分钟

Koa是什么?

Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。 通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。 Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。

所以,熟悉express的同学们应该也会很熟悉koa的用法(基本用起来差不多,除了路由块的这个在之后的过程中会讲到)

Koa与Express对比

在我的概念里,最先接触的是Express+Mongoose搭建的一个node项目,最近一段时间开始学习Koa,感觉使用起来十分的顺手,并没有什么特别的地方,而Koa的优势在于,使用asnyc和await更好的帮助开发者们编写同步代码,并且可以自己编写需要的koa中间件进行使用

安装Koa

Koa 依赖 node v7.6.0 或 ES2015及更高版本和 async 方法支持.

$ node -v
  v12.16.3
$ npm install koa

入门

在我们的项目目录下创建一个koa.js,输入以下代码

// 导入koa,和koa 1.x不同,在koa2中,我们导入的是一个class,因此用大写的Koa表示:
const Koa = require('koa');

// 创建一个Koa对象表示web app本身:
const app = new Koa();

// 对于任何请求,app将调用该异步函数处理请求:
app.use(async (ctx, next) => {
    await next();
    ctx.response.type = 'text/html';
    ctx.response.body = '<h1>Hello, koa2!</h1>';
});

// 在端口3000监听:
app.listen(3000);
console.log('app started at port 3000...');

对于每一个http请求,koa将调用我们传入的异步函数来处理:

async (ctx, next) => {
    await next();
    // 设置response的Content-Type:
    ctx.response.type = 'text/html';
    // 设置response的内容:
    ctx.response.body = '<h1>Hello, Whorld</h1>';
}

其中,参数ctx是由koa传入的封装了request和response的变量,我们可以通过它访问request和response,next是koa传入的将要处理的下一个异步函数。

上面的异步函数中,我们首先用await next();处理下一个异步函数,然后,设置response的Content-Type和内容。

由async标记的函数称为异步函数,在异步函数中,可以用await调用另一个异步函数,这两个关键字将在ES7中引入。

详情请参照:Koa中文网

到这里我们已经创建了一个属于自己的一个简陋的Koa项目了

接下来我们在该项目中打开终端,并执行node koa.js

终端打印app started at port 3000...

我们打开浏览器输入http://localhost:3000即可看到效果