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);
在上方的范例代码中,中间件依次被执行的顺序已经在注释中标记出来。你也可以自己尝试运行一下这个范例,并打印记录下各个环节的输出与耗时。
更加形象的图可以参考
中间件路由
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
还有好多我就先不折腾了!!!