跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 2021 年了,是该了解下 Midway.js 了,我这几行代码给你看看
未分類
2021 年 4 月 19 日

2021 年了,是该了解下 Midway.js 了,我这几行代码给你看看

2021 年了,是该了解下 Midway.js 了,我这几行代码给你看看

資深大佬 : verncake 0

2021 年了,是该了解下 Midway.js 了,我这几行代码给你看看

FSD Service

2021 年了,是该了解下 Midway.js 了,我这几行代码给你看看

FSD (Full Stack Develop) Service – Midway.js 的最佳实践

2021 年了,是该了解下 Midway.js 了,我这几行代码给你看看 2021 年了,是该了解下 Midway.js 了,我这几行代码给你看看 2021 年了,是该了解下 Midway.js 了,我这几行代码给你看看 2021 年了,是该了解下 Midway.js 了,我这几行代码给你看看 2021 年了,是该了解下 Midway.js 了,我这几行代码给你看看 2021 年了,是该了解下 Midway.js 了,我这几行代码给你看看 2021 年了,是该了解下 Midway.js 了,我这几行代码给你看看

2021 年了,是该了解下 Midway.js 了,我这几行代码给你看看

拓展阅读:

  • 配套的前端工程请移步 https://github.com/fsd-nodejs/pc 查看这个项目
  • 全栈开发文档以及规范 https://github.com/fsd-nodejs/document 查看这个项目
  • midway2.x 深度躺坑记(持续更新)
  • 代码提示 好玩的代码提示 by waitingsong (考虑到,每个人对于自定义代码提示的要求不一样,就不合并到参考了,这个 PR 推荐给大家)

项目导览 & TODO

在这个项目中,你会看到以下基于 Midway 的实践案例 (上层使用 Egg.js )

我们正在做以下工程实践例子,大家你遇到什么问题,或者希望追加什么功能,或者学习内部实现。 可以关注我们的仓库(点赞,分享…三连)在 issue 留言,我们会征集你的意见,带来最干货的案例。

帮你扫清学习障碍,让你用起 Midway 来更加得心应手,提升能效,找回编码的乐趣。

框架特性及能力应用

  • 中间件
  • 依赖注入
  • 参数校验和转换 ( DTO 层)
  • 测试 ( Controller & Service 单元测试)
  • Swagger
  • Database

功能

基础

  • Admin 登录
  • 普通用户登录-账户密码
  • OAuth 2.0
  • 日志监控
  • 本地上传文件服务
  • 鉴权中间件
  • 接口响应统计中间件
  • 统一错误处理
  • SnowFlake 雪花算法生成分布式 ID

超级管理

  • 权限
  • 角色
  • 管理员
  • 菜单
  • 日志(操作日志,记录管理用户的实际操作)

快速开始

see Midway docs for more detail.

Development

先将 database 目录下到 sql 文件迁移到数据库,修改默认的 config 配置文件(需要 Redis 和 MySQL 服务可以正常访问)

$ npm i $ npm run dev $ open http://localhost:7001/ 

Deploy

$ npm start $ npm stop 

npm scripts

  • Use npm run lint to check code style.
  • Use npm test to run unit test.

Redis

  • 使用 Redis 作为用户登录凭证存取的地方
  • RTS 收集统计数据 (开发中)

Redis 划分

建议使用 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
  • 在做关系查询的时候,关系表需要手动加软删除判断 IS NULL,如下:
      /**    * 根据菜单 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 作用在于把统计的计算异步化,从而不影响正常的业务请求处理

(消费者的逻辑代码,需要写在单独一个工程,独立部署)

大致流程如下,手绘的,工具简陋,姑且看一下。 2021 年了,是该了解下 Midway.js 了,我这几行代码给你看看

答疑

群里会有热心的朋友,也会有新版本发布推送。钉钉扫码加入答疑群

二群

2021 年了,是该了解下 Midway.js 了,我这几行代码给你看看

一群(已满)

2021 年了,是该了解下 Midway.js 了,我这几行代码给你看看

License

我们的代码使用 MIT 协议,请放心使用。

2021 年了,是该了解下 Midway.js 了,我这几行代码给你看看

大佬有話說 (17)

  • 資深大佬 : dream4ever

    看完之后就一个感觉:乱糟糟,没看到重点……

  • 資深大佬 : imzcg2

    这就是传说中的一个 js 一个前后端全站项目吗

  • 資深大佬 : constructor

    很棒的框架,加油!

  • 資深大佬 : pigspy

    跟 nestjs 有啥区别

  • 資深大佬 : uptonking

    node 的后端框架我还是选 nestjs,nestjs 贡献者多且生态丰富,midway 除了阿里的人会用其他很少人用了,搞不好哪天没有 kpi 就被丢进垃圾桶了

  • 資深大佬 : blindpirate

    https://github.com/apache/incubator-weex 半年没更新了

  • 資深大佬 : WildCat

    用叮叮群聊技术

  • 資深大佬 : yamedie

    eggjs 还在更新吗? cnodejs.org 关站快一年了

  • 主 資深大佬 : verncake

    @blindpirate 短期能解决业务功能开发效率问题,但长期的维护成本相当高,也算是提升人效的一种尝试,创业项目快速试错用也还不错,weex 应该暂时停更了。

  • 主 資深大佬 : verncake

    @uptonking Midway.js 真不是 KPI 项目,现有专门的 team 维护,主未来 Serverless 方向

  • 主 資深大佬 : verncake

    @dream4ever 这是个实践项目,框架相关的移步 midwayjs.org

  • 主 資深大佬 : verncake

    @imzcg2 一个 JavaScript 开发,打通前后端

  • 主 資深大佬 : verncake

    @yamedie eggjs 核心库基本很稳定,暂时没什么更新

  • 主 資深大佬 : verncake

    该文章对应的项目地址 https://github.com/fsd-nodejs/service-mw2

  • 資深大佬 : ericgui

    @WildCat 对,这个最恶心了

  • 資深大佬 : ericgui

    @verncake 你们对任何项目都没有一个长期承诺,都是短期某人升职的工具,那些当初被你们忽悠入坑 weex 的不被坑死了么?

  • 主 資深大佬 : verncake

    @ericgui 技术是在不停的发展的,框架也在迭代,现在看来,跨端方案,Flutter 更优秀

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具