最近项目需要重构,看了一下现在的项目结构,发现了几个问题:
- 页面组件在一堆,就算分了基本的左右结构,但是内部结构还是很复杂,非常的长,要新增或者修改要找半天
- 由于和用户互动比较多,业务逻辑大多是在utils和store里面,并且很多utils里面的函数都需要graph参数,甚至说有一些职责混淆了,以至于有些逻辑是重复的;
分析完毕!下面开始重构,我打算将重构后的逻辑如下,这种重构方式更像是后端写的几层架构,但是这样在复杂的前端交互里面确实让页面和逻辑变得清晰很多,能够很好地解决职责混乱和参数重复传递的问题,同时保持代码的可读性和可维护性:
- Store:专注状态管理
- Utils:专注纯函数逻辑
- Service:协调复合业务逻辑
由于很多逻辑都要用到graph,但是如果直接用一个store里面还是会有很多逻辑,所以我打算这样设计,专门用一个函数来统一接入graph,里面书写一些图里面的各种操作,和普通的业务逻辑耦合开,所以现在的设计是这样的:
- 创建一个GraphUtils工厂函数,接收graph作为参数,专门处理图相关的专门逻辑,比如图的创建和销毁,布局,边,节点的基本操作,还有一些样式配置;
- store 用来处理需要启动ui的状态管理,配合graphUtil来实现
- utils用来处理一些计算的纯函数逻辑,保证输入输出单一
- service来负责和ui界面的一些复杂交互,组合store和utils
于是我们就达到了以下效果,
- 函数柯里化:将graph参数固定,创建一个高阶函数工厂
- 职责分离:将store中的业务逻辑分离到专门的service层
- 依赖注入:通过柯里化实现graph的依赖注入
这是整体架构,具体后面还遇到了很多问题和思考,正在持续记录。。。
当然,如果有更好的重构方法,请狠狠告诉我,🙏谢谢!!