最近了解到egg和Midway以及nest
来看一下发展历程
Express
最早的node后台框架
Nest
Nest 在这些常见的 Node.js 框架 (Express/Fastify) 之上提高了一个抽象级别,但仍然向开发者直接暴露了底层框架的 API。这使得开发者可以自由地使用适用于底层平台的无数的第三方模块。
Koa
Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。 通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。 Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。
Egg
底层基于 Koa,异步解决方案不同
Midway
Midway 设计之初就可以兼容多种上层框架,在 Web 场景默认封装了 Egg.js 作为上层的 Web 框架,同时,Midway 也提供了其他的 Web 框架选择,比如常见的 Express
和 Koa
。
这些上层框架都可以使用 Midway 提供的装饰器能力,但是 Midway 不会对特有的能力做出封装,比如 Egg.js 的插件体系,或者 Express 的中间件能力,如果你对其中的某个框架比较熟悉,或者希望使用特定框架的能力,就可以选择它作为你的主力 Web 框架。
个人对文档的观点
- Midway:文档是语雀写的,其中多库连接这块使用方法写的是不全的,需要去看下源码。
- Nest:文档是普遍来说文档写的不错的。
- Egg:相对于Nest来说是差一点的。
框架选择
看自己缘分,都是后台框架,能完成工作都是ok的。
Midway学习中遇到的多库问题
文档步骤
出现问题
当使用test
的库的时候会报错
分析问题
根据报错内容讲错误规定在model
层,但是我的model
层是按照文档去实现的,将test
换成default
完美运行,根据报错,这里是默认了模型归属是default
,而这里文档并没有说明,查看github的issue也没有类似的问题出现,也就指定了问题出现在InjectEntityModel
根据路径找到声明这个方法的文件找到对应的方法
这里给了默认值,所以只要不传参数这里的指向连接永远是
default
问题解决
注入model
的时候,传参数为多库的连接就可以了,给予使用的库指向