這篇文章給大家分享的是有關(guān)iOS路由MGJRouter怎么實(shí)現(xiàn)的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
藍(lán)山網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站開(kāi)發(fā)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)公司2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
背景
最開(kāi)始想做路由,是因?yàn)楫?dāng)時(shí)app中有大量與H5之間的交互,原生和H5的跳轉(zhuǎn)操作比較多比較頻繁,新增一個(gè)跳轉(zhuǎn)又涉及到改代碼發(fā)版本,為了統(tǒng)一iOS、安卓和H5的跳轉(zhuǎn),引入了路由。
作用
后來(lái)發(fā)現(xiàn)路由,還可很多作用。Router就像是個(gè)調(diào)度中心,各個(gè)模塊通過(guò)路由調(diào)度其他模塊,模塊之間不需要相互引用,調(diào)度方式更加統(tǒng)一,更加自由,能夠?qū)崿F(xiàn)解耦的作用,同時(shí)也為之后的組件化開(kāi)發(fā)提供了基礎(chǔ)。
路由選擇
目前github優(yōu)秀的路由設(shè)計(jì)已經(jīng)有很多,如JLRoutes,MGJRouter,CTMediator。
JLRoutes提供的功能比較復(fù)雜,有很多我個(gè)人用不上的功能,所以沒(méi)有選擇。
CTMediator更適合業(yè)務(wù)比較復(fù)雜的情況,MGJRouter的使用上更加容易上手,功能也比較簡(jiǎn)單,更加適用于頁(yè)面跳轉(zhuǎn)這種業(yè)務(wù)比較多的場(chǎng)景。所以我項(xiàng)目中選擇了MGJRouter
JLRoutes
集成簡(jiǎn)單
可以處理各種各樣的url
支持通配符
支持多個(gè)scheme
比較純粹,不支持打開(kāi)頁(yè)面后的值回傳。要自己再加工。
MGJRouter
代碼簡(jiǎn)單易懂
功能全面
支持push值回傳
支持多scheme
openUrl時(shí)支持一個(gè)userInfo (造成了跟系統(tǒng)的不統(tǒng)一,多出來(lái)的參數(shù)還是可以放到url中,傳對(duì)象的時(shí)候有點(diǎn)用)(模塊內(nèi)部傳對(duì)象可以用,模塊間的話不應(yīng)該傳對(duì)象,會(huì)造成耦合)
MGJRouter
MGJRouter就一個(gè)單例類,使用前需要通過(guò)注冊(cè)組件,調(diào)用方通過(guò)URL調(diào)用服務(wù)方頁(yè)面,通過(guò)路由表的映射關(guān)系進(jìn)行關(guān)聯(lián),調(diào)用方可以傳入復(fù) 雜的參數(shù)、對(duì)象等。
基本跳轉(zhuǎn)主要是注冊(cè)組件,調(diào)用openURl方法,傳入?yún)?shù)即可實(shí)現(xiàn)。
[MGJRouter registerURLPattern:@"mgj://foo/bar" toHandler:^(NSDictionary *routerParameters) { NSLog(@"routerParameterUserInfo:%@", routerParameters[MGJRouterParameterUserInfo]); }]; [MGJRouter openURL:@"mgj://foo/bar"];
使用一個(gè)類來(lái)統(tǒng)一管理注冊(cè)的方法,再load方法中進(jìn)行注冊(cè),就不會(huì)到處看到注冊(cè)的代碼,方便管理。
url注冊(cè)管理類
很多人說(shuō)沒(méi)有反向傳值的方法,其實(shí)和我們其他跳轉(zhuǎn)一樣,傳參數(shù)的時(shí)候使用block即可解決。
[MGJRouter openURL:@"LWT://Test3/PushMainVC"withUserInfo:@{ @"navigationVC" : self.navigationController, @"block":^(NSString * text){NSLog(@"%@",text); }, } completion:nil];
感謝各位的閱讀!關(guān)于“iOS路由MGJRouter怎么實(shí)現(xiàn)”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!