背景
最開始想做路由,是因為當時app中有大量與H5之間的交互,原生和H5的跳轉操作比較多比較頻繁,新增一個跳轉又涉及到改代碼發版本,為了統一iOS、安卓和H5的跳轉,引入了路由。
作用
后來發現路由,還可很多作用。Router就像是個調度中心,各個模塊通過路由調度其他模塊,模塊之間不需要相互引用,調度方式更加統一,更加自由,能夠實現解耦的作用,同時也為之后的組件化開發提供了基礎。
路由選擇
目前github優秀的路由設計已經有很多,如JLRoutes,MGJRouter,CTMediator。
JLRoutes提供的功能比較復雜,有很多我個人用不上的功能,所以沒有選擇。
CTMediator更適合業務比較復雜的情況,MGJRouter的使用上更加容易上手,功能也比較簡單,更加適用于頁面跳轉這種業務比較多的場景。所以我項目中選擇了MGJRouter
JLRoutes
MGJRouter
MGJRouter
MGJRouter就一個單例類,使用前需要通過注冊組件,調用方通過URL調用服務方頁面,通過路由表的映射關系進行關聯,調用方可以傳入復 雜的參數、對象等。
基本跳轉主要是注冊組件,調用openURl方法,傳入參數即可實現。
[MGJRouter registerURLPattern:@"mgj://foo/bar" toHandler:^(NSDictionary *routerParameters) { NSLog(@"routerParameterUserInfo:%@", routerParameters[MGJRouterParameterUserInfo]);}];[MGJRouter openURL:@"mgj://foo/bar"];
使用一個類來統一管理注冊的方法,再load方法中進行注冊,就不會到處看到注冊的代碼,方便管理。
url注冊管理類
很多人說沒有反向傳值的方法,其實和我們其他跳轉一樣,傳參數的時候使用block即可解決。
[MGJRouter openURL:@"LWT://Test3/PushMainVC"withUserInfo:@{ @"navigationVC" : self.navigationController, @"block":^(NSString * text){NSLog(@"%@",text); }, } completion:nil];
代碼下載
demo中有MGJRouter各個方法的使用案例,包括跳轉,獲取組件,正反向傳參。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。
新聞熱點
疑難解答