通过发布订阅解耦
一、 开发中遇到的问题
- 通信模块(axios)中存在其他耦合模块,比如弹窗组件、路由组件
- 思考下自己的项目中是否有根据状态码执行不同的逻辑
- 非 200 执行弹窗 message
- 404 执行 路由跳转
- 退出状态码 -> 清空 token、localstorge、 sessionStorge
- token 过期 -> xx
- 思考下自己的项目中是否有根据状态码执行不同的逻辑
- 各个模块有自己的职责,如果内容多了会导致耦合严重问题。 整个页面非常杂乱
- 解决方式
- 把动态多变的抽离到一个新的文件。比如状态码
- 通过发布订阅模式解耦
- 优势:
- 各个模块非常的干净,易读。适合长期维护。
- 业务多变只要符合当前规范,也很容易维护。
- 劣势:
- 从集中处理到打散,不好理解(阵痛)
- 优势:
二、 发布订阅模式解耦(中间层)
可以使用 mitt


typescript
import createRouter, createWebHashHistory } from'vue-router';
import emitter from './eventEmitter';
const router = createRouter({
history: createWebHashHistory(),
routes: []
})
emitter.on('API:UN_AUTH', () => {
router.push('/login')
})
export default router;