Koa2框架介绍
-
koa
是由Express
原班人马打造的,致力于成为一个更小、更富有表现力、更健壮的Web 框架。 -
使用
koa
编写web 应用,可以免除重复繁琐的回调函数嵌套, 并极大地提升错误处理的效率。 -
koa
不在内核方法中绑定任何中间件, 它仅仅提供了一个轻量优雅的函数库,使得编写Web 应用变得得心应手。 -
开发思路和express 差不多,最大的特点就是可以避免异步嵌套
。
框架介绍之洋葱模型
具体详情请看下面博客:
https://blog.csdn.net/weixin_43352901/article/details/107572255
Koa2环境搭建
Koa Context
将 node 的 request
和 response
对象封装到单个对象中,为编写 Web 应用程序和 API 提供了许多有用的方法。这些操作在 HTTP
服务器开发中频繁使用,它们被添加到此级别而不是更高级别的框架,这将强制中间件重新实现此通用功能。每个 请求都将创建一个 Context
,并在中间件中作为接收器引用,或者ctx
标识符,如以下代码片段所示:
app.use(async ctx => {
ctx; // 这是Context
ctx.request; // 这是 koa Request
ctx.response; // 这是 koa Response
})
Router
Koa
中的路由和Express
有所不同,在Express
中直接引入Express
就可以配置路由,但是在Koa
中我们需要安装对应的koa-router
路由模块来实现。
npm install --save koa-router
const koa = require('koa');
const router = require('koa-router')(); // 注意:引入的方式
const app = new Koa();
router.get('/', function(ctx, next) {
ctx.body = 'Hello koa';
})
router.get('/news',(ctx,next) => {
ctx.body = '新闻Page';
})
app.use(router.routes()); // 作用: 启动路由
app.use(router.allowedMethods()); // 作用:这是官网推荐用法,我们可以看到router.allowedMethods()用在了路由匹配router.routes()之后,所以在当所有路由中间件最后调用,此时根据ctx.status设置response响应头
app.listen(3000,() => {
console.log('starting at port 3000');
})
脚手架
1.1安装koa-generator
npm install -g koa-generator
1.2使用koa-generator生成koa2项目
koa2 -e project(项目名称) (-e 代表使用模板引擎ejs)
1.3进入项目
cd project
npm install
1.4启动项目,默认端口号3000
npm run dev (该方法可以直接刷新服务)