本技术实施例涉及计算机,尤其涉及一种页面解析方法、装置、设备及存储介质。
背景技术:
1、低代码技术作为近几年兴起的新技术已逐步成为各个领域的热门话题。低代码平台主要应用于后端管理及一些特定场景的应用开发,面向前端研发人员的低代码平台相对处在起步阶段。
2、相关技术下,低代码平台在进行页面解析时,通常是采用从自定义领域特定语言(domain-specific language,简称dsl)的组件树的根节点开始向下递归处理每个组件节点,每个组件节点需要对应的转换代码进行解析处理。
3、然而,上述页面解析方法的效率较低,当页面中的组件节点增多时,会在页面操作和渲染上出现延迟和卡顿等问题,从而影响用户体验。
技术实现思路
1、本技术实施例提供了一种页面解析方法、装置、设备及存储介质,用于提高页面解析的效率,避免在页面操作和渲染上出现延迟和卡顿等问题。
2、一方面,本技术实施例提供了一种页面解析方法,包括:
3、获取待解析的页面组件树,并将所述页面组件树拆分成组件树骨架和组件池,其中,所述组件池中包括多个待解析组件;
4、通过组件解析引擎,对所述多个待解析组件进行并行处理,获得相应的组件代码;
5、将所述多个待解析组件各自对应的组件代码组装到所述组件树骨架中的相应位置,获得所述页面组件树对应的页面代码。
6、可选地,所述组件池中还包括所述多个待解析组件各自在所述页面组件树中对应的节点信息;
7、所述将所述多个待解析组件各自对应的组件代码组装到所述组件树骨架中的相应位置,获得所述页面组件树对应的页面代码,包括:
8、基于所述多个待解析组件各自在所述页面组件树中对应的节点信息,将所述多个待解析组件各自对应的组件代码挂载到所述组件树骨架中的相应节点,获得所述页面组件树对应的页面代码。
9、可选地,所述通过组件解析引擎,对所述多个待解析组件进行并行处理,获得相应的组件代码,包括:
10、通过组件解析引擎的线程池,对所述多个待解析组件进行并行处理,获得相应的组件代码。
11、可选地,所述对所述多个待解析组件进行并行处理,获得相应的组件代码,包括:
12、针对每个待解析组件,从解析流程缓存中获取所述待解析组件对应的解析原子操作流程;
13、基于所述解析原子操作流程对所述待解析组件进行解析,获得所述待解析组件的组件代码。
14、可选地,所述解析原子操作流程包括多个原子操作;
15、所述基于所述解析原子操作流程对所述待解析组件进行解析,获得所述待解析组件的组件代码,包括:
16、按照所述多个原子操作在所述解析原子操作流程中的顺序,依次对所述待解析组件执行所述多个原子操作,获得所述待解析组件的组件代码。
17、可选地,所述通过组件解析引擎,对所述多个待解析组件进行并行处理,获得相应的组件代码之前,还包括:
18、若所述解析流程缓存中不包含所述待解析组件对应的解析原子操作流程,则加载所述待解析组件对应的流程配置信息;
19、基于所述流程配置信息,从原子操作库中获取所述待解析组件对应的多个原子操作;
20、将所述多个原子操作进行组装,获得所述待解析组件对应的解析原子操作流程,并将所述解析原子操作流程保存在所述解析流程缓存中。
21、可选地,所述待解析组件对应的每个原子操作用于:将所述待解析组件的一个基础属性或者一个基础功能转化为一个抽象语法树片段。
22、可选地,还包括:
23、构建新增基础属性或新增基础功能对应的新增原子操作,并将所述新增原子操作添加至所述原子操作库中。
24、一方面,本技术实施例提供了一种页面解析装置,包括:
25、拆分模块,用于获取待解析的页面组件树,并将所述页面组件树拆分成组件树骨架和组件池,其中,所述组件池中包括多个待解析组件;
26、解析模块,用于通过组件解析引擎,对所述多个待解析组件进行并行处理,获得相应的组件代码;
27、组装模块,用于将所述多个待解析组件各自对应的组件代码组装到所述组件树骨架中的相应位置,获得所述页面组件树对应的页面代码。
28、可选地,所述组件池中还包括所述多个待解析组件各自在所述页面组件树中对应的节点信息;
29、所述组装模块具体用于:
30、基于所述多个待解析组件各自在所述页面组件树中对应的节点信息,将所述多个待解析组件各自对应的组件代码挂载到所述组件树骨架中的相应节点,获得所述页面组件树对应的页面代码。
31、可选地,所述解析模块具体用于:
32、通过组件解析引擎的线程池,对所述多个待解析组件进行并行处理,获得相应的组件代码。
33、可选地,所述解析模块具体用于:
34、针对每个待解析组件,从解析流程缓存中获取所述待解析组件对应的解析原子操作流程;
35、基于所述解析原子操作流程对所述待解析组件进行解析,获得所述待解析组件的组件代码。
36、可选地,所述解析原子操作流程包括多个原子操作;
37、所述解析模块具体用于:
38、按照所述多个原子操作在所述解析原子操作流程中的顺序,依次对所述待解析组件执行所述多个原子操作,获得所述待解析组件的组件代码。
39、可选地,所述解析模块还用于:
40、通过组件解析引擎,对所述多个待解析组件进行并行处理,获得相应的组件代码之前,若所述解析流程缓存中不包含所述待解析组件对应的解析原子操作流程,则加载所述待解析组件对应的流程配置信息;
41、基于所述流程配置信息,从原子操作库中获取所述待解析组件对应的多个原子操作;
42、将所述多个原子操作进行组装,获得所述待解析组件对应的解析原子操作流程,并将所述解析原子操作流程保存在所述解析流程缓存中。
43、可选地,所述待解析组件对应的每个原子操作用于:将所述待解析组件的一个基础属性或者一个基础功能转化为一个抽象语法树片段。
44、可选地,所述解析模块还用于:
45、构建新增基础属性或新增基础功能对应的新增原子操作,并将所述新增原子操作添加至所述原子操作库中。
46、一方面,本技术实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述页面解析方法的步骤。
47、一方面,本技术实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当所述程序在计算机设备上运行时,使得所述计算机设备执行上述页面解析方法的步骤。
48、在本技术实施例中,将页面组件树拆分成组件树骨架和组件池,其中,组件池中包括多个待解析组件。然后通过组件解析引擎,对多个待解析组件进行并行处理,获得相应的组件代码,再将多个待解析组件各自对应的组件代码组装到组件树骨架中的相应位置,获得页面组件树对应的页面代码,解除了页面组件树中上下层组件节点解析的顺序依赖,实现各个组件节点间完全的多线程并行处理,从而提升了源码生成效率,避免了在页面操作和渲染上出现延迟和卡顿等问题。