node.js下一代框架koa,了解一下

有望取代express的框架。
首次学习是看了阮一峰老师的教程
http://www.ruanyifeng.com/blog/2017/08/koa.html
详细API见官网https://koa.bootcss.com
零、安装

node -v  // 版本要求7.6以上
npm init  // 初始化项目,生成package.json

npm升到5以上的版本直接通过npm install来直接安装依赖,不会生成node_modules,只会生成一个package-lock.json文件,需要package.json中已有依赖才行(好像不再需要cnpm了)

"dependencies": {
    "mysql": "^2.15.0"
  }
npm install // 安装依赖

安装需要用到的依赖

npm install koa --save 等等

一、request与response

const Koa = require('koa');
const app = new Koa();
const main = ctx => {
   if (ctx.request.accepts('text/plain')) {
    ctx.response.type = 'text';
    ctx.response.body = 'Hello World';
  }
};

app.use(main);

二、文件流

const fs = require('fs');
ctx.response.body = fs.createReadStream('./demos/template.html');

三、路由
原生路由

ctx.request.path

koa-route 路由模块

const route = require('koa-route');
const about = ctx => { // 路由名
  ctx.response.type = 'html';
  ctx.response.body = '<a href="/">Index Page</a>';
};
const redirect = ctx => { // 路由名
  ctx.response.redirect('/');  // 重定向
};
app.use(route.get('/about', about)); // 路由模块

四、静态public

const path = require('path');
const serve = require('koa-static');

const main = serve(path.join(__dirname));
app.use(main);

五、中间件(logger记录功能)
中间件:在request与response过程之间执行的方法(在我看来就是定义了一个普通的函数)
app.use() 加载中间件

同步中间件(先进后出)

const logger = (ctx, next) => {
  next();  // 中断(进栈),执行下一个中间件,出栈掉头执行。
}

异步中间件(不就是异步函数嘛,呵呵)

const fs = require('fs.promised');
const main = async /*function*/ (ctx, next) {
  ctx.response.type = 'html';
  ctx.response.body = await fs.readFile('./demos/template.html', 'utf8');
};

中间件可以合并
五、抛错

ctx.response.status = 404;
ctx.throw(404)
// 我们处理报错信息一般在最外层写一个捕获所有报错的的异步中间件(捕获后不会触发error事件)
try {
    await next();
  } catch (err) {
    ctx.response.status = err.statusCode || err.status || 500;
    ctx.response.body = {
      message: err.message
    };
  }

六、事件

app.on('error', (err, ctx) =>  ); // 触发
ctx.app.emit() // 释放

七、web功能
cookier读写

const n = Number(ctx.cookies.get('view') || 0) + 1;
ctx.cookies.set('view', n);

表单提交,文件上传…
弃坑。。。我还是用express吧,不习惯。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值