本技術(shù)涉及前端,尤其涉及一種頁面生成方法、裝置、電子設(shè)備、存儲介質(zhì)及計算機程序產(chǎn)品。
背景技術(shù):
1、動態(tài)化技術(shù)是當(dāng)前移動端開發(fā)比較常用的技術(shù)手段,它支持服務(wù)端將視圖樹和填充數(shù)據(jù)通過對象簡譜(javascript?object?notation,json)格式的數(shù)據(jù)下發(fā)到客戶端進行渲染和數(shù)據(jù)填充形成新的頁面。當(dāng)頁面內(nèi)容發(fā)生變動時,只需要修改服務(wù)端下發(fā)的json格式的數(shù)據(jù)就可以實現(xiàn)頁面的動態(tài)更新,這樣做提升了頁面的更新速率。其中,鴻蒙系統(tǒng)終端是以arkts語作為開發(fā)語言的,arkts語言中刪減了可以對json格式數(shù)據(jù)解析的eval()函數(shù)。導(dǎo)致在鴻蒙系統(tǒng)終端上進行應(yīng)用頁面渲染改動時,無法對json格式的數(shù)據(jù)進行解析,導(dǎo)致動態(tài)化的渲染技術(shù)無法應(yīng)用在鴻蒙系統(tǒng)終端上,使得無法快速的對鴻蒙系統(tǒng)終端上的頁面進快速高效的頁面渲染改動。
技術(shù)實現(xiàn)思路
1、本技術(shù)實施例提供的一種頁面生成方法、裝置、電子設(shè)備、存儲介質(zhì)及計算機程序產(chǎn)品,可以快速的對鴻蒙系統(tǒng)終端上的頁面進行快速高效的頁面渲染改動。
2、本技術(shù)的技術(shù)方案是這樣實現(xiàn)的:
3、本技術(shù)實施例提供了一種頁面生成方法,包括:
4、將第一語言類型的表達式數(shù)據(jù)處理為第二語言類型的中間表達式數(shù)據(jù);其中,所述第二語言類型是支持進行所述第一語言類型的數(shù)據(jù)與第三語言類型的數(shù)據(jù)間交互的語言類型;所述第一語言類型是本地系統(tǒng)語言類型;所述第三語言類型是服務(wù)器發(fā)送的頁面渲染數(shù)據(jù)的語言類型;
5、基于預(yù)設(shè)數(shù)據(jù)引擎對所述中間表達式數(shù)據(jù)進行提取解析,得到目標表達式數(shù)據(jù);其中,所述預(yù)設(shè)數(shù)據(jù)引擎用于處理針對第三語言類型數(shù)據(jù)的表達式內(nèi)容;
6、基于所述目標表達式數(shù)據(jù)對所述頁面渲染數(shù)據(jù)的解析,渲染出目標頁面。
7、上述方案中,所述中間表達式數(shù)據(jù)包括:待解析元素容器;所述將第一語言類型的表達式數(shù)據(jù)處理為第二語言類型的中間表達式數(shù)據(jù),包括:
8、將所述表達式數(shù)據(jù)處理為對應(yīng)所述第二語言類型的第一可識別數(shù)據(jù);
9、將所述第一可識別數(shù)據(jù)封裝為所述待解析元素容器。
10、上述方案中,所述基于預(yù)設(shè)數(shù)據(jù)引擎對所述中間表達式數(shù)據(jù)進行提取解析,得到目標表達式數(shù)據(jù),包括:
11、從所述中間表達式數(shù)據(jù)中提取對應(yīng)所述第三語言類型的所述表達式內(nèi)容;
12、基于所述預(yù)設(shè)數(shù)據(jù)引擎處理所述表達式內(nèi)容,得到所述目標表達式數(shù)據(jù)。
13、上述方案中,所述將第一語言類型的表達式數(shù)據(jù)處理為第二語言類型的中間表達式數(shù)據(jù)之前,所述方法還包括:
14、將所述第一語言類型的環(huán)境數(shù)據(jù)處理為對應(yīng)所述第二語言類型的第二可識別數(shù)據(jù);其中,所述環(huán)境數(shù)據(jù)用于針對所述預(yù)設(shè)數(shù)據(jù)引擎構(gòu)建所述表達式數(shù)據(jù)對應(yīng)的處理環(huán)境;
15、將所述第二可識別數(shù)據(jù)封裝為對象容器;
16、基于所述對象容器,針對所述預(yù)設(shè)數(shù)據(jù)引擎構(gòu)建所述處理環(huán)境。
17、上述方案中,所述環(huán)境數(shù)據(jù)包括:初始化參數(shù);所述初始化參數(shù)對應(yīng)封裝為第一對象容器;其中,所述第一對象容器持有用于初始化所述預(yù)設(shè)數(shù)據(jù)引擎的所需信息。
18、上述方案中,所述環(huán)境數(shù)據(jù)包括:環(huán)境元素參數(shù);所述環(huán)境元素參數(shù)對應(yīng)封裝為第二對象容器;其中,所述第二對象容器持有所述表達式數(shù)據(jù)中的以下所述環(huán)境元素參數(shù)中的至少一個:變量、對象和函數(shù)。
19、上述方案中,所述基于所述對象容器,針對所述預(yù)設(shè)數(shù)據(jù)引擎構(gòu)建所述處理環(huán)境,包括:
20、在預(yù)設(shè)回調(diào)函數(shù)集中確定所述第一對象容器對應(yīng)的第一回調(diào)函數(shù);其中,所述預(yù)設(shè)回調(diào)函數(shù)集中存儲多個對象容器,以及每個所述對象容器對應(yīng)的回調(diào)函數(shù)子集;所述回調(diào)函數(shù)子集中包括用于將所述對象容器處理為所述預(yù)設(shè)數(shù)據(jù)庫可處理類型數(shù)據(jù)的回調(diào)函數(shù);
21、基于所述第一回調(diào)函數(shù)處理所述第一對象容器,確定第一參數(shù)對象;其中,所述第一參數(shù)對象屬于所述第三語言類型;
22、基于所述第一參數(shù)對象,針對所述預(yù)設(shè)數(shù)據(jù)引擎初始化所述表達式數(shù)據(jù)對應(yīng)的上下文,構(gòu)建所述處理環(huán)境。
23、上述方案中,所述基于所述對象容器,針對所述預(yù)設(shè)數(shù)據(jù)引擎構(gòu)建所述處理環(huán)境,包括:
24、針對所述第二對象容器中的各個數(shù)據(jù)層,逐層遍歷提取出所述環(huán)境元素參數(shù);
25、基于所述環(huán)境元素參數(shù)的參數(shù)類型,針對所述預(yù)設(shè)數(shù)據(jù)引擎構(gòu)建所述處理環(huán)境。
26、上述方案中,所述基于所述環(huán)境元素參數(shù)的參數(shù)類型,針對所述預(yù)設(shè)數(shù)據(jù)引擎構(gòu)建所述處理環(huán)境,包括:
27、若所述環(huán)境元素參數(shù)為所述變量或所述對象,則基于所述環(huán)境元素參數(shù)轉(zhuǎn)化的第二參數(shù)對象針對所述預(yù)設(shè)數(shù)據(jù)引擎進行注冊,構(gòu)建所述處理環(huán)境;其中,所述第二參數(shù)對象屬于所述第三語言類型。
28、上述方案中,所述基于所述環(huán)境元素參數(shù)的參數(shù)類型,針對所述預(yù)設(shè)數(shù)據(jù)引擎構(gòu)建所述處理環(huán)境,包括:
29、若所述環(huán)境元素參數(shù)為所述函數(shù),則將所述函數(shù)添加進預(yù)設(shè)回調(diào)函數(shù)集中對應(yīng)的第二回調(diào)函數(shù)中,并通過所述第二回調(diào)函數(shù)處理得到對應(yīng)的第三參數(shù)對象;其中,所述第三參數(shù)對象屬于所述第三語言類型;
30、基于所述第三參數(shù)對象針對所述預(yù)設(shè)數(shù)據(jù)引擎進行注冊,構(gòu)建所述處理環(huán)境。
31、上述方案中,所述基于所述對象容器,針對所述預(yù)設(shè)數(shù)據(jù)引擎構(gòu)建所述處理環(huán)境之后,所述方法還包括:
32、基于引用對象集中的各個參數(shù)對象之間的引用關(guān)系,更新所述引用對象集中所述參數(shù)對象的引用標識;其中,所述引用對象集包括:所述表達式數(shù)據(jù)對應(yīng)的第一參數(shù)對象、所述第二參數(shù)對象和第三參數(shù)對象中的至少一個;所述引用標識表征數(shù)值大小隨著對應(yīng)的所述參數(shù)對象的被引用次數(shù)正比例動態(tài)變化。
33、上述方案中,所述方法還包括:在所述引用對象集中的第n參數(shù)對象的所述引用標識降低至預(yù)設(shè)閾值時,在所述引用對象集中刪除所述第n參數(shù)對象;n為大于0的整數(shù)。
34、上述方案中,所述基于所述目標表達式數(shù)據(jù)對所述頁面渲染數(shù)據(jù)的解析,渲染出目標頁面之后,所述方法還包括:
35、在所述表達式數(shù)據(jù)對應(yīng)的參數(shù)對象滿足釋放的條件下,基于上下文對象標識在所述預(yù)設(shè)回調(diào)函數(shù)集中確定對應(yīng)的目標回調(diào)函數(shù)子集;所述上下文對象標識屬于所述初始化參數(shù);
36、遍歷調(diào)用所述目標回調(diào)函數(shù)子集中包括的回調(diào)函數(shù)釋放方法,釋放所述第一對象容器以及針對所述預(yù)設(shè)數(shù)據(jù)引擎初始化的所述第一參數(shù)對象。
37、本技術(shù)實施例還提供了一種頁面生成裝置,包括:
38、數(shù)據(jù)處理單元,用于將第一語言類型的表達式數(shù)據(jù)處理為第二語言類型的中間表達式數(shù)據(jù);其中,所述第二語言類型是支持進行所述第一語言類型的數(shù)據(jù)與第三語言類型的數(shù)據(jù)間交互的語言類型;所述第一語言類型是本地系統(tǒng)語言類型;所述第三語言類型是服務(wù)器發(fā)送的頁面渲染數(shù)據(jù)的語言類型;
39、第一解析單元,用于基于預(yù)設(shè)數(shù)據(jù)引擎對所述中間表達式數(shù)據(jù)進行提取解析,得到目標表達式數(shù)據(jù);其中,所述預(yù)設(shè)數(shù)據(jù)引擎用于處理針對第三語言類型數(shù)據(jù)的表達式內(nèi)容;
40、第二解析單元,用于基于所述目標表達式數(shù)據(jù)對所述頁面渲染數(shù)據(jù)的解析,渲染出目標頁面。
41、本技術(shù)實施例還提供了一種電子設(shè)備,包括存儲器和處理器,所述存儲器存儲有可在處理器上運行的計算機程序,所述處理器執(zhí)行所述計算機程序時實現(xiàn)上述方法中的步驟。
42、本技術(shù)實施例還提供了一種計算機可讀存儲介質(zhì),其上存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)上述方法中的步驟。
43、本技術(shù)實施例還提供了一種計算機程序產(chǎn)品,包括計算機程序,所述計算機程序在被處理器執(zhí)行時實現(xiàn)上述方法中的步驟。
44、本技術(shù)實施例中,將第一語言類型的表達式數(shù)據(jù)處理為第二語言類型的中間表達式數(shù)據(jù);其中,第二語言類型是支持進行第一語言類型的數(shù)據(jù)與第三語言類型的數(shù)據(jù)間交互的語言類型;第一語言類型是本地系統(tǒng)語言類型;第三語言類型是服務(wù)器發(fā)送的頁面渲染數(shù)據(jù)的語言類型;基于預(yù)設(shè)數(shù)據(jù)引擎對中間表達式數(shù)據(jù)進行提取解析,得到目標表達式數(shù)據(jù);其中,所述預(yù)設(shè)數(shù)據(jù)引擎用于處理針對第三語言類型數(shù)據(jù)的表達式內(nèi)容;基于目標表達式數(shù)據(jù)對頁面渲染數(shù)據(jù)的解析,渲染出目標頁面。這樣,通過將表達式數(shù)據(jù)處理為可以建立第一語言類型的數(shù)據(jù)與第三語言類型的數(shù)據(jù)間交互的中間表達式數(shù)據(jù),打破了第一語言類型的數(shù)據(jù)與第三語言類型的數(shù)據(jù)之間交互壁壘,再通過預(yù)設(shè)數(shù)據(jù)引擎處理得到可以解析第三語言類型頁面渲染數(shù)據(jù)的目標表達式數(shù)據(jù),進而實現(xiàn)了對第三語言類型的數(shù)據(jù)(json格式數(shù)據(jù))的解析,也就是實現(xiàn)了對服務(wù)端下發(fā)的動態(tài)化的json格式數(shù)據(jù)的解析,進而實現(xiàn)對鴻蒙系統(tǒng)終端上的頁面進行快速高效的頁面渲染改動。