Swift 路由框架 (Spider github.com/SaveFree/Sp…)
思想
1.通过 子路由(模块化)管理项目中的全部路由,子路由可划分H5,RN,Native,Native可根据业务不同区分不能的子路由。主要进行一些页面跳转,可自定义实现跳转功能。目前数据交互为单向。
2.各个子路由通过注册到主路由中。最终映射关系由主路由统一管理。
3.子路由中,需要继承base类 添加自定义方法。
4.主路由映射全部子路由。通过路由对象找到子路由的方法。最终实现跳转。
//主路由是单例
static let shared = RouteManager()
//子路由 基类
typealias RouteModuleCallback = ([String: String]) -> ()
class RouteBaseModule {
public func moduleName() -> String {
return "base"
}
public func services() -> [ModuleModel]? {
return nil
}
public func handlerUrl(args: [String: String], callback: @escaping RouteModuleCallback) {
callback(args)
}
}
// 可以通过继承基类 实现自定义方法 ,也可以进行一些自定义处理,可进行跳转前的处理。
class XXRouteXXXModule: RouteBaseModule {
override func moduleName() -> String {
return "xxx"
}
override func services() -> [ModuleModel]? {
var list = [ModuleModel]()
list.append(ModuleModel(route: "xxx://xxxx", selector: #selector(gotoXXX(params:))))
return list
}
@objc func gotoXXX(params: [String: String]) {
self.handlerUrl(args: params, callback: {
(params) in
//
print("XXXXXX")
})
}
}
// 注册
RouteManager.shared.registerModule(module: XXRouteXXXModule())
//跳转
RouteManager.shared.route(routeStr: "xxx://xxxx", extraArgs: nil)
(Spider github.com/SaveFree/Sp…)