一种控件的初始化方法、系统、设备及存储介质技术方案

技术编号:33556641 阅读:61 留言:0更新日期:2022-05-26 22:53
本发明专利技术实施例提供了一种控件的初始化方法、系统、设备及存储介质,该方法包括:确定各控件的依赖关系,基于依赖关系,确定具有循环依赖关系的各控件构成的循环依赖链,对各循环依赖链执行解绑操作,获得非循环依赖链,从非循环依赖链中确定根控件,按照根控件所处的非循环依赖链中各控件的依赖关系,从根控件开始,沿根控件所处的非循环依赖链依次对各控件执行初始化。本发明专利技术通过增加对控件间的循环依赖链关系进行检测和记录的步骤,并对循环依赖链执行解绑操作,避免了页面初始化进程陷入死循环的风险,提高了页面初始化进程的可靠性。可见,本发明专利技术实现了提高页面初始化进程可靠性的发明专利技术目的。的发明专利技术目的。的发明专利技术目的。

【技术实现步骤摘要】
一种控件的初始化方法、系统、设备及存储介质


[0001]本专利技术涉及控件初始化领域,特别是涉及一种控件的初始化方法、系统、设备及存储介质。

技术介绍

[0002]控件初始化是基于配置对页面进行渲染的重要环节。控件初始化的成功与否,直接影响页面最终的显示效果。控件初始化的过程的核心在于处理和分析控件的初始化顺序。现有技术主要根据控件的加载顺序来执行控件的初始化。但是,由于控件之间存在依赖属性,现有技术在根据控件加载顺序来执行控件的初始化时,会存在控件初始化逻辑错误,进而导致页面初始化陷入死循环的风险。

技术实现思路

