KOA—javascript服务器编程学习笔记(一)

KOA是express原班人马倾情打造新型web框架,旨在提供更小、更丰富、更稳健web应用程序和API,之前了解过express,体验上KOA更轻松,更容易理解,而不是被各种异步、回调弄得头昏眼花。
下面开始我们的KOA之旅:

1. 随便新建一个目录:

/koa-practise

2. 安装koa

一般来说,我们可能会认为koa像其他工具一样,在全局环境中安装命令行再使用。但koa不用,哪儿需要,就在哪儿npm install一下,可以说是便携式地。

npm install koa

我们将会用到很多async函数(就是一种将异步函数同步化的技术),如果你的node版本小于7.6,推荐使用babel's require hook

require('babel-core/register');
// require the rest of the app that needs to be transpiled after the hook
const app = require('./app');

为了解析和转换async函数,你至少使用Async to generator transform
或transform-async-to-module-method两个插件的其中一个,就是说在.babelrc文件中做如下配置:

{
  "plugins": ["transform-async-to-generator"]
}

你也可以预设配置环境使用指定"node":"current"

3. 跑起来!

在第一步中建好的根目录下,新建一个主应用程序文件/koa-practise/MyApp.js:

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

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

app.listen(3000);

接着像运行其他node应用程序一样输入:

node MyApp.js

找个浏览器,输入localhosta:3000
不出意外,应该看到了温暖的hello world

级联

这里介绍一下级联,先来看看下面的例子:

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

// x-response-time

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

// logger

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

// response

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

app.listen(3000);

上面代码中,从接受request开始,总共经历x-response-time、logger、response三个中间件,他们的执行顺序是这样的。x-response-time中创建start静态变量后,入到Next()方法,既随传递给logger中间件。logger是x-response-time的下行中间件,logger中也有next()方法,跟x-response-time一样,logger将进入response中间件。到了response中间件里,执行完其内容,就将控制权交给其上行中间件,即logger,logger中间件继续执行next()后面的语句。以此类推,最终执行完x-response-time中间件,最终返回res到客户端。
就是这样:-D

你可能感兴趣的:(KOA—javascript服务器编程学习笔记(一))