项目实战1:分层架构(Store/Utils/Service)+ GraphUtils 解耦与可维护性优化

57 阅读2分钟

最近项目需要重构,看了一下现在的项目结构,发现了几个问题:

  1. 页面组件在一堆,就算分了基本的左右结构,但是内部结构还是很复杂,非常的长,要新增或者修改要找半天
  2. 由于和用户互动比较多,业务逻辑大多是在utils和store里面,并且很多utils里面的函数都需要graph参数,甚至说有一些职责混淆了,以至于有些逻辑是重复的;

分析完毕!下面开始重构,我打算将重构后的逻辑如下,这种重构方式更像是后端写的几层架构,但是这样在复杂的前端交互里面确实让页面和逻辑变得清晰很多,能够很好地解决职责混乱和参数重复传递的问题,同时保持代码的可读性和可维护性:

  • Store:专注状态管理
  • Utils:专注纯函数逻辑
  • Service:协调复合业务逻辑

由于很多逻辑都要用到graph,但是如果直接用一个store里面还是会有很多逻辑,所以我打算这样设计,专门用一个函数来统一接入graph,里面书写一些图里面的各种操作,和普通的业务逻辑耦合开,所以现在的设计是这样的:

  • 创建一个GraphUtils工厂函数,接收graph作为参数,专门处理图相关的专门逻辑,比如图的创建和销毁,布局,边,节点的基本操作,还有一些样式配置;
  • store 用来处理需要启动ui的状态管理,配合graphUtil来实现
  • utils用来处理一些计算的纯函数逻辑,保证输入输出单一
  • service来负责和ui界面的一些复杂交互,组合store和utils

于是我们就达到了以下效果,

  1. 函数柯里化:将graph参数固定,创建一个高阶函数工厂
  2. 职责分离:将store中的业务逻辑分离到专门的service层
  3. 依赖注入:通过柯里化实现graph的依赖注入

这是整体架构,具体后面还遇到了很多问题和思考,正在持续记录。。。

当然,如果有更好的重构方法,请狠狠告诉我,🙏谢谢!!