国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS路由(MGJRouter)的實現

2019-10-21 18:39:47
字體:
來源:轉載
供稿:網友

背景

最開始想做路由,是因為當時app中有大量與H5之間的交互,原生和H5的跳轉操作比較多比較頻繁,新增一個跳轉又涉及到改代碼發版本,為了統一iOS、安卓和H5的跳轉,引入了路由。

作用

后來發現路由,還可很多作用。Router就像是個調度中心,各個模塊通過路由調度其他模塊,模塊之間不需要相互引用,調度方式更加統一,更加自由,能夠實現解耦的作用,同時也為之后的組件化開發提供了基礎。

iOS,路由,MGJRouter

路由選擇

目前github優秀的路由設計已經有很多,如JLRoutes,MGJRouter,CTMediator。

JLRoutes提供的功能比較復雜,有很多我個人用不上的功能,所以沒有選擇。

CTMediator更適合業務比較復雜的情況,MGJRouter的使用上更加容易上手,功能也比較簡單,更加適用于頁面跳轉這種業務比較多的場景。所以我項目中選擇了MGJRouter

JLRoutes

  1. 集成簡單
  2. 可以處理各種各樣的url
  3. 支持通配符
  4. 支持多個scheme
  5. 比較純粹,不支持打開頁面后的值回傳。要自己再加工。

MGJRouter

  1. 代碼簡單易懂
  2. 功能全面
  3. 支持push值回傳
  4. 支持多scheme
  5. openUrl時支持一個userInfo (造成了跟系統的不統一,多出來的參數還是可以放到url中,傳對象的時候有點用)(模塊內部傳對象可以用,模塊間的話不應該傳對象,會造成耦合)

MGJRouter

MGJRouter就一個單例類,使用前需要通過注冊組件,調用方通過URL調用服務方頁面,通過路由表的映射關系進行關聯,調用方可以傳入復 雜的參數、對象等。

基本跳轉主要是注冊組件,調用openURl方法,傳入參數即可實現。

[MGJRouter registerURLPattern:@"mgj://foo/bar" toHandler:^(NSDictionary *routerParameters) {  NSLog(@"routerParameterUserInfo:%@", routerParameters[MGJRouterParameterUserInfo]);}];[MGJRouter openURL:@"mgj://foo/bar"];

使用一個類來統一管理注冊的方法,再load方法中進行注冊,就不會到處看到注冊的代碼,方便管理。

iOS,路由,MGJRouter

url注冊管理類

很多人說沒有反向傳值的方法,其實和我們其他跳轉一樣,傳參數的時候使用block即可解決。

[MGJRouter openURL:@"LWT://Test3/PushMainVC"withUserInfo:@{  @"navigationVC" : self.navigationController,  @"block":^(NSString * text){NSLog(@"%@",text); },  }      completion:nil];

代碼下載

demo中有MGJRouter各個方法的使用案例,包括跳轉,獲取組件,正反向傳參。

MGJRouter使用Demo

 以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 凭祥市| 罗山县| 团风县| 维西| 彭水| 明星| 浏阳市| 嘉祥县| 台湾省| 进贤县| 华蓥市| 北碚区| 郴州市| 轮台县| 沅江市| 盐边县| 临沧市| 清水河县| 杂多县| 金昌市| 通榆县| 阿鲁科尔沁旗| 墨竹工卡县| 土默特右旗| 朝阳县| 台东市| 揭东县| 稷山县| 双鸭山市| 杂多县| 八宿县| 察哈| 黔西县| 子洲县| 洛宁县| 彰化县| 光山县| 凯里市| 扶绥县| 民县| 崇阳县|