koa2下一代dode.js的web框架

介绍

Koa是由Express背后的团队设计的一个新的Web框架,旨在为Web应用程序和API提供更小,更具表现力和更强大的基础。通过利用发电机Koa可以让你消除回调,并大大增加错误处理。Koa不会在内核中捆绑任何中间件,并提供一套优雅的方法,使写入服务器变得快速和愉快。


安装

Koa需要支持ES6和async function的node v7.6.0或更高版本。
我们先看看自己的node版本是不是高版本只要高于v7.6.0就可以了。如果不是的话我们更新一下下。

nvm install 8  //版本切换
 npm init -y    //初始化      
 npm i -S koa   //安装koa

应用

一个Koa应用程序是一个包含一系列中间件函数的对象,这些中间件函数根据请求以堆栈的方式组成和执行。Koa与许多其他中间件系统类似,比如Ruby的Rack,Connect等等 - 然而,一个关键的设计决定是在低级别的中间件层提供高级别的“糖”。这提高了互操作性,健壮性,并使得编写中间件更加愉快。

这包括诸如内容协商,缓存新鲜度,代理支持和重定向等常见任务的方法。尽管提供了相当多的有用方法,Koa仍然占用很小的空间,因为没有中间件捆绑在一起。

我们写一个小程序来看看能不能跑起来。

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

app.use(async ctx => {
  ctx.body = 'Hello World';
  //ctx.body = {
  //   data: [
  //     {
  //       id:1,
  //       name:'max'
  //     }
  //   ]
  // }
});

app.listen(3000);

级联

Koa中间件以更传统的方式级联,因为您可能习惯于使用类似的工具 - 以前很难使用户友好地使用回调。但是,通过异步功能,我们可以实现“真正的”中间件。通过一系列的功能简单地将控制传递给Connect的实现对比,Koa调用“下游”,然后控制流向“上游”。

以下示例以“Hello World”作为响应,但首先请求通过中间件流动x-response-time,logging以标记请求何时启动,然后通过响应中间件继续进行控制。当中间件调用next() 该函数时,挂起并将控制权交给下一个定义的中间件。在没有更多的中间件执行下游之后,堆栈将放松并且每个中间件恢复执行其上游行为。

前面个跑起来了。跑个较为复杂的。

const Koa = require('koa');
const app = new Koa();
// x-response-time
app.use(async (ctx, next) => {
  //1、进入路由
  const start = Date.now();
  await next();
  //5、再次进入 x-response-time 中间件,记录2次通过此中间件「穿越」的时间
  const ms = Date.now() - start;
  ctx.set('X-Response-Time', `${ms}ms`);
});
// logger
app.use(async (ctx, next) => {
  //2、进入 logger 中间件
  const start = Date.now();
  await next();
  //4、 再次进入 logger 中间件,记录2次通过此中间件「穿越」的时间
  const ms = Date.now() - start;
  console.log(`${ctx.method} ${ctx.url} - ${ms}`);
});
// response
app.use(async ctx => {
  //3、进入 response 中间件,没有捕获到下一个符合条件的中间件,传递到 upstream
  ctx.body = 'Hello World';
});
app.listen(3000);

在上方的范例代码中,中间件依次被执行的顺序已经在注释中标记出来。你也可以自己尝试运行一下这个范例,并打印记录下各个环节的输出与耗时。

更加形象的图可以参考
koa2下一代dode.js的web框架


中间件路由

https://github.com/alexmingoi...

安装

npm install koa-router

应用

const Koa = require('koa');
const Router = require('koa-router');
const app = new Koa();
const router = new Router();
router.get('/', async (ctx, next) => {
  ctx.body = ' 首页';
})
.get('/users', async (ctx, next) => {
  ctx.body = '用户列表';
})
.get('/users/:id', async (ctx, next) => {
  ctx.body = '用户详情页' + ctx.params.id;
});
app.use(router.routes());
app.listen(3000);

生成器

http://blog.csdn.net/ansu2009...

安装

npm install -g koa-generator

新建

koa2 -e 02-koa2

代建环境

npm i

启动项目

npm run dev

连接数据库

https://github.com/ivonzhang/...

下载后安装环境

npm i

开启数据库 启动项目

node app.js

还有好多我就先不折腾了!!!

koa

相关推荐