koa
是由Express
原班人马打造的,致力于成为一个更小、更富有表现力、更健壮的Web
框架。使用koa
编写web
应用,通过组合不同的generator
,可以免除重复繁琐的回调函数嵌套,并极大地提升错误处理的效率。koa
不在内核方法中绑定任何中间件,它仅仅提供了一个轻量优雅的函数库,使得编写Web
应用变得得心应手1.1 更小
koa
体积更小(500多行)、轻量。需要单独下载中间件配合开发。express
内置了很多中间件,集成度高。
需要编写的代码越少,程序就容易维护和调试。可读性高,编译器和人理解更简单。
容错能力强,异常处理方便,程序不会挂掉,很好地抛异常。
学习 Koa
重点在于理解中间件实现原理,对后续引用第三方库中间件时候有更好了解。
Koa
的应用程序其实就是一个包含一组中间件函数的对象,通过app.use
函数来加载中间件(也有引入顺序要求),这个函数有两个参数,context
指的是上下文环境对象,封装了一些属性;next
用于把中间件的执行权交给下游的中间件,在当前中间件中位于next()
之后的代码会暂停执行,直到最后一个中间件执行完毕,再自下而上依次执行每个中间件中next
值周的代码,类似于栈的先进后出。这种模型被称作“洋葱圈模型”。
简单的理解中间件呢,我觉得就是两边对称,举个例子:有个数组,奇数个也好,偶数个也罢。
const arr = [1, 2, 3, 2, 1]
程序从走向右执行,1
是一个中间件中的代码,同理 2
3
。只是在两个 1
中间有个 next()
指向 2
,2
中有个 next()
指向 3
。但是 next()
执行完后还会回到当前的中间件(不知道是否解释清了,还是更乱了😂)
代码实现如下:
后面会详细介绍,大家先了解
// #1
app.use(async (ctx, next)=>{
console.log(1)
await next();
console.log(1)
});
// #2
app.use(async (ctx, next) => {
console.log(2)
await next();
console.log(2)
})
app.use(async (ctx, next) => {
console.log(3)
})
REST
是一种风格,是个万维网软件架构的风格,用于创建网络服务。REST
不是指休息的意思,而是 Representational State Transfer
的缩写,即 —— 表现层状态转化。
put
修改,使用 delete
删除等。http
协议,在客户端和服务端进行数据传输。js
文件,css
文件都可以本地缓存)js
,使用 eval
执行)json
操作URI
格式,如 https://api.github.com/users
http
方法,如 get, post, put, patch, delete
JSON
REST
架构风格的 api
id
为 1
的用户id
为 1
的用户的信息put
和 patch
的区别:patch 部分更新,put 整体替换JSON
格式错误信息。如果状态码是4xx或者5xx,就应该向用户返回错误信息。一般来说,返回的信息中将 error
作为键名,出错信息作为键值即可http
头部加了 limit
字段,记录请求次数,如果超过,报错。也可以提示登录后获得更多的限流值原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。