本發(fā)明涉及互聯(lián)網技術領域,特別是涉及一種頁面渲染方法、裝置及設備。
背景技術:
頁面通常是由對象組成的,這些對象被組織在一個樹形結構中,另外,頁面中的對象通常是以模型的形式表示的,用來表示上述對象所在樹形結構的標準模型稱為dom(documentobjectmodel,文檔對象模型),另外,在dom的基礎上增加抽象層構成虛擬dom,在頁面內容發(fā)生變化的時候,通過對抽象層的操作能夠提高直接對dom操作的效率。
由于越來越多的web應用采用了spa(singlepageapplication單頁應用)的構架方式,web頁面的變化不再是從服務器獲取一個全新的頁面而是由前端應用框架中根據(jù)虛擬dom的路由處理變化進行處理,且虛擬dom由可以路由的虛擬dom節(jié)點(也可以叫做路由節(jié)點)來組成。而一個虛擬dom包含多個路由節(jié)點,依次相連通的多個路由節(jié)點形成一條路由。另外,一個頁面中可以通過頁面切換進行展示不同的url的內容,且每一url在虛擬dom中對應一條路由。
然而,發(fā)明人在實現(xiàn)本發(fā)明的過程中發(fā)現(xiàn),現(xiàn)有技術至少存在如下問題:現(xiàn)有技術中,以在瀏覽器中進行頁面渲染為例,當前頁面展示的url內容對應的路由,記為第二路由;對路由進行壓棧、出?;蛘咛鎿Q等操作后,要展示的頁面內容所對應的路由,記為第一路由;
當前頁面展示的內容發(fā)生切換時,頁面渲染過程如下:
從第二路由切換至第一路由;
根據(jù)路由切換后的虛擬dom,重新構建真實dom;
根據(jù)重新構建的真實dom進行頁面渲染。
上述頁面渲染過程中,從第二路由切換至第一路由時,會釋放所有屬于第二路由但是不屬于第一路由的路由節(jié)點,這樣每次進行頁面內容切換時,需重新創(chuàng)建所有屬于第一路由但不屬于第二路由的路由節(jié)點,進而導致頁面切換效率低,用戶體驗差。
技術實現(xiàn)要素:
本發(fā)明實施例的目的在于提供一種文檔對象模型渲染方法、裝置及設備,以提高頁面切換效率,增強用戶體驗。具體技術方案如下:
本發(fā)明實施例提供一種頁面渲染方法,應用于終端設備,所述方法包括:
接收針對當前頁面的頁面內容切換命令;
將當前頁面對應的虛擬文檔對象模型中第一類路由節(jié)點的狀態(tài)切換為激活狀態(tài),將所述虛擬文檔對象中第二類路由節(jié)點切換為非激活狀態(tài),并更新路由節(jié)點狀態(tài)列表中記錄的所述第一類路由節(jié)點和所述第二類路由節(jié)點的狀態(tài),其中,所述第一類路由節(jié)點為:所述路由節(jié)點狀態(tài)列表中記錄有狀態(tài)、屬于第一路由且不屬于第二路由的路由節(jié)點,所述第二類路由節(jié)點為:所述路由節(jié)點狀態(tài)列表中記錄有狀態(tài)、屬于所述第二路由且不屬于所述第一路由的路由節(jié)點,所述第一路由為:切換后的頁面內容對應的路由,所述第二路由為:切換前的頁面內容對應的路由,所述路由節(jié)點狀態(tài)列表,用于存儲所述虛擬文檔對象中各個路由節(jié)點的狀態(tài);
根據(jù)切換路由節(jié)點狀態(tài)后的所述虛擬文檔對象模型對當前頁面進行頁面渲染,進而在當前頁面中顯示切換后的頁面內容。
可選的,所述根據(jù)切換路由節(jié)點狀態(tài)后的所述虛擬文檔對象模型對當前頁面進行頁面渲染,進而在當前頁面中顯示切換后的頁面內容,包括:
在所述第一路由中包含第三類路由節(jié)點的情況下,在所述虛擬文檔對象模型中創(chuàng)建所述第三類路由節(jié)點,其中,所述第三類路由節(jié)點為:所述路由節(jié)點狀態(tài)列表中未記錄有狀態(tài)、且屬于所述第一路由的路由節(jié)點;
設置所述第三類路由節(jié)點的狀態(tài)為激活狀態(tài),并將所述第三類路由節(jié)點的狀態(tài)更新至所述路由節(jié)點狀態(tài)列表中;
根據(jù)切換路由節(jié)點狀態(tài)、創(chuàng)建新路由節(jié)點后的所述虛擬文檔對象模型對當前頁面進行頁面渲染,進而在當前頁面中顯示切換后的頁面內容。
可選的,所述路由節(jié)點狀態(tài)列表,還用于存儲所述虛擬文檔對象中各個路由節(jié)點的引用計數(shù);
在所述頁面內容切換命令為出棧操作時,在所述將所述虛擬文檔對象中第二類路由節(jié)點切換為非激活狀態(tài)之后,還包括:
對所述路由節(jié)點狀態(tài)列表中記錄的所述第二路由上的路由節(jié)點的引用計數(shù)進行計數(shù)減少處理。
可選的,在所述頁面內容切換命令為壓棧操作時,在所述將當前頁面對應的虛擬文檔對象模型中第一類路由節(jié)點的狀態(tài)切換為激活狀態(tài)之后,還包括:
對所述路由節(jié)點狀態(tài)列表中記錄的所述第一路由上的路由節(jié)點的引用計數(shù)進行計數(shù)增加處理。
可選的,所述方法還包括:
根據(jù)所述路由節(jié)點狀態(tài)列表,檢測是否存在引用計數(shù)等于預設數(shù)值的路由節(jié)點;
若為是,從所述路由節(jié)點狀態(tài)列表中刪除該節(jié)點的信息,并對所述虛擬文檔對象模型中的該節(jié)點進行刪除回收處理。
本發(fā)明實施例還提供了一種頁面渲染裝置,應用于終端設備,所述裝置包括:
接收模塊,用于接收針對當前頁面的頁面內容切換命令;
激活模塊,用于將當前頁面對應的虛擬文檔對象模型中第一類路由節(jié)點的狀態(tài)切換為激活狀態(tài),將所述虛擬文檔對象中第二類路由節(jié)點切換為非激活狀態(tài),并更新路由節(jié)點狀態(tài)列表中記錄的所述第一類路由節(jié)點和所述第二類路由節(jié)點的狀態(tài),其中,所述第一類路由節(jié)點為:所述路由節(jié)點狀態(tài)列表中記錄有狀態(tài)、屬于第一路由且不屬于第二路由的路由節(jié)點,所述第二類路由節(jié)點為:所述路由節(jié)點狀態(tài)列表中記錄有狀態(tài)、屬于所述第二路由且不屬于所述第一路由的路由節(jié)點,所述第一路由為:切換后的頁面內容對應的路由,所述第二路由為:切換前的頁面內容對應的路由,所述路由節(jié)點狀態(tài)列表,用于存儲所述虛擬文檔對象中各個路由節(jié)點的狀態(tài);
渲染模塊,用于根據(jù)切換路由節(jié)點狀態(tài)后的所述虛擬文檔對象模型對當前頁面進行頁面渲染,進而在當前頁面中顯示切換后的頁面內容。
可選的,所述渲染模塊,包括:
創(chuàng)建子模塊,用于在所述第一路由中包含第三類路由節(jié)點的情況下,在所述虛擬文檔對象模型中創(chuàng)建所述第三類路由節(jié)點,其中,所述第三類路由節(jié)點為:所述路由節(jié)點狀態(tài)列表中未記錄有狀態(tài)、且屬于所述第一路由的路由節(jié)點;
設置子模塊,用于設置所述第三類路由節(jié)點的狀態(tài)為激活狀態(tài),并將所述第三類路由節(jié)點的狀態(tài)更新至所述路由節(jié)點狀態(tài)列表中;
渲染子模塊,用于根據(jù)切換路由節(jié)點狀態(tài)、創(chuàng)建新路由節(jié)點后的所述虛擬文檔對象模型對當前頁面進行頁面渲染,進而在當前頁面中顯示切換后的頁面內容。
可選的,所述路由節(jié)點狀態(tài)列表,還用于存儲所述虛擬文檔對象中各個路由節(jié)點的引用計數(shù);
在激活模塊之后,還包括:減少模塊;
所述減少模塊,用于對所述路由節(jié)點狀態(tài)列表中記錄的所述第二路由上的路由節(jié)點的引用計數(shù)進行計數(shù)減少處理。
可選的,在所述頁面內容切換命令為壓棧操作時,在所述激活模塊之后,還包括:增加模塊,
所述增加模塊,用于對所述路由節(jié)點狀態(tài)列表中記錄的所述第一路由上的路由節(jié)點的引用計數(shù)進行計數(shù)增加處理。
可選的,所述裝置還包括:
檢測模塊,用于根據(jù)所述路由節(jié)點狀態(tài)列表,檢測是否存在引用計數(shù)等于預設數(shù)值的路由節(jié)點;
刪除模塊,用于在檢測模塊檢測到存在引用計數(shù)等于預設數(shù)值的路由節(jié)點,從所述路由節(jié)點狀態(tài)列表中刪除該節(jié)點的信息,并對所述虛擬文檔對象模型中的該節(jié)點進行刪除回收處理。
本發(fā)明實施例還提供了一種頁面渲染設備,包括處理器、通信接口、存儲器和通信總線,其中,處理器,通信接口,存儲器通過通信總線完成相互間的通信;
存儲器,用于存放計算機程序;
處理器,用于執(zhí)行存儲器上所存放的程序時,實現(xiàn)上述任一所述的頁面渲染方法步驟。
在本發(fā)明實施的又一方面,還提供了一種計算機可讀存儲介質,所述計算機可讀存儲介質中存儲有指令,當其在計算機上運行時,使得計算機執(zhí)行上述任一所述的頁面渲染方法。
在本發(fā)明實施的又一方面,本發(fā)明實施例還提供了一種包含指令的計算機程序產品,當其在計算機上運行時,使得計算機執(zhí)行上述任一所述的頁面渲染方法。
本發(fā)明實施例提供的一種頁面渲染方法、裝置及設備,在接收到切面內容切換命令后,將當前頁面對應的vdom中的第一類路由節(jié)點狀態(tài)切換為激活狀態(tài),同時為了避免當前頁面的內容對切換后頁面內容的影響,將vdom第二類路由節(jié)點的狀態(tài)切換為非激活狀態(tài),進而根據(jù)切換了路由節(jié)點狀態(tài)后的vdom進行切換后頁面的渲染。本發(fā)明實施例,通過對vdom中的路由節(jié)點狀態(tài)進行修改,而并不需要重新構建一個vdom,因此,解決了現(xiàn)有技術中每次進行頁面內容切換均需重新創(chuàng)建所有屬于第一路由但不屬于第二路由的路由節(jié)點,而導致頁面切換效率低以及用戶體驗差的問題。所以,能夠提高頁面切換效率,增強用戶體驗。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹。
圖1為本發(fā)明實施例提供的頁面渲染方法的一種流程示意圖;
圖2為應用本發(fā)明實施例提供的頁面渲染方法的一種實例示意圖;
圖3為應用本發(fā)明實施例提供的頁面渲染方法的另一種實例示意圖;
圖4為本發(fā)明實施例提供的頁面渲染方法的另一種流程示意圖;
圖5為應用本發(fā)明實施例提供的頁面渲染方法的再一種實例示意圖;
圖6為本發(fā)明實施例提供的頁面渲染方法的再一種流程示意圖;
圖7為本發(fā)明實施例提供的頁面渲染裝置的一種結構示意圖;
圖8為本發(fā)明實施例提供的頁面渲染裝置的另一種結構示意圖;
圖9為本發(fā)明實施例提供的頁面渲染裝置的再一種結構示意圖;
圖10為本發(fā)明實施例提供的頁面渲染設備的結構示意圖。
具體實施方式
下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行描述。
為解決現(xiàn)有技術問題,本發(fā)明實施例提供了一種頁面渲染方法、裝置及設備,以下進行詳細說明。
需要說明的是,本發(fā)明實施例提供的一種頁面渲染方法的執(zhí)行主體可以為一種頁面渲染裝置。在實際應用中,該頁面渲染裝置可以為運行于終端設備中,在用戶需要進行頁面渲染時使用,這都是合理的。
參見圖1,圖1為本發(fā)明實施例提供的頁面渲染方法的一種流程示意圖,應用于終端設備,所述方法包括步驟:
s101,接收針對當前頁面的頁面內容切換命令。
需要說明的是,終端設備中可以安裝應用程序,如瀏覽器、新聞應用軟件、購物軟件等等,這些軟件在手機中進行顯示的特點是:通過spa的概念可以得知,單頁應用,就是只有一張web頁面的應用,也就是說當前只能顯示一個頁面,對軟件進行操作時,通過當前頁面對應的內容的變化進行不同內容的顯示。
需要說明的是,傳統(tǒng)的網站都是多頁面的,每次點擊一個鏈接就會打開一個新的頁面,但是spa是一旦打開這個網站,這個“頁面”就會一次性的下載到本地。spa頁面給用戶最直觀的一個感受是,每次點擊一個鏈接,頁面是不會刷新的。所以用戶體驗更接近于本地應用,舒適感提高很多。
示例性的,對新聞應用軟件對應的當前頁面執(zhí)行前進動作,那么前進動作為對當前頁面的頁面內容切換命令;對當前頁面執(zhí)行后退動作,那么后退動作為對當前頁面的頁面切換命令。頁面的前進、后退動作是本發(fā)明實施例中示例性的頁面內容切換命令,不構成對本發(fā)明實施例的具體限定。
s102,將當前頁面對應的虛擬文檔對象模型中第一類路由節(jié)點的狀態(tài)切換為激活狀態(tài),將所述虛擬文檔對象中第二類路由節(jié)點切換為非激活狀態(tài),并更新路由節(jié)點狀態(tài)列表中記錄的所述第一類路由節(jié)點和所述第二類路由節(jié)點的狀態(tài)。
可以理解的是,以新聞應用軟件為例,該軟件當前顯示的頁面內容會對應一個虛擬文檔對象模型(virtualdocumentobjectmodel,簡稱:vdom),vdom可以以一種獨立于平臺和語言的方式訪問和修改一個文檔的內容和結構,換句話說,這是表示和處理一個html或xml文檔的常用方法。
需要說明的是,vdom是樹狀結構,示例性的,圖2是當前頁面對應的vdom樹狀結構圖,路由節(jié)點0是根節(jié)點,路由節(jié)點0下面包含路由節(jié)點a和路由節(jié)點b,路由節(jié)點a與路由節(jié)點a1相連,路由節(jié)點a1與路由節(jié)點a2相連;路由節(jié)點b分別與路由節(jié)點b1、b2相連,路由節(jié)點b2與路由節(jié)點b21相連,路由節(jié)點b1與路由節(jié)點b11相連。
本發(fā)明實施例中,vdom中路由節(jié)點的狀態(tài)有的是激活狀態(tài),有的是非激活狀態(tài)。激活狀態(tài)表示該路由節(jié)點將其表示的內容通過vdom渲染在頁面中,即這些路由節(jié)點能響應用戶輸入,運行相關動畫、邏輯;而非激活狀態(tài)表示該路由節(jié)點存在vdom中,但其動畫和邏輯停止,不能響應用戶的輸入。
針對vdom中的每一個路由節(jié)點,對應的狀態(tài)均記錄在路由節(jié)點狀態(tài)列表中,示例性的,圖2中,路由節(jié)點b2、b21的狀態(tài)為非激活狀態(tài),路由節(jié)點b、路由節(jié)點b1和路由節(jié)點b11均為激活狀態(tài)。
本發(fā)明實施例中,當前頁面內容對應的路由為第二路由,具體的第二路由的組成為:路由節(jié)點b、路由節(jié)點b1、路由節(jié)點b11,且依次相連;當對當前頁面執(zhí)行頁面內容切換命令以后,終端設備中會獲得切換后的頁面對應的路由,即第一路由??梢岳斫獾氖?,每一個頁面對應的路由均存儲在終端設備中,所以在獲得切換命令以后就能夠根據(jù)切換后的頁面得到其對應的路由。示例性的,對當前頁面執(zhí)行前進動作以后,切換后的頁面對應的第一路由包含的路由節(jié)點為:b、b2、b21,b、b2、b21依次相連,且第一路由和第二路由中的路由節(jié)點均記錄在路由節(jié)點狀態(tài)列表中。
本發(fā)明實施例中,定義第一類路由節(jié)點為:所述路由節(jié)點狀態(tài)列表中記錄有狀態(tài)、屬于第一路由且不屬于第二路由的路由節(jié)點,所述第二類路由節(jié)點為:所述路由節(jié)點狀態(tài)列表中記錄有狀態(tài)、屬于所述第二路由且不屬于所述第一路由的路由節(jié)點,那么結合上述實例,可以得到第一類路由節(jié)點為:路由節(jié)點b2、路由節(jié)點b21;第二類路由節(jié)點為:路由節(jié)點b1、路由節(jié)點b11。
因為第一類路由節(jié)點b2、b21均包含在vdom中,那么將對vdom中的路由節(jié)點進行以下操作:b2、b21的狀態(tài)由非激活狀態(tài)切換為激活狀態(tài);且將第二類路由節(jié)點b1、b11的狀態(tài)由激活狀態(tài)切換為非激活狀態(tài)。并相應的,將原先記錄在路由狀態(tài)列表中的b2、b21的狀態(tài)由非激活狀態(tài)記錄為激活狀態(tài);b1、b11的狀態(tài)由激活狀態(tài)記錄為非激活狀態(tài)。
s103,根據(jù)切換路由節(jié)點狀態(tài)后的所述虛擬文檔對象模型對當前頁面進行頁面渲染,進而在當前頁面中顯示切換后的頁面內容。
需要說明的是,在s102中完成了當前頁面對應的vdom中需要進行狀態(tài)切換的路由節(jié)點的狀態(tài)切換后,切換后的頁面對應的第一路由中的路由節(jié)點b、b2、b21均為激活狀態(tài),第二路由中的路由節(jié)點b、b1、b11中除了與第一路由節(jié)點共有的路由節(jié)點b外,其他的均處于非激活狀態(tài)??梢岳斫獾氖堑诙酚晒?jié)點中除了與第一路由節(jié)點公共的節(jié)點,其他的路由節(jié)點是不對切換后的頁面做出任何貢獻的,所以將其設置為非激活的狀態(tài),以免影響切換后的頁面顯示。
可以理解的是,根據(jù)進行路由節(jié)點狀態(tài)切換后的vdom構建用于頁面渲染的真實dom,從而渲染切換后的頁面。具體的實現(xiàn)過程為現(xiàn)有技術,本發(fā)明實施例不對其進行贅述。
應用本發(fā)明圖1所示的實施例,在接收到切面內容切換命令后,將當前頁面對應的vdom中的第一類路由節(jié)點狀態(tài)切換為激活狀態(tài),同時為了避免當前頁面的內容對切換后內容的影響,將vdom第二類路由節(jié)點的狀態(tài)切換為非激活狀態(tài),進而根據(jù)切換了路由節(jié)點狀態(tài)后的vdom進行切換后頁面的渲染。本發(fā)明實施例提供的方案中,通過對vdom中的路由節(jié)點狀態(tài)進行修改,而并不需要重新構建一個vdom,因此,解決了現(xiàn)有技術中每次進行頁面內容切換均需重新創(chuàng)建所有屬于第一路由但不屬于第二路由的路由節(jié)點,而導致頁面切換效率低以及用戶體驗差的問題。所以,能夠提高頁面切換效率,增強用戶體驗。
在本發(fā)明圖1所示的實施例中,第一路由中的路由節(jié)點在路由節(jié)點狀態(tài)表中均有記錄,而在實際應用中,切換后頁面的第一路由中的路由節(jié)點未必全部記錄在路由節(jié)點狀態(tài)列表中,本發(fā)明實施例提供了一種在第一路由中的路由節(jié)點未全部記錄在路由節(jié)點狀態(tài)列表中的情況下,進行頁面渲染方案,以下進行詳細說明。
需要說明的是,第三類路由節(jié)點為:所述路由節(jié)點狀態(tài)列表中未記錄有狀態(tài)、且屬于所述第一路由的路由節(jié)點,在第一路由中包含第三類路由節(jié)點的情況下,在所述虛擬文檔對象模型中創(chuàng)建所述第三類路由節(jié)點。可以理解的是,第一路由中包含的路由節(jié)點是為了渲染切換后頁面所必須的路由節(jié)點,所以當在第一路由中有未記錄在路由狀態(tài)列表中的第三類路由節(jié)點時,要在vdom中進行創(chuàng)建。
可以理解的是,切換后頁面對應的第一路由的所有路由節(jié)點不僅要存在于vdom中還要在vdom中的狀態(tài)為激活狀態(tài),所以將第三類路由節(jié)點設置為激活狀態(tài),并將第三類路由節(jié)點的當前激活狀態(tài)更新至路由節(jié)點狀態(tài)列表中。
示例性的,第一路由包含的路由節(jié)點為:b、b2、b21、b22,且依次連接,經s102步驟更新路由節(jié)點狀態(tài)列表后的路由節(jié)點及狀態(tài)分別為:b1、b11的狀態(tài)為非激活狀態(tài);b、b2、b21、0、a、a1的狀態(tài)為激活狀態(tài),由于b22并未記錄在路由節(jié)點狀態(tài)列表中,那么第三類路由節(jié)點為:b22。那么針對切換前頁面對應的vdom,創(chuàng)建路由節(jié)點b22,創(chuàng)建了第三類路由節(jié)點的vdom如圖3所示,再將路由節(jié)點b22的狀態(tài)設置為激活狀態(tài),并將路由節(jié)點狀態(tài)列表中增加b22的信息,且狀態(tài)為激活狀態(tài)。
需要說明的是,目前路由節(jié)點狀態(tài)列表為:b1、b11的狀態(tài)為非激活狀態(tài);b、b2、b21、0、a、a1、b22的狀態(tài)為激活狀態(tài),再根據(jù)圖3所示的虛擬文檔對象模型對當前頁面進行頁面渲染,也就是,根據(jù)切換路由節(jié)點狀態(tài)、創(chuàng)建新路由節(jié)點后的虛擬文檔對象模型對當前頁面進行頁面渲染,進而在當前頁面中顯示切換后的頁面內容。
應用本發(fā)明的實施例,能夠解決在第一路由中的路由節(jié)點并未記錄在路由節(jié)點狀態(tài)列表時,通過創(chuàng)建該路由狀態(tài)列表并進行激活,再進行頁面渲染。
圖4為本發(fā)明實施例提供的頁面渲染方法的另一種流程示意圖,所述路由節(jié)點狀態(tài)列表,還用于存儲所述虛擬文檔對象中各個路由節(jié)點的引用計數(shù);在s102之后,增加s104。
s104,對所述路由節(jié)點狀態(tài)列表中記錄的所述第二路由上的路由節(jié)點的引用計數(shù)進行計數(shù)減少處理。
需要說明的是,在s102中,每次將第二路由中的一些路由節(jié)點設置為非激活狀態(tài),那么多次進行切換以后,vdom中非激活的節(jié)點數(shù)量會越來越多,久之非常占用終端設備內存,在頁面的渲染過程中將會影響頁面的渲染速度和效率。
本發(fā)明實施例中,路由節(jié)點狀態(tài)列表中可以記錄有當前頁面對應的vdom中所有路由節(jié)點的引用計數(shù),在s104之后還可以包括:
s105,根據(jù)所述路由節(jié)點狀態(tài)列表,檢測路由節(jié)點狀態(tài)列表中是否存在引用計數(shù)等于預設數(shù)值的路由節(jié)點;如果存在,執(zhí)行s106;如果不存在,結束。
s106,從路由節(jié)點狀態(tài)列表中刪除該節(jié)點的信息,并對虛擬文檔對象模型中的該節(jié)點進行刪除回收處理。
可以理解的是,在路由節(jié)點的計數(shù)等于預設數(shù)值時,將采用s106進行刪除節(jié)點在路由節(jié)點狀態(tài)列表中的信息以及節(jié)點的刪除,所以路由節(jié)點的計數(shù)不等于預設數(shù)值時,那么路由節(jié)點的計數(shù)大于預設數(shù)值,所以程序處理結束??梢岳斫獾氖牵淮嬖谟嫈?shù)小于預設數(shù)值的情況,實際應用中,可以將預設數(shù)值設為0,那么在進行相應的計數(shù)減少操作以后,只要計數(shù)數(shù)值為0則進行刪除處理,因此不會存在計數(shù)小于0的路由節(jié)點。
示例性的,第二路由中的路由節(jié)點為b、b1、b11,在路由節(jié)點狀態(tài)列表中的引用計數(shù)為2、1、1,且對應的狀態(tài)分別為:激活狀態(tài)、非激活狀態(tài)、非激活狀態(tài)。對第二路由中的每一個路由節(jié)點做引用計數(shù)減少的處理,即b、b1、b11的引用計數(shù)分別減1(本發(fā)明實施例中為減少處理為減1處理,也可以為減2處理,等等),減少后的b、b1、b11的引用計數(shù)分別為1、0、0。當預設數(shù)值為0時,由于路由節(jié)點狀態(tài)列表中,b1、b11的引用計數(shù)為0,即等于預設數(shù)值0,所以從路由節(jié)點狀態(tài)列表中刪除記錄b1、b11的非激活狀態(tài)、以及引用計數(shù)為0的信息,并在vdom中刪除回收b1、b11,如圖5所示。由于路由節(jié)點b的引用計數(shù)減少后為1,仍然大于預設數(shù)值0,所以在路由狀態(tài)列表中路由節(jié)點b的狀態(tài)為激活狀態(tài)、引用計數(shù)為1。
應用本發(fā)明實施例,在第二類路由節(jié)點的引用計數(shù)減少后,存在路由節(jié)點的引用計數(shù)值等于預設值時,刪除第這些路由節(jié)點,從而達到減少非激活狀態(tài)的節(jié)點占用內存的目的。
圖6為本發(fā)明實施例提供的頁面渲染方法的再一種流程示意圖,在所述頁面內容切換命令為壓棧操作時,在所述s102之后,增加s105。
s105,對所述路由節(jié)點狀態(tài)列表中記錄的所述第一路由上的路由節(jié)點的引用計數(shù)進行計數(shù)增加處理。
可以理解的是,當用戶對當前頁面的執(zhí)行壓棧操作時,執(zhí)行壓榨操作后的頁面對應的第一路由中的所有路由節(jié)點的引用計數(shù)均進行增加處理。示例性的,第一路由為:路由節(jié)點b、路由節(jié)點b2、路由節(jié)點b21依次連接組成,由于路由節(jié)點b在路由節(jié)點狀態(tài)列表中已記錄,且假設其引用計數(shù)為1;路由節(jié)點b2、路由節(jié)點b21在路由節(jié)點狀態(tài)列表中均未有記錄(沒有記錄的默認為預設值,預設值可以為0),那么對第一路由上的路由節(jié)點的引用計數(shù)進行計數(shù)增加處理得到的路由節(jié)點b、路由節(jié)點b2、路由節(jié)點b21的引用計數(shù)分別為:1+1=2、0+1=1、0+1=1。
應用本發(fā)明的實施例,用戶在執(zhí)行壓棧操作后終端設備對第一路由中的路由節(jié)點的引用計數(shù)進行增加處理后,以使得在vdom中的處于激活狀態(tài)的路由節(jié)點引用計數(shù)不小于預設值。
參見圖7,圖7為本發(fā)明實施例提供的頁面渲染裝置的一種結構示意圖,應用于終端設備,所述裝置包括:
接收模塊701,用于接收針對當前頁面的頁面內容切換命令;
激活模塊702,用于將當前頁面對應的虛擬文檔對象模型中第一類路由節(jié)點的狀態(tài)切換為激活狀態(tài),將所述虛擬文檔對象中第二類路由節(jié)點切換為非激活狀態(tài),并更新路由節(jié)點狀態(tài)列表中記錄的所述第一類路由節(jié)點和所述第二類路由節(jié)點的狀態(tài),其中,所述第一類路由節(jié)點為:所述路由節(jié)點狀態(tài)列表中記錄有狀態(tài)、屬于第一路由且不屬于第二路由的路由節(jié)點,所述第二類路由節(jié)點為:所述路由節(jié)點狀態(tài)列表中記錄有狀態(tài)、屬于所述第二路由且不屬于所述第一路由的路由節(jié)點,所述第一路由為:切換后的頁面內容對應的路由,所述第二路由為:切換前的頁面內容對應的路由,所述路由節(jié)點狀態(tài)列表,用于存儲所述虛擬文檔對象中各個路由節(jié)點的狀態(tài);
渲染模塊703,用于根據(jù)切換路由節(jié)點狀態(tài)后的所述虛擬文檔對象模型對當前頁面進行頁面渲染,進而在當前頁面中顯示切換后的頁面內容。
具體的,所述渲染模塊703,可以包括:創(chuàng)建子模塊、設置子模塊和渲染子模塊;其中,
創(chuàng)建子模塊,用于在所述第一路由中包含第三類路由節(jié)點的情況下,在所述虛擬文檔對象模型中創(chuàng)建所述第三類路由節(jié)點,其中,所述第三類路由節(jié)點為:所述路由節(jié)點狀態(tài)列表中未記錄有狀態(tài)、且屬于所述第一路由的路由節(jié)點;
設置子模塊,用于設置所述第三類路由節(jié)點的狀態(tài)為激活狀態(tài),并將所述第三類路由節(jié)點的狀態(tài)更新至所述路由節(jié)點狀態(tài)列表中;
渲染子模塊,用于根據(jù)切換路由節(jié)點狀態(tài)、創(chuàng)建新路由節(jié)點后的所述虛擬文檔對象模型對當前頁面進行頁面渲染,進而在當前頁面中顯示切換后的頁面內容。
應用本發(fā)明圖7所示的實施例,在接收到切面內容切換命令后,將當前頁面對應的vdom中的第一類路由節(jié)點狀態(tài)切換為激活狀態(tài),同時為了避免當前頁面的內容對切換后內容的影響,將vdom第二類路由節(jié)點的狀態(tài)切換為非激活狀態(tài),進而根據(jù)切換了路由節(jié)點狀態(tài)后的vdom進行切換后頁面的渲染。本發(fā)明實施例提供的方案中,通過對vdom中的路由節(jié)點狀態(tài)進行修改,而并不需要重新構建一個vdom,因此,解決了現(xiàn)有技術中每次進行頁面內容切換均需重新創(chuàng)建所有屬于第一路由但不屬于第二路由的路由節(jié)點,而導致頁面切換效率低以及用戶體驗差的問題。所以,能夠提高頁面切換效率,增強用戶體驗。
參見圖8,圖8為本發(fā)明實施例提供的頁面渲染裝置的另一種結構示意圖,所述路由節(jié)點狀態(tài)列表,還用于存儲所述虛擬文檔對象中各個路由節(jié)點的引用計數(shù);
在激活模塊702之后,還包括:減少模塊704;
所述減少模塊704,用于對所述路由節(jié)點狀態(tài)列表中記錄的所述第二路由上的路由節(jié)點的引用計數(shù)進行計數(shù)減少處理。
具體的,所述裝置還可以包括:
檢測模塊705,用于根據(jù)所述路由節(jié)點狀態(tài)列表,檢測是否存在引用計數(shù)等于預設數(shù)值的路由節(jié)點;
刪除模塊706,用于在檢測模塊檢測到存在引用計數(shù)等于預設數(shù)值的路由節(jié)點,從所述路由節(jié)點狀態(tài)列表中刪除該節(jié)點的信息,并對所述虛擬文檔對象模型中的該節(jié)點進行刪除回收處理。
應用本發(fā)明圖8所示的實施例,在第二類路由節(jié)點的引用計數(shù)減少后,存在路由節(jié)點的引用計數(shù)值等于預設值時,刪除第這些路由節(jié)點,從而達到減少非激活狀態(tài)的節(jié)點占用內存的目的。
參見圖9,圖9為本發(fā)明實施例提供的頁面渲染裝置的再一種結構示意圖,在所述頁面內容切換命令為壓棧操作時,在所述激活模塊702之后,還包括:增加模塊707,
所述增加模塊707,用于對所述路由節(jié)點狀態(tài)列表中記錄的所述第一路由上的路由節(jié)點的引用計數(shù)進行計數(shù)增加處理。
應用本發(fā)明圖9所示的實施例,用戶在執(zhí)行壓棧操作后終端設備對第一路由中的路由節(jié)點的引用計數(shù)進行增加處理后,以使得在vdom中的處于激活狀態(tài)的路由節(jié)點引用計數(shù)不小于預設值。
本發(fā)明實施例還提供了一種頁面渲染設備,如圖10所示,包括處理器1001、通信接口1002、存儲器1003和通信總線1004,其中,處理器1001,通信接口1002,存儲器1003通過通信總線1004完成相互間的通信,
存儲器1003,用于存放計算機程序;
處理器1001,用于執(zhí)行存儲器1003上所存放的程序時,實現(xiàn):
接收針對當前頁面的頁面內容切換命令;
將當前頁面對應的虛擬文檔對象模型中第一類路由節(jié)點的狀態(tài)切換為激活狀態(tài),將所述虛擬文檔對象中第二類路由節(jié)點切換為非激活狀態(tài),并更新路由節(jié)點狀態(tài)列表中記錄的所述第一類路由節(jié)點和所述第二類路由節(jié)點的狀態(tài),其中,所述第一類路由節(jié)點為:所述路由節(jié)點狀態(tài)列表中記錄有狀態(tài)、屬于第一路由且不屬于第二路由的路由節(jié)點,所述第二類路由節(jié)點為:所述路由節(jié)點狀態(tài)列表中記錄有狀態(tài)、屬于所述第二路由且不屬于所述第一路由的路由節(jié)點,所述第一路由為:切換后的頁面內容對應的路由,所述第二路由為:切換前的頁面內容對應的路由,所述路由節(jié)點狀態(tài)列表,用于存儲所述虛擬文檔對象中各個路由節(jié)點的狀態(tài);
根據(jù)切換路由節(jié)點狀態(tài)后的所述虛擬文檔對象模型對當前頁面進行頁面渲染,進而在當前頁面中顯示切換后的頁面內容。
上述頁面渲染設備的其他實現(xiàn)方式與前述方法實施例中提及的各種實現(xiàn)方式相同,這里不再贅述。
上述頁面渲染設備提到的通信總線可以是外設部件互連標準(peripheralcomponentinterconnect,pci)總線或擴展工業(yè)標準結構(extendedindustrystandardarchitecture,eisa)總線等。該通信總線可以分為地址總線、數(shù)據(jù)總線、控制總線等。為便于表示,圖中僅用一條粗線表示,但并不表示僅有一根總線或一種類型的總線。
通信接口用于上述電子設備與其他設備之間的通信。
存儲器可以包括隨機存取存儲器(randomaccessmemory,ram),也可以包括非易失性存儲器(non-volatilememory,nvm),例如至少一個磁盤存儲器??蛇x的,存儲器還可以是至少一個位于遠離前述處理器的存儲裝置。
上述的處理器可以是通用處理器,包括中央處理器(centralprocessingunit,cpu)、網絡處理器(networkprocessor,np)等;還可以是數(shù)字信號處理器(digitalsignalprocessing,dsp)、專用集成電路(applicationspecificintegratedcircuit,asic)、現(xiàn)場可編程門陣列(field-programmablegatearray,fpga)或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件。
由以上可見,本實施例提供的技術方案中,在接收到切面內容切換命令后,將當前頁面對應的vdom中的第一類路由節(jié)點狀態(tài)切換為激活狀態(tài),同時為了避免當前頁面的內容對切換后頁面內容的影響,將vdom第二類路由節(jié)點的狀態(tài)切換為非激活狀態(tài),進而根據(jù)切換了路由節(jié)點狀態(tài)后的vdom進行切換后頁面的渲染。本發(fā)明實施例,通過對vdom中的路由節(jié)點狀態(tài)進行修改,而并不需要重新構建一個vdom,因此,解決了現(xiàn)有技術中每次進行頁面內容切換均需重新創(chuàng)建所有屬于第一路由但不屬于第二路由的路由節(jié)點,而導致頁面切換效率低以及用戶體驗差的問題。所以,能夠提高頁面切換效率,增強用戶體驗。
在本發(fā)明提供的又一實施例中,還提供了一種計算機可讀存儲介質,該計算機可讀存儲介質中存儲有指令,當其在計算機上運行時,使得計算機執(zhí)行上述實施例中任一所述的頁面渲染方法。
在本發(fā)明提供的又一實施例中,還提供了一種包含指令的計算機程序產品,當其在計算機上運行時,使得計算機執(zhí)行上述實施例中任一所述的頁面渲染方法。
在上述實施例中,可以全部或部分地通過軟件、硬件、固件或者其任意組合來實現(xiàn)。當使用軟件實現(xiàn)時,可以全部或部分地以計算機程序產品的形式實現(xiàn)。所述計算機程序產品包括一個或多個計算機指令。在計算機上加載和執(zhí)行所述計算機程序指令時,全部或部分地產生按照本發(fā)明實施例所述的流程或功能。所述計算機可以是通用計算機、專用計算機、計算機網絡、或者其他可編程裝置。所述計算機指令可以存儲在計算機可讀存儲介質中,或者從一個計算機可讀存儲介質向另一個計算機可讀存儲介質傳輸,例如,所述計算機指令可以從一個網站站點、計算機、服務器或數(shù)據(jù)中心通過有線(例如同軸電纜、光纖、數(shù)字用戶線(dsl))或無線(例如紅外、無線、微波等)方式向另一個網站站點、計算機、服務器或數(shù)據(jù)中心進行傳輸。所述計算機可讀存儲介質可以是計算機能夠存取的任何可用介質或者是包含一個或多個可用介質集成的服務器、數(shù)據(jù)中心等數(shù)據(jù)存儲設備。所述可用介質可以是磁性介質,(例如,軟盤、硬盤、磁帶)、光介質(例如,dvd)、或者半導體介質(例如固態(tài)硬盤solidstatedisk(ssd))等。
需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
本說明書中的各個實施例均采用相關的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于裝置實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
以上所述僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內所作的任何修改、等同替換、改進等,均包含在本發(fā)明的保護范圍內。