我正在开发一个非常大的应用程序,因此决定采用模块化方法,该方法中的每个功能都实现为框架,而一个功能不应“知道”其他功能。
我决定在ReSwift中大量使用该库,该库遵循REDUX原理构建iOS应用。
我设法使全局App状态与所有Feature状态分离开来,因此每个功能都定义了自己的状态,并且全部由全局App状态来管理。
我面临的下一个挑战是路由/导航。我希望能够在位于Feature1中的一个视图控制器到位于Feature2中的另一个视图控制器之间路由(请记住:我想避免要素之间的依赖关系,因此Feature1对Feature2一无所知)。
我知道我可以在我的应用程序中创建一个中心位置,以处理该应用程序的所有路由,但是我想知道每种功能是否有实现其自身路由的方法。因此Feature1将路由到Feature2,而无需调用某些中央实现。 这样做的动机是每个功能都将为应用提供自己的资源。因此,在REDUX原则中,每个功能都应提供:状态,Reducer,动作和路由器,但是这里面临的挑战是这些功能不依赖于其他功能。
P.S。对于路由,我决定使用ReSwift-Router,它是ReSwift应用程序的声明式路由库。
谢谢!
答案 0 :(得分:0)
看起来我们正在使用类似的体系结构模式,尽管我决定在每个模块中定义路由器协议,所有协议都在某个中央路由器模块中实现。这将模块分开,但我仍然可以使用集中状态并为整个应用程序进行调度。
在使用了一些路由器库之后,我制定了自己的基于状态的解决方案以更好地处理VC层次结构,同时仍将状态与UI分开。
我认为它符合您的要求。
https://github.com/nikans/MonarchRouter
Monarch Router是一个声明式路由处理程序,它通过协调器和演示者将ViewController彼此分离。它完全适合Redux样式的State Flow和Reactive框架。
通过声明映射有URL结构的路由层次结构来构造协调器。演示者抽象UI的创建和修改。
功能: