本申請涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體涉及頁面顯示技術(shù)領(lǐng)域,尤其涉及頁面組件間的數(shù)據(jù)流向控制方法和裝置。
背景技術(shù):
在計(jì)算機(jī)領(lǐng)域,頁面的組件化亦即頁面的模塊化,在頁面的前端展現(xiàn)中,往往將頁面的數(shù)據(jù)元素(dataelement,數(shù)據(jù)的基本單位,一個數(shù)據(jù)元素可由若干不可分割的數(shù)據(jù)項(xiàng)組成)、函數(shù)、通訊協(xié)議等數(shù)據(jù)進(jìn)行封裝形成多個頁面組件,從而實(shí)現(xiàn)頁面的組件化。上述封裝過程中,頁面組件間的數(shù)據(jù)流向(例如包括數(shù)據(jù)的配置、渲染、事件間的通信等)控制直接影響頁面前端開發(fā)的難易程度、效率,甚至工程的可維護(hù)性。
現(xiàn)有的頁面組件間的數(shù)據(jù)流向控制方法,往往包括事件通信和代理服務(wù)兩種方式。其中,事件通信方式中,數(shù)據(jù)只會從事件觸發(fā)者到事件注冊者,對于結(jié)構(gòu)復(fù)雜的頁面,容易造成數(shù)據(jù)流向雜亂無章;代理服務(wù)方式中,數(shù)據(jù)由同一個代理服務(wù)管理,由于多個組件同時(shí)依賴代理服務(wù),無法實(shí)現(xiàn)組件間的低耦合要求。因此,現(xiàn)有的頁面組件間的數(shù)據(jù)流向控制方法存在有效性不高的問題。
技術(shù)實(shí)現(xiàn)要素:
本申請的目的在于提出一種改進(jìn)的頁面組件間的數(shù)據(jù)流向控制方法和裝置,來解決以上背景技術(shù)部分提到的技術(shù)問題。
一方面,本申請?zhí)峁┝艘环N頁面組件間的數(shù)據(jù)流向控制方法,所述方法包括:對頁面文檔的結(jié)構(gòu)進(jìn)行解析,獲取頁面組件間的嵌套層次關(guān)系,其中,所述頁面組件包括數(shù)據(jù)元素和回調(diào)函數(shù),所述嵌套層次關(guān)系中,下級組件嵌套于上級組件;根據(jù)所述嵌套層次關(guān)系,按照 從上級組件到下級組件的順序?qū)Ω黜撁娼M件進(jìn)行渲染,其中,對上級組件渲染時(shí)向下級組件傳遞數(shù)據(jù)元素和回調(diào)函數(shù)。
在一些實(shí)施例中,所述根據(jù)所述嵌套層次關(guān)系,按照從上級組件到下級組件的順序?qū)Ω黜撁娼M件進(jìn)行渲染包括:對上級組件進(jìn)行渲染時(shí),將下級組件中數(shù)據(jù)元素的數(shù)據(jù)類型進(jìn)行緩存;對下級組件進(jìn)行渲染時(shí),從緩存中取出所需數(shù)據(jù)類型進(jìn)行校驗(yàn),校驗(yàn)通過則進(jìn)行渲染。
在一些實(shí)施例中,所述校驗(yàn)包括對數(shù)據(jù)通訊協(xié)議的校驗(yàn)、數(shù)據(jù)類型字段的校驗(yàn)中的至少一種。
在一些實(shí)施例中,所述對上級組件渲染時(shí)向下級組件傳遞數(shù)據(jù)元素和回調(diào)函數(shù)包括:將下級組件中的數(shù)據(jù)元素和回調(diào)函數(shù)通過引用傳遞的方式進(jìn)行緩存。
在一些實(shí)施例中,所述方法還包括:檢測各頁面組件的文檔屬性值是否發(fā)生變化,其中,所述文檔屬性值包括頁面組件中的數(shù)據(jù)元素或回調(diào)函數(shù)的索引或指針的值;如果任一頁面組件的文檔屬性值發(fā)生變化,通過回調(diào)函數(shù)向發(fā)生變化的頁面組件的上級組件發(fā)送所述變化的變化信息;根據(jù)所述變化信息,將發(fā)生變化的頁面組件的上級組件和發(fā)生變化的頁面組件重新渲染。
第二方面,本申請?zhí)峁┝艘环N頁面組件間的數(shù)據(jù)流向控制裝置,所述裝置包括:解析模塊,配置用于對頁面文檔的結(jié)構(gòu)進(jìn)行解析,獲取頁面組件間的嵌套層次關(guān)系,其中,所述頁面組件包括數(shù)據(jù)元素和回調(diào)函數(shù),所述嵌套層次關(guān)系中,下級組件嵌套于上級組件;渲染模塊,配置用于根據(jù)所述嵌套層次關(guān)系,按照從上級組件到下級組件的順序?qū)Ω黜撁娼M件進(jìn)行渲染,其中,對上級組件渲染時(shí)向下級組件傳遞數(shù)據(jù)元素和回調(diào)函數(shù)。
在一些實(shí)施例中,所述渲染模塊包括:緩存單元,配置用于對上級組件進(jìn)行渲染時(shí),將下級組件中數(shù)據(jù)元素的數(shù)據(jù)類型進(jìn)行緩存;校驗(yàn)單元,配置用于對下級組件進(jìn)行渲染時(shí),從緩存中取出所需數(shù)據(jù)類型進(jìn)行校驗(yàn),校驗(yàn)通過則進(jìn)行渲染。
在一些實(shí)施例中,所述校驗(yàn)包括對數(shù)據(jù)通訊協(xié)議的校驗(yàn)、數(shù)據(jù)類型字段的校驗(yàn)中的至少一種。
在一些實(shí)施例中,所述渲染模塊還配置用于:將下級組件中的數(shù)據(jù)元素和回調(diào)函數(shù)通過引用傳遞的方式進(jìn)行緩存。
在一些實(shí)施例中,所述裝置還包括:檢測模塊,配置用于檢測各頁面組件的文檔屬性值是否發(fā)生變化,其中,所述文檔屬性值包括頁面組件中的數(shù)據(jù)元素或回調(diào)函數(shù)的索引或指針的值;發(fā)送模塊,配置用于如果任一頁面組件的文檔屬性值發(fā)生變化,通過回調(diào)函數(shù)向發(fā)生變化的頁面組件的上級組件發(fā)送所述變化的變化信息;所述渲染模塊,還配置用于根據(jù)所述變化信息,將發(fā)生變化的頁面組件的上級組件和發(fā)生變化的頁面組件重新渲染。
本申請?zhí)峁┑捻撁娼M件間的數(shù)據(jù)流向控制方法和裝置,通過對頁面文檔的結(jié)構(gòu)進(jìn)行解析,獲取頁面組件間的嵌套層次關(guān)系,其中,上述嵌套層次關(guān)系中,下級組件嵌套于上級組件,頁面組件包括數(shù)據(jù)元素和回調(diào)函數(shù),然后根據(jù)上述嵌套層次關(guān)系,按照從上級組件到下級組件的順序?qū)Ω黜撁娼M件進(jìn)行渲染,其中,在對上級組件渲染時(shí),向下級組件傳遞數(shù)據(jù)元素和回調(diào)函數(shù)。由于按照從上級組件到下級組件的順序?qū)Ω黜撁娼M件進(jìn)行渲染,且渲染過程中由上級組件向下級組件傳遞數(shù)據(jù)元素和回調(diào)函數(shù),使數(shù)據(jù)流向單一,且避免使用代理服務(wù),組件間的耦合度低,從而可以提高頁面組件間的數(shù)據(jù)流向控制的有效性。
附圖說明
通過閱讀參照以下附圖所作的對非限制性實(shí)施例的詳細(xì)描述,本申請的其它特征、目的和優(yōu)點(diǎn)將會變得更明顯:
圖1是根據(jù)本申請的頁面組件間的數(shù)據(jù)流向控制方法的一個實(shí)施例的流程圖;
圖2是將頁面中的數(shù)據(jù)元素進(jìn)行封裝形成的頁面組件間的嵌套層次關(guān)系示意圖;
圖3是根據(jù)本申請的頁面組件間的數(shù)據(jù)流向控制方法的一個實(shí)施例對圖2示出的頁面組件進(jìn)行數(shù)據(jù)流向控制的示意圖;
圖4是根據(jù)本申請的頁面組件間的數(shù)據(jù)流向控制方法的又一個實(shí) 施例的流程圖;
圖5示出了可以應(yīng)用本申請實(shí)施例的示例性系統(tǒng)架構(gòu);
圖6是根據(jù)本申請的頁面組件間的數(shù)據(jù)流向控制裝置的一個實(shí)施例的結(jié)構(gòu)示意圖;
圖7是適于用來實(shí)現(xiàn)本申請實(shí)施例的電子設(shè)備的計(jì)算機(jī)系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例對本申請作進(jìn)一步的詳細(xì)說明。可以理解的是,此處所描述的具體實(shí)施例僅僅用于解釋相關(guān)發(fā)明,而非對該發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與有關(guān)發(fā)明相關(guān)的部分。
需要說明的是,在不沖突的情況下,本申請中的實(shí)施例及實(shí)施例中的特征可以相互組合。下面將參考附圖并結(jié)合實(shí)施例來詳細(xì)說明本申請。
請參考圖1,其示出了頁面組件間的數(shù)據(jù)流向控制方法的一個實(shí)施例的流程100。本實(shí)施例主要以該方法應(yīng)用于具有一定運(yùn)算能力和顯示能力的電子設(shè)備中來舉例說明。該頁面組件間的數(shù)據(jù)流向控制方法,包括以下步驟:
步驟101,對頁面文檔的結(jié)構(gòu)進(jìn)行解析,獲取頁面組件間的嵌套層次關(guān)系。
在本實(shí)施例中,電子設(shè)備可以首先對頁面文檔的結(jié)構(gòu)進(jìn)行解析,從而獲取頁面組件間的嵌套層次關(guān)系,其中,頁面組件可以包括數(shù)據(jù)元素和回調(diào)函數(shù)。在嵌套層次關(guān)系中,下級組件嵌套于上級組件。
這里,頁面文檔可以包括但不限于以下文檔中的一種:html(hypertextmarkuplanguage,超文本標(biāo)記語言)文檔、asp(activeserverpages,動態(tài)服務(wù)器頁面)文檔、jsp(javaserverpages,java服務(wù)器頁面)文檔等等。文檔的結(jié)構(gòu)可以用來表示文檔內(nèi)容的層次關(guān)系。文檔的結(jié)構(gòu)可以通過各種形式進(jìn)行記錄,例如,文檔的結(jié)構(gòu)可以通過dom(documentobjectmodel,文檔對象模型)樹記錄。通過 dom樹描述的文檔結(jié)構(gòu),可以將每個樹封裝成一個頁面組件,例如,整個dom樹被封裝成最大的頁面組件,dom樹的每個子樹被封裝成嵌套于該最大的頁面組件的下級組件,每個子樹下的分子樹可以被封裝成嵌套于該子樹被封裝成的頁面組件的下級組件,以此類推。
作為一個示例,圖2示出了將頁面中的數(shù)據(jù)元素進(jìn)行封裝形成頁面組件間的嵌套層次關(guān)系示意圖。如圖2所示,頁面201包括兩個較大版塊2011、2012,版塊2011包括數(shù)據(jù)元素20111、20112和20113,版塊2012包括數(shù)據(jù)元素20121和20122,它們分別被封裝成對應(yīng)頁面201的頁面組件202,頁面組件202的下級組件頁面組件2021和2022,頁面組件2021的下級組件頁面組件20211、20212和20213,頁面組件2022的下級組件頁面組件20221和20222。其中,電子設(shè)備對頁面201的結(jié)構(gòu)進(jìn)行解析得到的嵌套層次關(guān)系為:頁面組件2021和2022嵌套于頁面組件202,頁面組件20211、20212和20213嵌套于頁面組件2021,頁面組件20221和20222嵌套于頁面組件2022。
其中,每個頁面組件的最小單元可以包括數(shù)據(jù)元素和回調(diào)函數(shù)。這里,回調(diào)函數(shù)是一個通過指針調(diào)用的函數(shù),例如,把函數(shù)a的指針或地址作為參數(shù)傳遞給另一個函數(shù)b,函數(shù)b可以通過函數(shù)a的指針或地址來調(diào)用函數(shù)a,則函數(shù)a是一個回調(diào)函數(shù)。數(shù)據(jù)元素例如可以一本書的書目信息,而書目信息的每一項(xiàng)(如書名、作者名等)分別為一個數(shù)據(jù)項(xiàng)。
步驟102,根據(jù)上述嵌套層次關(guān)系,按照從上級組件到下級組件的順序?qū)Ω黜撁娼M件進(jìn)行渲染。
在本實(shí)施例中,電子設(shè)備接著可以根據(jù)步驟101獲取的嵌套層次關(guān)系,按照從上級組件到下級組件的順序?qū)Ω黜撁娼M件進(jìn)行渲染。其中,在上級組件渲染過程中,可以向下級組件傳遞下級組件需要的數(shù)據(jù)元素和回調(diào)函數(shù)。從而,頁面組件中數(shù)據(jù)元素和回調(diào)函數(shù)的數(shù)據(jù)流向?yàn)樯霞壗M件到下級組件。
在前端開發(fā)的頁面渲染過程中,往往會根據(jù)數(shù)據(jù)元素構(gòu)建渲染樹,對各個數(shù)據(jù)元素進(jìn)行位置計(jì)算、樣式計(jì)算等等,然后對各個數(shù)據(jù)元素進(jìn)行描繪。本實(shí)施例中,電子設(shè)備可以根據(jù)頁面組件的嵌套層次關(guān)系 確定頁面組件的渲染順序,對各頁面組件按照從上級組件到下級組件的順序進(jìn)行渲染。
請參考圖3,其示出了對圖2所示的頁面進(jìn)行渲染時(shí)頁面組件間的數(shù)據(jù)流向。如圖3所示,電子設(shè)備首先將頁面201的數(shù)據(jù)元素、回調(diào)函數(shù)及頁面組件間的通信協(xié)議進(jìn)行解析,并發(fā)送給頁面組件202,接著,在對頁面組件202進(jìn)行渲染時(shí),將頁面組件2021和2022中的數(shù)據(jù)類型、回調(diào)函數(shù)分別傳遞給頁面組件2021和2022,例如在一些實(shí)現(xiàn)中,電子設(shè)備可以分別將頁面組件2021、頁面組件2022這兩個下級組件中的數(shù)據(jù)元素、回調(diào)函數(shù)以及數(shù)據(jù)元素的數(shù)據(jù)類型等進(jìn)行緩存,在對頁面組件2021、頁面組件2022分別進(jìn)行渲染時(shí),從緩存中取出相應(yīng)頁面組件所需的數(shù)據(jù)元素、數(shù)據(jù)類型和回調(diào)函數(shù)進(jìn)行渲染。在對頁面組件2021進(jìn)行渲染時(shí),分別對其下級組件頁面組件20211、20212、20213的數(shù)據(jù)元素、回調(diào)函數(shù)以及數(shù)據(jù)元素的數(shù)據(jù)類型等進(jìn)行緩存;在對頁面組件2022進(jìn)行渲染時(shí),分別對其下級組件頁面組件20221、20222的數(shù)據(jù)元素、回調(diào)函數(shù)以及數(shù)據(jù)元素的數(shù)據(jù)類型等進(jìn)行緩存;以次類推。每個頁面組件而言,其數(shù)據(jù)元素、回調(diào)函數(shù)以及數(shù)據(jù)元素的數(shù)據(jù)類型都可以存儲在數(shù)據(jù)存儲區(qū)301中,數(shù)據(jù)存儲區(qū)中的這些數(shù)據(jù)組成了頁面201。圖3中示出的頁面組件間的數(shù)據(jù)流向從上級組件到下級組件,流向單一。
在本實(shí)施例的一些可選實(shí)現(xiàn)方式中,電子設(shè)備根據(jù)嵌套層次關(guān)系對各頁面組件進(jìn)行渲染時(shí),對上級組件進(jìn)行渲染過程中將其下級組件中數(shù)據(jù)元素、回調(diào)函數(shù)以及數(shù)據(jù)元素的數(shù)據(jù)類型進(jìn)行緩存,在對下級組件進(jìn)行渲染時(shí),可以先從緩存中取出所需數(shù)據(jù)類型進(jìn)行校驗(yàn),校驗(yàn)通過后再對該下級組件進(jìn)行渲染。可選地,下級組件對所需數(shù)據(jù)類型的校驗(yàn)可以包括但不限于對數(shù)據(jù)通訊協(xié)議的校驗(yàn)、數(shù)據(jù)類型字段的校驗(yàn)中的至少一種。當(dāng)電子設(shè)備在校驗(yàn)過程中確定緩存中數(shù)據(jù)元素的數(shù)據(jù)類型字段與所需數(shù)據(jù)類型字段一致時(shí),可以確定校驗(yàn)通過,此時(shí),電子設(shè)備可以將符合所需數(shù)據(jù)類型的數(shù)據(jù)元素保存到相應(yīng)頁面組件的存儲區(qū)(如頁面組件的聲明state等)中,并觸發(fā)預(yù)設(shè)的渲染方法(如render方法等)對該頁面組件進(jìn)行渲染。當(dāng)電子設(shè)備在校驗(yàn)過程中確 定緩存中數(shù)據(jù)元素的數(shù)據(jù)類型字段與所需數(shù)據(jù)類型字段不一致時(shí),可以進(jìn)一步確定數(shù)據(jù)異常,還可以給出數(shù)據(jù)異常通知。
在本實(shí)施例的一些可選實(shí)現(xiàn)方式中,對上級組件渲染時(shí)向下級組件傳遞數(shù)據(jù)元素和回調(diào)函數(shù)包括:將下級組件中的數(shù)據(jù)元素和回調(diào)函數(shù)通過引用傳遞的方式進(jìn)行緩存。引用傳遞,一般是指在調(diào)用函數(shù)時(shí)傳遞實(shí)際參數(shù)的地址。這里,電子設(shè)備可以將數(shù)據(jù)元素或回調(diào)函數(shù)的地址(如索引或指針的值)傳遞給下級組件,下級組件在讀取數(shù)據(jù)元素或調(diào)用回調(diào)函數(shù)時(shí),可以通過對數(shù)據(jù)元素或回調(diào)函數(shù)的地址的改變來改變所讀取的數(shù)據(jù)元素或所調(diào)用的回調(diào)函數(shù)。
在本實(shí)施例中,通過對頁面文檔的結(jié)構(gòu)進(jìn)行解析,獲取各頁面組件間的嵌套層次關(guān)系,然后按照嵌套層次關(guān)系從上級組件到下級組件的順序?qū)Ω黜撁娼M件進(jìn)行渲染,且渲染過程中由上級組件向下級組件傳遞數(shù)據(jù)元素和回調(diào)函數(shù),使數(shù)據(jù)流向單一,且不需使用代理服務(wù),組件間的耦合度低,從而可以提高頁面組件間的數(shù)據(jù)流向控制的有效性。
請參考圖4,圖4示出了根據(jù)本申請的頁面組件間的數(shù)據(jù)流向控制方法的又一個實(shí)施例的流程400。如圖4所示,流程400包括:
步驟401,對頁面文檔的結(jié)構(gòu)進(jìn)行解析,獲取頁面組件間的嵌套層次關(guān)系。
在本實(shí)施例中,電子設(shè)備可以首先對頁面文檔的結(jié)構(gòu)進(jìn)行解析,從而獲取頁面組件間的嵌套層次關(guān)系,其中,頁面組件可以包括數(shù)據(jù)元素和回調(diào)函數(shù)。例如,電子設(shè)備可以通過頁面文檔的結(jié)構(gòu),將頁面封裝成多個不同層次的頁面組件,每個頁面組件的最小單元可以包括數(shù)據(jù)元素和回調(diào)函數(shù)。不同層次的頁面組件間可以具有嵌套關(guān)系,構(gòu)成頁面組件間的嵌套層次關(guān)系。在該嵌套層次關(guān)系中,下級組件嵌套于上級組件。
步驟402,根據(jù)上述嵌套層次關(guān)系,按照從上級組件到下級組件的順序?qū)Ω黜撁娼M件進(jìn)行渲染。
在本實(shí)施例中,電子設(shè)備接著可以根據(jù)步驟401獲取的嵌套層次關(guān)系,按照從上級組件到下級組件的順序?qū)Ω黜撁娼M件進(jìn)行渲染。其 中,在上級組件渲染過程中,可以向下級組件傳遞下級組件需要的數(shù)據(jù)元素和回調(diào)函數(shù)。從而,頁面組件中數(shù)據(jù)元素和回調(diào)函數(shù)的數(shù)據(jù)流向?yàn)樯霞壗M件到下級組件。
步驟403,檢測各頁面組件的文檔屬性值是否發(fā)生變化。
在本實(shí)施例中,電子設(shè)備可以在頁面組件的渲染過程中或者渲染完成后,檢測頁面組件的文檔屬性值是否發(fā)生變化。這里,頁面組件的文檔屬性可以用來表示頁面組件中的各文檔對象(如html文檔對象)的屬性,例如數(shù)據(jù)元素或回調(diào)函數(shù)的引用類型—索引或指針,頁面組件的文檔屬性值可以是上述索引或指針的值。
可以理解,當(dāng)頁面組件的文檔屬性值發(fā)生變化時(shí),表示該頁面組件有新的數(shù)據(jù)元素加入,或者數(shù)據(jù)元素或回調(diào)函數(shù)的索引或指針的值發(fā)生變化,即數(shù)據(jù)元素或回調(diào)函數(shù)發(fā)生變化。
步驟404,如果任一頁面組件的文檔屬性值發(fā)生變化,通過回調(diào)函數(shù)向發(fā)生變化的頁面組件的上級組件發(fā)送上述變化的變化信息。
在本實(shí)施例中,如果任一頁面組件的文檔屬性值發(fā)生變化,電子設(shè)備可以將上述變化的變化信息通過回調(diào)函數(shù)發(fā)送給其上級組件。這里,變化信息可以包括發(fā)生變化的數(shù)據(jù)元素或回調(diào)函數(shù),以及其變化的屬性、變化前后的屬性值等。
作為示例,請參考圖3,如果電子設(shè)備檢測到頁面組件20211的某個數(shù)據(jù)元素(例如一個下拉框)的文檔屬性值發(fā)生變化,則可以通過調(diào)用頁面組件2021中的回調(diào)函數(shù)將變化信息發(fā)送給頁面組件2021,此時(shí),電子設(shè)備可以繼續(xù)檢測頁面組件2021的文檔屬性值是否發(fā)生變化,如果發(fā)生變化,則將頁面組件2021的變化信息發(fā)送給頁面組件202,如果不發(fā)生變化(如僅改變了相應(yīng)頁面組件的state等),則頁面組件2021接收頁面組件20211發(fā)送的變化信息并根據(jù)變化信息對自身數(shù)據(jù)或?qū)ο录壗M件的數(shù)據(jù)元素或回調(diào)函數(shù)的傳遞邏輯進(jìn)行調(diào)整。
步驟405,根據(jù)上述變化信息,將發(fā)生變化的頁面組件的上級組件和發(fā)生變化的頁面組件重新渲染。
在本實(shí)施例中,電子設(shè)備可以根據(jù)上述變化信息,將發(fā)生變化的頁面組件的上級組件和發(fā)生變化的頁面組件仍按照從上級組件到下級 組件的順序重新渲染。
請參考步驟404中以圖3為例給出的示例,頁面組件20211的文檔屬性值發(fā)生變化,進(jìn)一步地,頁面組件2021和202的文檔屬性值發(fā)生變化,則電子設(shè)備可以依次重新渲染頁面組件202、2021、20211??蛇x地,如果檢測到頁面組件2021的文檔屬性值發(fā)生變化,電子設(shè)備可以進(jìn)一步檢測在該變化的基礎(chǔ)上頁面組件202和頁面組件20211的文檔屬性值是否發(fā)生變化,假設(shè)頁面組件202的文檔屬性值沒有發(fā)生變化,而頁面組件20211的文檔屬性值發(fā)生變化,則電子設(shè)備可以依次重新渲染頁面組件2021和頁面組件20211。渲染過程和步驟402中一致,對上級組件進(jìn)行渲染時(shí)向下級組件傳遞數(shù)據(jù)元素和回調(diào)函數(shù),在此不再贅述。
在本實(shí)施例中,上述實(shí)現(xiàn)流程中的步驟401、步驟402分別與前述實(shí)施例中的步驟201、步驟202基本相同,在此不再贅述。
從圖4中可以看出,與圖2對應(yīng)的實(shí)施例不同的是,本實(shí)施例中的頁面組件間的數(shù)據(jù)流向控制方法的流程400增加了步驟403、404、405。通過增加的步驟403、404、405,本實(shí)施例突出了在頁面組件的文檔屬性值發(fā)生改變時(shí)對數(shù)據(jù)流向的控制,數(shù)據(jù)流向仍然為從上級組件到下級組件,保證了數(shù)據(jù)流向的單一,進(jìn)一步提高頁面組件間的數(shù)據(jù)流向控制的有效性。
請參考圖5,圖5示出了可以應(yīng)用本申請實(shí)施例的示例性系統(tǒng)架構(gòu)500。
如圖5所示,系統(tǒng)架構(gòu)500可以包括終端設(shè)備501、502、網(wǎng)絡(luò)503和服務(wù)器504。網(wǎng)絡(luò)503用以在終端設(shè)備501、502和服務(wù)器504之間提供通信鏈路的介質(zhì)。網(wǎng)絡(luò)503可以包括各種連接類型,例如有線、無線通信鏈路或者光纖電纜等等。
終端設(shè)備501、502可以通過網(wǎng)絡(luò)503與服務(wù)器504交互,以接收或發(fā)送消息等。終端設(shè)備501、502上可以安裝有各種通訊客戶端應(yīng)用,例如瀏覽器應(yīng)用、搜索類應(yīng)用、購物類應(yīng)用、理財(cái)類應(yīng)用、地圖類應(yīng)用、社交平臺應(yīng)用、郵箱客戶端、即時(shí)通信工具等等。
終端設(shè)備501、502可以是支持瀏覽器應(yīng)用等安裝于其上的各種電 子設(shè)備,包括但不限于智能手機(jī)、智能手表、平板電腦、個人數(shù)字助理、電子書閱讀器、mp3播放器(movingpictureexpertsgroupaudiolayeriii,動態(tài)影像專家壓縮標(biāo)準(zhǔn)音頻層面3)、mp4(movingpictureexpertsgroupaudiolayeriv,動態(tài)影像專家壓縮標(biāo)準(zhǔn)音頻層面4)播放器、膝上型便攜計(jì)算機(jī)和臺式計(jì)算機(jī)等等。
服務(wù)器504可以是提供各種服務(wù)的服務(wù)器。例如服務(wù)器504可以是對終端設(shè)備501、502的瀏覽器應(yīng)用等提供支持的后臺服務(wù)器等。服務(wù)器可以對接收到的數(shù)據(jù)進(jìn)行存儲、生成等處理,并將處理結(jié)果反饋給終端設(shè)備。
需要說明的是,本申請實(shí)施例所提供的頁面組件間的數(shù)據(jù)流向控制方法一般通過終端設(shè)備501、502執(zhí)行,但在一些情況下也可以通過服務(wù)器504執(zhí)行,本申請對此不做限定。相應(yīng)地,本申請實(shí)施例所提供的頁面組件間的數(shù)據(jù)流向控制裝置一般設(shè)置在端設(shè)備501、502中,也可以設(shè)置在服務(wù)器504中。
應(yīng)該理解,圖5中的終端設(shè)備、網(wǎng)絡(luò)和服務(wù)器的數(shù)目僅僅是示意性的。根據(jù)實(shí)現(xiàn)需要,可以具有任意數(shù)目的終端設(shè)備、網(wǎng)絡(luò)和服務(wù)器。
進(jìn)一步參考圖6,作為對上述各圖所示方法的實(shí)現(xiàn),本申請?zhí)峁┝艘环N頁面組件間的數(shù)據(jù)流向控制裝置的一個實(shí)施例,該裝置實(shí)施例與圖2所示的方法實(shí)施例相對應(yīng),該裝置具體可以應(yīng)用于電子設(shè)備(例如圖5所示的終端設(shè)備501、502等)中。
如圖6所示,本實(shí)施例所述的頁面組件間的數(shù)據(jù)流向控制裝置600包括:解析模塊601和渲染模塊602。其中,解析模塊601可以配置用于對頁面文檔的結(jié)構(gòu)進(jìn)行解析,獲取頁面組件間的嵌套層次關(guān)系,其中,頁面組件包括數(shù)據(jù)元素和回調(diào)函數(shù),該嵌套層次關(guān)系中,下級組件嵌套于上級組件;渲染模塊602可以配置用于根據(jù)上述嵌套層次關(guān)系,按照從上級組件到下級組件的順序?qū)Ω黜撁娼M件進(jìn)行渲染,其中,對上級組件渲染時(shí)向下級組件傳遞數(shù)據(jù)元素和回調(diào)函數(shù)。
在本實(shí)施例中,解析模塊601首先可以對頁面文檔的結(jié)構(gòu)進(jìn)行解析,從而獲取頁面組件間的嵌套層次關(guān)系,其中,頁面組件可以包括數(shù)據(jù)元素和回調(diào)函數(shù)。在嵌套層次關(guān)系中,下級組件嵌套于上級組件。 這里,頁面文檔可以包括但不限于以下文檔中的一種:html文檔、asp文檔、jsp文檔等等。
在本實(shí)施例中,渲染模塊602接著可以根據(jù)解析模塊601獲取的嵌套層次關(guān)系,按照從上級組件到下級組件的順序?qū)Ω黜撁娼M件進(jìn)行渲染。其中,在上級組件渲染過程中,可以向下級組件傳遞下級組件需要的數(shù)據(jù)元素和回調(diào)函數(shù)。從而,頁面組件中數(shù)據(jù)元素和回調(diào)函數(shù)的數(shù)據(jù)流向?yàn)樯霞壗M件到下級組件。
在本實(shí)施例的一些可選實(shí)現(xiàn)方式中,渲染模塊602可以包括緩存單元(未示出)和校驗(yàn)單元(未示出)。其中:緩存單元可以配置用于對上級組件進(jìn)行渲染時(shí),將下級組件中數(shù)據(jù)元素的數(shù)據(jù)類型進(jìn)行緩存;校驗(yàn)單元可以配置用于對下級組件進(jìn)行渲染時(shí),從緩存中取出所需數(shù)據(jù)類型進(jìn)行校驗(yàn),校驗(yàn)通過則進(jìn)行渲染??蛇x地,校驗(yàn)單元的校驗(yàn)包括對數(shù)據(jù)通訊協(xié)議的校驗(yàn)、數(shù)據(jù)類型字段的校驗(yàn)中的至少一種。
在本實(shí)施例的一些可選實(shí)現(xiàn)方式中,渲染模塊602還可以配置用于:將下級組件中的數(shù)據(jù)元素和回調(diào)函數(shù)通過引用傳遞的方式進(jìn)行緩存。這里,渲染模塊602在對上級組件進(jìn)行渲染時(shí),可以將下級組件的數(shù)據(jù)元素或回調(diào)函數(shù)的地址(如索引或指針的值)傳遞給下級組件,下級組件在讀取數(shù)據(jù)元素或調(diào)用回調(diào)函數(shù)時(shí),可以通過對數(shù)據(jù)元素或回調(diào)函數(shù)的地址的改變來改變所讀取的數(shù)據(jù)元素或所調(diào)用的回調(diào)函數(shù)。
在本實(shí)施例的一些可選實(shí)現(xiàn)方式中,裝置600還可以包括檢測模塊(未示出)和發(fā)送模塊(未示出)。其中:檢測模塊可以配置用于檢測各頁面組件的文檔屬性值是否發(fā)生變化,其中,文檔屬性值包括頁面組件中的數(shù)據(jù)元素或回調(diào)函數(shù)的索引或指針的值;發(fā)送模塊可以配置用于如果任一頁面組件的文檔屬性值發(fā)生變化,通過回調(diào)函數(shù)向發(fā)生變化的頁面組件的上級組件發(fā)送所述變化的變化信息。此時(shí),渲染模塊602還可以配置用于根據(jù)上述變化信息,將發(fā)生變化的頁面組件的上級組件和發(fā)生變化的頁面組件重新渲染。
值得說明的是,頁面組件間的數(shù)據(jù)流向控制裝置600中記載的諸模塊或單元與參考圖2描述的方法中的各個步驟相對應(yīng)。由此,上文 針對方法描述的操作和特征同樣適用于頁面組件間的數(shù)據(jù)流向控制裝置600及其中包含的模塊或單元,在此不再贅述。
本領(lǐng)域技術(shù)人員可以理解,上述頁面組件間的數(shù)據(jù)流向控制裝置600還包括一些其他公知結(jié)構(gòu),例如處理器、存儲器等,為了不必要地模糊本公開的實(shí)施例,這些公知的結(jié)構(gòu)在圖6中未示出。
下面參考圖7,其示出了適于用來實(shí)現(xiàn)本申請實(shí)施例的服務(wù)器或終端的計(jì)算機(jī)系統(tǒng)700的結(jié)構(gòu)示意圖。
如圖7所示,計(jì)算機(jī)系統(tǒng)700包括中央處理單元(cpu)701,其可以根據(jù)存儲在只讀存儲器(rom)702中的程序或者從存儲部分708加載到隨機(jī)訪問存儲器(ram)703中的程序而執(zhí)行各種適當(dāng)?shù)膭幼骱吞幚?。在ram703中,還存儲有系統(tǒng)700操作所需的各種程序和數(shù)據(jù)。cpu701、rom702以及ram703通過總線704彼此相連。輸入/輸出(i/o)接口705也連接至總線704。
以下部件連接至i/o接口705:包括鍵盤、鼠標(biāo)等的輸入部分706;包括諸如陰極射線管(crt)、液晶顯示器(lcd)等以及揚(yáng)聲器等的輸出部分707;包括硬盤等的存儲部分708;以及包括諸如lan卡、調(diào)制解調(diào)器等的網(wǎng)絡(luò)接口卡的通信部分709。通信部分709經(jīng)由諸如因特網(wǎng)的網(wǎng)絡(luò)執(zhí)行通信處理。驅(qū)動器710也根據(jù)需要連接至i/o接口705??刹鹦督橘|(zhì)711,諸如磁盤、光盤、磁光盤、半導(dǎo)體存儲器等等,根據(jù)需要安裝在驅(qū)動器710上,以便于從其上讀出的計(jì)算機(jī)程序根據(jù)需要被安裝入存儲部分708。
特別地,根據(jù)本申請的實(shí)施例,上文參考流程圖描述的過程可以被實(shí)現(xiàn)為計(jì)算機(jī)軟件程序。例如,本申請的實(shí)施例包括一種計(jì)算機(jī)程序產(chǎn)品,其包括有形地包含在機(jī)器可讀介質(zhì)上的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序包含用于執(zhí)行流程圖所示的方法的程序代碼。在這樣的實(shí)施例中,該計(jì)算機(jī)程序可以通過通信部分709從網(wǎng)絡(luò)上被下載和安裝,和/或從可拆卸介質(zhì)711被安裝。
本申請實(shí)施例中所涉及到的單元可以通過軟件的方式實(shí)現(xiàn),也可以通過硬件的方式來實(shí)現(xiàn)。所描述的模塊也可以設(shè)置在處理器中,例如,可以描述為:一種處理器包括解析模塊和渲染模塊。其中這些模 塊的名稱在某種情況下并不構(gòu)成對該模塊本身的限定,例如,分組模塊還可以被描述為“配置用于對頁面文檔的結(jié)構(gòu)進(jìn)行解析,獲取頁面組件間的嵌套層次關(guān)系的模塊”。
作為另一方面,本申請還提供了一種計(jì)算機(jī)可讀存儲介質(zhì),該計(jì)算機(jī)可讀存儲介質(zhì)可以是上述實(shí)施例中所述裝置中所包含的計(jì)算機(jī)可讀存儲介質(zhì);也可以是單獨(dú)存在,未裝配入終端中的計(jì)算機(jī)可讀存儲介質(zhì)。所述計(jì)算機(jī)可讀存儲介質(zhì)存儲有一個或者一個以上程序,當(dāng)所述程序被一個或者一個以上的處理器執(zhí)行時(shí),使得所述設(shè)備:對頁面文檔的結(jié)構(gòu)進(jìn)行解析,獲取頁面組件間的嵌套層次關(guān)系,其中,所述頁面組件包括數(shù)據(jù)元素和回調(diào)函數(shù),所述嵌套層次關(guān)系中,下級組件嵌套于上級組件;根據(jù)所述嵌套層次關(guān)系,按照從上級組件到下級組件的順序?qū)Ω黜撁娼M件進(jìn)行渲染,其中,對上級組件渲染時(shí)向下級組件傳遞數(shù)據(jù)元素和回調(diào)函數(shù)。
以上描述僅為本申請的較佳實(shí)施例以及對所運(yùn)用技術(shù)原理的說明。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,本申請中所涉及的發(fā)明范圍,并不限于上述技術(shù)特征的特定組合而成的技術(shù)方案,同時(shí)也應(yīng)涵蓋在不脫離所述發(fā)明構(gòu)思的情況下,由上述技術(shù)特征或其等同特征進(jìn)行任意組合而形成的其它技術(shù)方案。例如上述特征與本申請中公開的(但不限于)具有類似功能的技術(shù)特征進(jìn)行互相替換而形成的技術(shù)方案。