[0003]本专利技术实施例的目的在于提供一种控件的初始化方法、系统、设备及存储介质,以实现提高页面初始化进程的可靠性。具体技术方案如下:
[0004]一种控件的初始化方法,所述方法包括:
[0005]确定各控件的依赖关系。
[0006]基于所述依赖关系,确定具有循环依赖关系的各控件构成的循环依赖链。
[0007]对各循环依赖链执行解绑操作,获得非循环依赖链。
[0008]从所述非循环依赖链中确定根控件,其中,所述根控件为不依赖于其他控件的控件。
[0009]按照所述根控件所处的非循环依赖链中各控件的所述依赖关系,从所述根控件开始,沿所述根控件所处的所述非循环依赖链依次对各控件执行初始化。
[0010]可选的,所述确定各控件的依赖关系,包括:
[0011]遍历控件集合中的每个控件,按照预设依赖检测规则,判断该目标控件的属性数据是否与其他控件的标识符匹配,若是,则确定该目标控件依赖于该其他控件,并记录该目标控件的依赖关系,其中,所述目标控件是所述控件集合中被检测的控件,所述其他控件时所述控件集合中除所述目标控件外的控件,所述依赖关系包含:该目标控件的标识符和该目标控件依赖的至少一个其他控件的标识符。
[0012]可选的,所述基于所述依赖关系,确定具有循环依赖关系的各控件构成的循环依赖链,包括:
[0013]根据所述依赖关系,确定各控件所处的依赖链。
[0014]对每个依赖链:
[0015]将该依赖链中的任一控件作为初始控件。从所述初始控件开始,沿该依赖链依次将各控件作为当前控件进行实例化操作,直至当前控件为已经进行过实例化的控件或当前控件在依赖链中不存在其所依赖的控件。
[0016]若当前控件为已经进行过实例化的控件,则确定该依赖链为循环依赖链。
[0017]若当前控件在依赖链中不存在其所依赖的控件,则确定该依赖链为初始化执行链。
[0018]可选的,所述实例化操作包括:
[0019]从预设一级缓存中查找所述当前控件的实例,若查找不到,则从预设二级缓存中查找所述实例。
[0020]若从所述预设二级缓存中查找不到所述当前控件的所述实例,则根据所述当前控件的配置数据,生成所述当前控件的所述实例,并将所述实例添加至所述预设二级缓存中。
[0021]可选的,所述当前控件为已经进行过实例化的控件具体为:
[0022]所述预设二级缓存中存储有所述当前控件的所述实例的控件。
[0023]可选的,对各循环依赖链执行解绑操作,获得非循环依赖链,包括:
[0024]对每个循环依赖链:
[0025]在所述当前控件为已经进行过实例化的控件时,按照沿该循环依赖链执行所述实例化操作的顺序,查找该循环依赖链中依赖于所述当前控件的控件。
[0026]对所述依赖于所述当前控件的控件,将该控件的依赖数据集合中,所述当前控件的标识符数据进行删除,以使该控件不依赖于所述当前控件。
[0027]可选的,所述按照所述根控件所处的非循环依赖链中各控件的所述依赖关系,从根控件开始,沿所述根控件所处的所述非循环依赖链依次对各控件执行初始化,包括:
[0028]对每个非循环依赖链中的每个控件:获得该控件的标识符。根据该控件的标识符,从预设数据库中查找对应的控件初始化方法,其中,所述控件初始化方法和所述控件存在对应关系。
[0029]对每个非循环依赖链:从根控件开始,沿该非循环依赖链,利用控件初始化方法对各控件依次执行初始化。
[0030]一种控件的初始化系统,所述系统包括:
[0031]依赖识别模块,用于确定各控件的依赖关系。
[0032]循环依赖处理模块,基于所述依赖关系,确定具有循环依赖关系的各控件构成的循环依赖链。对各循环依赖链执行解绑操作,获得非循环依赖链。
[0033]初始化执行模块,用于从所述非循环依赖链中确定根控件,其中,所述根控件为不依赖于其他控件的控件。按照所述根控件所处的非循环依赖链中各控件的所述依赖关系,从所述根控件开始,沿所述根控件所处的所述非循环依赖链依次对各控件执行初始化。
[0034]可选的,所述依赖识别模块被设置为:
[0035]遍历控件集合中的每个控件,按照预设依赖检测规则,判断该目标控件的属性数据是否与其他控件的标识符匹配,若是,则确定该目标控件依赖于该其他控件,并记录该目标控件的依赖关系,其中,所述目标控件是所述控件集合中被检测的控件,所述其他控件时所述控件集合中除所述目标控件外的控件,所述依赖关系包含:该目标控件的标识符和该目标控件依赖的至少一个其他控件的标识符。
[0036]可选的,所述循环依赖处理模块被设置为:
[0037]根据所述依赖关系,确定各控件所处的依赖链。
[0038]对每个依赖链:
[0039]将该依赖链中的任一控件作为初始控件。从所述初始控件开始,沿该依赖链依次
将各控件作为当前控件进行实例化操作,直至当前控件为已经进行过实例化的控件或当前控件在依赖链中不存在其所依赖的控件。
[0040]若当前控件为已经进行过实例化的控件,则确定该依赖链为循环依赖链。
[0041]若当前控件在依赖链中不存在其所依赖的控件,则确定该依赖链为初始化执行链。
[0042]可选的,所述循环依赖处理模块还被设置为:
[0043]从预设一级缓存中查找所述当前控件的实例,若查找不到,则从预设二级缓存中查找所述实例。
[0044]若从所述预设二级缓存中查找不到所述当前控件的所述实例,则根据所述当前控件的配置数据,生成所述当前控件的所述实例,并将所述实例添加至所述预设二级缓存中。
[0045]可选的,所述循环依赖处理模块还被设置为:
[0046]对每个循环依赖链:
[0047]在所述当前控件为已经进行过实例化的控件时,按照沿该循环依赖链执行所述实例化操作的顺序,查找该循环依赖链中依赖于所述当前控件的控件。
[0048]对所述依赖于所述当前控件的控件,将该控件的依赖数据集合中,所述当前控件的标识符数据进行删除,以使该控件不依赖于所述当前控件。
[0049]可选的,所述初始化执行模块被设置为:
[0050]对每个非循环依赖链中的每个控件:获得该控件的标识符。根据该控件的标识符,从预设数本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种控件的初始化方法,其特征在于,所述方法包括:确定各控件的依赖关系;基于所述依赖关系,确定具有循环依赖关系的各控件构成的循环依赖链;对各循环依赖链执行解绑操作,获得非循环依赖链;从所述非循环依赖链中确定根控件,其中,所述根控件为不依赖于其他控件的控件;按照所述根控件所处的非循环依赖链中各控件的所述依赖关系,从所述根控件开始,沿所述根控件所处的所述非循环依赖链依次对各控件执行初始化。2.根据权利要求1所述的方法,其特征在于,所述确定各控件的依赖关系,包括:遍历控件集合中的每个控件,按照预设依赖检测规则,判断该目标控件的属性数据是否与其他控件的标识符匹配,若是,则确定该目标控件依赖于该其他控件,并记录该目标控件的依赖关系,其中,所述目标控件是所述控件集合中被检测的控件,所述其他控件时所述控件集合中除所述目标控件外的控件,所述依赖关系包含:该目标控件的标识符和该目标控件依赖的至少一个其他控件的标识符。3.根据权利要求2所述的方法,其特征在于,所述基于所述依赖关系,确定具有循环依赖关系的各控件构成的循环依赖链,包括:根据所述依赖关系,确定各控件所处的依赖链;对每个依赖链:将该依赖链中的任一控件作为初始控件;从所述初始控件开始,沿该依赖链依次将各控件作为当前控件进行实例化操作,直至当前控件为已经进行过实例化的控件或当前控件在依赖链中不存在其所依赖的控件;若当前控件为已经进行过实例化的控件,则确定该依赖链为循环依赖链;若当前控件在依赖链中不存在其所依赖的控件,则确定该依赖链为初始化执行链。4.根据权利要求3所述的方法,其特征在于,所述实例化操作包括:从预设一级缓存中查找所述当前控件的实例,若查找不到,则从预设二级缓存中查找所述实例;若从所述预设二级缓存中查找不到所述当前控件的所述实例,则根据所述当前控件的配置数据,生成所述当前控件的所述实例,并将所述实例添加至所述预设二级缓存中。5.根据权利要求4所述的方法,其特征在于,所述当前控件为已经进行过实例化的控件具体为:...

【专利技术属性】
技术研发人员:江春华隗刚陈显龙李鑫汪晓旸林宇
申请(专利权)人:北京恒华伟业科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1