一扳碍、為什么需要路由框架
? ? ? ? 我們所使用的原生路由方案一般是通過顯式intent和隱式intent兩種方式實現(xiàn)的燃乍,而在顯式intent的情況下,因為會存在直接的類依賴的問題姜性,導(dǎo)致耦合非常嚴(yán)重赘风;而在隱式intent情況下,則會出現(xiàn)規(guī)則集中式管理仁卷,導(dǎo)致協(xié)作變得非常困難穴翩。而且一般而言配置規(guī)則都是在Manifest中的,這就導(dǎo)致了擴展性較差锦积。除此之外芒帕,使用原生的路由方案會出現(xiàn)跳轉(zhuǎn)過程無法控制的問題,因為一旦使用了StartActivity()就無法插手其中任何環(huán)節(jié)了丰介,只能交給系統(tǒng)管理背蟆,這就導(dǎo)致了在跳轉(zhuǎn)失敗的情況下無法降級,而是會直接拋出運營級的異常哮幢。這時候如果考慮使用自定義的路由組件就可以解決以上的一些問題带膀,比如通過URL索引就可以解決類依賴的問題;通過分布式管理頁面配置可以解決隱式intent中集中式管理Path的問題橙垢;自己實現(xiàn)整個路由過程也可以擁有良好的擴展性垛叨,還可以通過AOP的方式解決跳轉(zhuǎn)過程無法控制的問題,與此同時也能夠提供非常靈活的降級方式柜某。
為什么要用路由組件
前面提到的主要是開發(fā)與協(xié)作中的問題嗽元,而使用一款路由框架時還會涉及到其他的兩個大方面:一方面是組件化,而另一方面就是Native和H5的問題喂击。剛才所提到的主要是開發(fā)和協(xié)作中作為開發(fā)者所需要面對的問題剂癌,而一旦一款A(yù)PP達(dá)到一定體量的時候,業(yè)務(wù)就會膨脹得比較嚴(yán)重翰绊,而開發(fā)團隊的規(guī)模也會越來越大佩谷,這時候一般都會提出組件化的概念。組件化就是將APP按照一定的功能和業(yè)務(wù)拆分成多個小組件监嗜,不同的組件由不同的開發(fā)小組來負(fù)責(zé)琳要,這樣就可以解決大型APP開發(fā)過程中的開發(fā)與協(xié)作的問題,將這些問題分散到小的APP中秤茅。目前而言組件化已經(jīng)有非常多比較成熟的方案了,而自定義路由框架也可以非常好地解決整個APP完成組件化之后模塊之間沒有耦合的問題童叠,因為沒有耦合時使用原生的路由方案肯定是不可以的框喳。另外一個問題就是Native與H5的問題课幕,因為現(xiàn)在的APP很少是純Native的,也很少會有純H5的五垮,一般情況下都是將兩者進(jìn)行結(jié)合乍惊。這時候就需要非常便捷并且統(tǒng)一的跳轉(zhuǎn)方案,因為在H5中是無法使用StartActivity()跳轉(zhuǎn)到Native頁面的放仗,而從Native跳轉(zhuǎn)到H5頁面也只能通過配置瀏覽器的方式實現(xiàn)润绎。
路由框架的特點
為了解決以上的問題就需要實現(xiàn)一個自定義的路由框架,而路由框架一般都具有以下的三種特點:
分發(fā):把一個URL或者請求按照一定的規(guī)則分配給一個服務(wù)或者頁面來處理诞挨,這個流程就是分發(fā)莉撇,分發(fā)是路由框架最基本的功能,當(dāng)然也可以理解成為簡單的跳轉(zhuǎn)惶傻。
管理:將組件和頁面按照一定的規(guī)則管理起來棍郎,在分發(fā)的時候提供搜索、加載银室、修改等操作涂佃,這部分就是管理,也是路由框架的基礎(chǔ)蜈敢,上層功能都是建立在管理之上辜荠。
控制:就像路由器一樣,路由的過程中抓狭,會有限速伯病、屏蔽等一些控制操作,路由框架也需要在路由的過程中辐宾,對路由操作做一些定制性的擴展狱从,比方剛才提到的AOP,后期的功能更新叠纹,也是圍繞這個部分來做的季研。
ARouter是阿里巴巴開源的Android平臺中對頁面、服務(wù)提供路由功能的中間件誉察,提倡的是簡單且夠用与涡。
接下來我會用幾章的內(nèi)容講解如何從零實現(xiàn)阿里巴巴ARouter路由框架