为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第19天 技术选型 koa 和 egg

标签:
Node.js

课程名称web前端架构师

课程章节:第13周 第四章

主讲老师:张轩

课程内容:技术选型 koa 和 egg

Koa2 以及它的基本特性

Koa2
官网地址:https://koajs.com/

和 Express 的区别

  • 使用 Promise(async,await)代替 callback (node > v7.6.0)
  • 使用 ctx(上下文对象)封装 req(Request) 和 res(Response), 以及一些常用的功能。
  • 完全不同的中间件机制
  • 更轻量级,没有捆绑任何中间件
  • 官方文章:koa2 和 express 的区别。https://github.com/koajs/koa/blob/master/docs/koa-vs-express.md
const Koa = require('koa')
const app = new Koa()

app.use(async (ctx, next) => {
    ctx.body = {
        message: 'Koa',
        count: 1
    }
    await next()
})
app.use(async (ctx) => {
    ctx.body.count++
})

app.listen(3000)

koa2 没有带路由,使用路由需要安装 @koa/router (过去的 koa-router )

koa2 的中间键机制

再次理解 express 中间键机制

f1 (req, res) {
  console.log('f1 start ->');
  f2 (req, res) { // 第一个 next() 地方
    console.log('f2 start ->');
    f3 (req, res) { // 第二个 next() 地方
      console.log('f3 service...');
      res.send('Hello World!')
    }
  }
}

对错捕获处理起来很不友好,每一个回调都拥有一个新的调用栈,因此你没法对一个 callback 做 try catch 捕获,你需要在 Callback 里做错误捕获,然后一层一层向外传递。

Koa 中间件的演变


koa 与 exress响应机制的不同

  • Express: 我们直接操作的是 res 对象,直接 res.send() 之后就立即响应了。
  • Koa2: 数据的响应是通过 ctx.body 进行设置,注意这里仅是设置并没有立即响应,而是在所有的中间件结束之后做了响应。

koa2 的缺点

太轻量级了,代码规范、目录结构、逻辑分层都没有提供

egg js

Express 和 Koa2 的不足

简单而且扩展性强,适合个人的比较小的项目
没有约定,对于统一维护和开发非常不利

对于后端框架的需求

需要有一套优秀的统一的约定或者架构进行开发
有丰富的扩展机制和可定制性
Typescript 支持

Egg.js

地址:https://eggjs.org/zh-cn/
Star 数目众多
大厂出品,维护有保障。
国内开发者开发,中文文档质量有保证,文档写的非常全. https://www.eggjs.org/zh-CN/intro
约定优于配置,按照一套统一的约定进行应用开发。
一个插件只做一件事,高度可扩展的插件机制
支持 Typescript

Nest.js

地址: https://docs.nestjs.com/
内置并且完全支持 Typescript
开箱即用的应用程序架构
可扩展,松散耦合
大量采用了装饰器的写法(https://docs.nestjs.cn/8/controllers)[https://docs.nestjs.cn/8/controllers],装饰器路由使用起来费城舒服,但是装饰器一直是草稿阶段

使用egg js

创建项目

mkdir showcase && cd showcase
npm init egg --type=ts

然后选择对应模板创建项目

npm i
npm run dev

图片描述

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
Python工程师
手记
粉丝
2
获赞与收藏
1

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消