2021 年了,是该了解下 Midway.js 了,我这几行代码给你看看
FSD (Full Stack Develop) Service - Midway.js 的最佳实践
拓展阅读:
在这个项目中,你会看到以下基于 Midway 的实践案例 (上层使用 Egg.js )
我们正在做以下工程实践例子,大家你遇到什么问题,或者希望追加什么功能,或者学习内部实现。 可以关注我们的仓库(点赞,分享...三连)在 issue 留言,我们会征集你的意见,带来最干货的案例。
帮你扫清学习障碍,让你用起 Midway 来更加得心应手,提升能效,找回编码的乐趣。
基础
超级管理
see Midway docs for more detail.
先将 database 目录下到 sql 文件迁移到数据库,修改默认的 config 配置文件(需要 Redis 和 MySQL 服务可以正常访问)
$ npm i
$ npm run dev
$ open http://localhost:7001/
$ npm start
$ npm stop
npm run lint
to check code style.npm test
to run unit test.建议使用 Redis 的时候,对所有 key 做好命名空间划分,便于管理。可把 scope 写到对照表中。
借助 jwt 插件做签名校验,管理员的 token 中会包含 id 字段。
所有 admin 相关的缓存数据都放在 admin:xxxx
下面。
admin:accessToken:${id}
缓存管理员 Token 信息admin:userinfo:${id}
缓存管理员基本信息所有实体表均有 deleted_at 字段(目前基础模块不使用软删除),用于软删除。
如果要关闭软删除,将 deletedAt 字段注释即可
进行软删除的时候,关系表的数据不做改动。
后期根据需要,用脚本定期清理软删除的数据。
以下模块未使用软删除:
业务软删除单独写一个 BaseModel,其他实体继承该 Model 即可
BaseModel
的实体会自带软删除判断,例子查看src/app/model/base.ts
/**
* 根据菜单 id 获取数据
* @param id 菜单 id
*/
async getAdminMenuById(id: string) {
const row = await this.adminMenuModel
.createQueryBuilder()
.select()
.leftJoinAndSelect(
'AdminMenuModel.roles',
'role',
'role.deletedAt IS NULL'
)
.where({ id: id })
.getOne();
return row;
}
做接口响应数据统计的出发点,有两点(即使有类似的第三方包,但还是自己实现以下):
虽然框架本身已经有日志功能,但是很多场景下,我们可能需要看下各个接口服务的响应状态
是在正常服务,还是已经出现问题。在有监控的帮助下,可以快速帮我们定位日志排查问题。
是对应统计实时数据而言,这里我们会使用 RTS 的技术方案,会用到 RabbitMQ 和 Redis
RabbitMQ 作用在于把统计的计算异步化,从而不影响正常的业务请求处理
(消费者的逻辑代码,需要写在单独一个工程,独立部署)
大致流程如下,手绘的,工具简陋,姑且看一下。
群里会有热心的朋友,也会有新版本发布推送。钉钉扫码加入答疑群
二群
一群(已满)
我们的代码使用 MIT 协议,请放心使用。
1
dream4ever 2021-04-09 22:08:38 +08:00
看完之后就一个感觉:乱糟糟,没看到重点……
|
2
imzcg2 2021-04-09 22:11:04 +08:00 via Android
这就是传说中的一个 js 一个前后端全站项目吗
|
3
constructor 2021-04-09 22:18:20 +08:00
很棒的框架,加油!
|
4
pigspy 2021-04-09 22:39:55 +08:00
跟 nestjs 有啥区别
|
5
uptonking 2021-04-09 22:46:20 +08:00 via iPhone 1
node 的后端框架我还是选 nestjs,nestjs 贡献者多且生态丰富,midway 除了阿里的人会用其他很少人用了,搞不好哪天没有 kpi 就被丢进垃圾桶了
|
6
blindpirate 2021-04-09 22:51:57 +08:00 1
|
7
WildCat 2021-04-09 23:10:44 +08:00 via iPhone
用叮叮群聊技术 🥶
|
8
yamedie 2021-04-10 09:16:55 +08:00 via Android
eggjs 还在更新吗? cnodejs.org 关站快一年了
|
9
verncake OP @blindpirate 短期能解决业务功能开发效率问题,但长期的维护成本相当高,也算是提升人效的一种尝试,创业项目快速试错用也还不错,weex 应该暂时停更了。
|
10
verncake OP @uptonking Midway.js 真不是 KPI 项目,现有专门的 team 维护,主未来 Serverless 方向
|
11
verncake OP @dream4ever 这是个实践项目,框架相关的移步 midwayjs.org
|
14
verncake OP 该文章对应的项目地址 https://github.com/fsd-nodejs/service-mw2
|