CN113220366A - 子应用启动方法、装置、终端及服务器 - Google Patents
子应用启动方法、装置、终端及服务器 Download PDFInfo
- Publication number
- CN113220366A CN113220366A CN202110512997.9A CN202110512997A CN113220366A CN 113220366 A CN113220366 A CN 113220366A CN 202110512997 A CN202110512997 A CN 202110512997A CN 113220366 A CN113220366 A CN 113220366A
- Authority
- CN
- China
- Prior art keywords
- resource
- sub
- rendering
- application
- path
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 69
- 238000009877 rendering Methods 0.000 claims abstract description 494
- 230000015654 memory Effects 0.000 claims description 19
- 230000007246 mechanism Effects 0.000 abstract description 5
- 230000004044 response Effects 0.000 description 27
- 238000007726 management method Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 13
- 230000006870 function Effects 0.000 description 10
- 230000002093 peripheral effect Effects 0.000 description 10
- 230000003068 static effect Effects 0.000 description 10
- 238000011161 development Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 8
- 238000003780 insertion Methods 0.000 description 8
- 230000037431 insertion Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 230000003993 interaction Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 239000000919 ceramic Substances 0.000 description 2
- 239000003999 initiator Substances 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本公开关于一种子应用启动方法、装置、终端及服务器,属于计算机技术领域。所述方法包括:基于子应用对应的资源表路径,加载所述资源表路径指向的资源表,所述资源表包括所述子应用的渲染资源对应的渲染资源路径;基于所述资源表中的至少一个渲染资源路径,加载所述至少一个渲染资源路径指向的渲染资源;调用已加载的至少一个渲染资源,启动所述子应用。通过资源表来维护子应用的渲染资源对应的渲染资源路径,无需进行相关文件的解析,即可利用该资源表中的渲染资源路径进行渲染资源的加载,实现了高效的子应用资源发现机制,提高了渲染资源的获取效率,在此基础上,基于已加载的渲染资源,启动该子应用,提高了子应用的启动效率。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种子应用启动方法、装置、终端及服务器。
背景技术
随着计算机技术的不断发展,行业内提出了一种微前端的架构。微前端的架构包括一个壳应用以及可由壳应用调度的多个子应用,多个子应用之间相互独立。
相关技术中,每个子应用都对应有一个HTML(Hyper Text Markup Language,超文本标记语言)文件,HTML文件包括子应用对应的渲染资源的渲染资源路径。壳应用通过解析子应用的HTML文件,确定渲染资源的渲染资源路径,基于该渲染资源路径获取该渲染资源,从而基于该渲染资源启动该子应用。
但是,HTML文件的解析效率较低,从而会导致渲染资源的获取效率较低,进而导致子应用启动的效率较低。
发明内容
本公开实施例提供了一种子应用启动方法、装置、终端及服务器,以提高子应用的启动效率。本公开的技术方案如下:
根据本公开实施例的一方面,提供了一种子应用启动方法,所述子应用启动方法包括:
基于子应用对应的资源表路径,加载所述资源表路径指向的资源表,所述资源表包括所述子应用的渲染资源对应的渲染资源路径;
基于所述资源表中的至少一个渲染资源路径,加载所述至少一个渲染资源路径指向的渲染资源;
调用已加载的至少一个渲染资源,启动所述子应用。
在一些实施例中,所述基于子应用对应的资源表路径,加载所述资源表路径指向的资源表,包括:
基于所述资源表路径,向服务器发送资源表获取请求,所述资源表获取请求携带所述资源表路径,所述资源表获取请求用于指示所述服务器返回所述资源表路径指向的资源表;
接收所述服务器返回的所述资源表。
在一些实施例中,所述基于子应用对应的资源表路径,加载所述资源表路径指向的资源表之前,所述子应用启动方法还包括:
响应于页面渲染指令,从所述页面渲染指令对应的网址中获取子应用标识,所述子应用标识用于标识所述子应用;
基于所存储的子应用标识与资源表路径的对应关系,获取所述子应用标识对应的资源表路径。
在一些实施例中,所述基于子应用对应的资源表路径,加载所述资源表路径指向的资源表之前,所述子应用启动方法还包括:
获取所述子应用的至少一个渲染资源对应的渲染资源路径;
基于所获取的至少一个渲染资源路径,生成所述子应用对应的资源表。
在一些实施例中,所述基于所述资源表中的至少一个渲染资源路径,加载所述至少一个渲染资源路径指向的渲染资源,包括:
将所述至少一个渲染资源路径分别插入到所述子应用所属的壳应用的框架资源中;
通过运行所述框架资源,加载所述至少一个渲染资源路径指向的渲染资源。
在一些实施例中,所述将所述至少一个渲染资源路径分别插入到所述子应用所属的壳应用的框架资源中,包括:
对于所述至少一个渲染资源路径中的每个第一渲染资源路径,在所述框架资源中,为所述第一渲染资源路径创建链接link标签,所述第一渲染资源路径为层叠样式表CSS资源的路径,所述框架资源为超文本标记语言HTML资源;
将所述第一渲染资源路径插入到所述link标签中。
在一些实施例中,所述通过运行所述框架资源,加载所述至少一个渲染资源路径指向的渲染资源,包括:
通过运行所述框架资源,基于每个link标签中的第一渲染资源路径,加载所述每个link标签中的第一渲染资源路径指向的CSS资源。
在一些实施例中,所述将所述至少一个渲染资源路径分别插入到所述子应用所属的壳应用的框架资源中,包括:
对于所述至少一个渲染资源路径中的每个第二渲染资源路径,在所述框架资源中,为所述第二渲染资源路径创建脚本script标签,所述第二渲染资源路径为脚本语言JS资源的路径,所述框架资源为HTML资源;
将所述第二渲染资源路径插入到所述script标签中。
在一些实施例中,所述通过运行所述框架资源,加载所述至少一个渲染资源路径指向的渲染资源,包括:
通过运行所述框架资源,基于每个script标签中的所述第二渲染资源路径,加载所述每个script标签中的第二渲染资源路径指向的JS资源。
在一些实施例中,所述基于所述资源表中的至少一个渲染资源路径,加载所述至少一个渲染资源路径指向的渲染资源,包括:
响应于所述至少一个渲染资源路径包括按序排列的N个第二渲染资源路径,在前N-1个第二渲染资源路径指向的JS资源加载完成之后,加载最后一个第二渲染资源路径指向的JS资源,所述N为大于1的整数,所述第二渲染资源路径为JS资源的路径。
在一些实施例中,所述至少一个渲染资源路径包括多个渲染资源路径,所述基于所述资源表中的至少一个渲染资源路径,加载所述至少一个渲染资源路径指向的渲染资源,包括:
按照所述多个渲染资源路径在所述资源表中的排列顺序,依次加载每个渲染资源路径指向的渲染资源。
在一些实施例中,所述基于所述资源表中的至少一个渲染资源路径,加载所述至少一个渲染资源路径指向的渲染资源,包括:
向服务器发送资源获取请求,所述资源获取请求携带所述资源表中的一个渲染资源路径,所述资源获取请求用于指示所述服务器返回所述渲染资源路径指向的渲染资源;
接收所述服务器返回的所述渲染资源。
在一些实施例中,所述至少一个渲染资源中的最后一个渲染资源包括启动接口;
所述调用已加载的至少一个渲染资源,启动所述子应用,包括:
从所加载的最后一个渲染资源中确定所述启动接口;
通过运行所述启动接口,调用已加载的所述至少一个渲染资源,启动所述子应用。
在一些实施例中,所述至少一个渲染资源路径包括N个第二渲染资源路径,所述第二渲染资源路径为JS资源的路径,所述N为大于1的整数;
所述从所加载的最后一个渲染资源中确定所述子应用的启动接口,包括:
响应于所述N个第二渲染资源路径中的前N-1个第二渲染资源路径指向的JS资源加载完成,获取当前的全局接口的接口名称构成的第一名称集合,所述全局接口为在全局内被调用的接口;
响应于所述N个第二渲染资源路径指向的JS资源加载完成,获取当前的全局接口的接口名称构成的第二名称集合;
确定所述第二名称集合相对于所述第一名称集合新增的目标接口名称,将所加载的最后一个JS资源中的所述目标接口名称对应的接口确定为所述启动接口。
在一些实施例中,所述确定所述第二名称集合相对于所述第一名称集合新增的目标接口名称之前,所述子应用启动方法还包括:
获取所述第一名称集合中的第一个接口名称,以及,获取所述第二名称集合中的第一个接口名称;
所述确定所述第二名称集合相对于所述第一名称集合新增的目标接口名称,包括:
响应于所述第一名称集合中的第一个接口名称与所述第二名称集合中的第一个接口名称不同,将所述第二名称集合中的第一个接口名称确定为所述目标接口名称。
在一些实施例中,所述获取所述第一名称集合中的第一个接口名称,以及,获取所述第二名称集合中的第一个接口名称,包括:
获取所述第一名称集合中的第一个接口名称和所述第一名称集合中的第二个接口名称,以及,获取所述第二名称集合中的第一个接口名称;
所述确定所述第二名称集合相对于所述第一名称集合新增的目标接口名称,还包括:
响应于所述第一名称集合中的第一个接口名称与所述第二名称集合中的第一个接口名称相同,获取所述第二名称集合中的第二个接口名称;
响应于所述第一名称集合中的第二个接口名称与所述第二名称集合中的第二个接口名称不同,将所述第二名称集合中的第二个接口名称确定为所述目标接口名称。
在一些实施例中,所述获取所述第一名称集合中的第一个接口名称和所述第一名称集合中的第二个接口名称,以及,获取所述第二名称集合中的第一个接口名称,包括:
获取所述第一名称集合中的第一个接口名称、所述第一名称集合中的第二个接口名称和所述第一名称集合中的最后一个接口名称,以及,获取所述第二名称集合中的第一个接口名称;
所述确定所述第二名称集合相对于所述第一名称集合新增的目标接口名称,还包括:
响应于所述第一名称集合中的第二个接口名称与所述第二名称集合中的第二个接口名称相同,获取所述第二名称集合中的最后一个接口名称;
响应于所述第一名称集合中的最后一个接口名称与所述第二名称集合中的最后一个接口名称不同,将所述第二名称集合中的最后一个接口名称确定为所述目标接口名称。
根据本公开实施例的一方面,提供了一种子应用启动方法,所述子应用启动方法包括:
响应于接收到终端发送的资源表获取请求,获取所述资源表获取请求所携带的资源表路径;
获取所述资源表路径指向的资源表;
向所述终端返回获取到的资源表,所述资源表包括子应用的渲染资源对应的渲染资源路径,所述渲染资源路径指向的渲染资源用于所述终端启动所述子应用。
在一些实施例中,所述获取所述资源表路径指向的资源表之前,所述子应用启动方法还包括:
接收管理终端发送的多个子应用对应的资源表,所述管理终端用于基于每个子应用的至少一个渲染资源对应的渲染资源路径,生成所述每个子应用对应的资源表;
分别在所述每个子应用对应的资源表路径下,存储所述每个子应用对应的资源表。
在一些实施例中,所述向所述终端返回获取到的资源表之后,所述子应用启动方法还包括:
响应于接收到所述终端发送的资源获取请求,获取所述资源获取请求所携带的渲染资源路径;
获取所述渲染资源路径指向的渲染资源;
向所述终端返回获取到的渲染资源。
根据本公开实施例的一方面,提供了一种子应用启动装置,所述子应用启动装置包括:
第一资源表加载单元,被配置为执行基于子应用对应的资源表路径,加载所述资源表路径指向的资源表,所述资源表包括所述子应用的渲染资源对应的渲染资源路径;
渲染资源加载单元,被配置为执行基于所述资源表中的至少一个渲染资源路径,加载所述至少一个渲染资源路径指向的渲染资源;
子应用启动单元,被配置为执行调用已加载的至少一个渲染资源,启动所述子应用。
在一些实施例中,所述第一资源表加载单元,被配置为执行:
基于所述资源表路径,向服务器发送资源表获取请求,所述资源表获取请求携带所述资源表路径,所述资源表获取请求用于指示所述服务器返回所述资源表路径指向的资源表;
接收所述服务器返回的所述资源表。
在一些实施例中,所述第一资源表加载单元,还被配置为执行:
响应于页面渲染指令,从所述页面渲染指令对应的网址中获取子应用标识,所述子应用标识用于标识所述子应用;
基于所存储的子应用标识与资源表路径的对应关系,获取所述子应用标识对应的资源表路径。
在一些实施例中,所述子应用启动装置还包括:
第一资源路径获取单元,被配置为执行获取所述子应用的至少一个渲染资源对应的渲染资源路径;
资源表生成单元,被配置为执行基于所获取的至少一个渲染资源路径,生成所述子应用对应的资源表。
在一些实施例中,所述渲染资源加载单元,包括:
资源路径插入子单元,被配置为执行将所述至少一个渲染资源路径分别插入到所述子应用所属的壳应用的框架资源中;
渲染资源加载子单元,被配置为执行通过运行所述框架资源,加载所述至少一个渲染资源路径指向的渲染资源。
在一些实施例中,所述资源路径插入子单元,被配置为执行:
对于所述至少一个渲染资源路径中的每个第一渲染资源路径,在所述框架资源中,为所述第一渲染资源路径创建链接link标签,所述第一渲染资源路径为层叠样式表CSS资源的路径,所述框架资源为超文本标记语言HTML资源;
将所述第一渲染资源路径插入到所述link标签中。
在一些实施例中,所述渲染资源加载子单元,被配置为执行:
通过运行所述框架资源,基于每个link标签中的第一渲染资源路径,加载所述每个link标签中的第一渲染资源路径指向的CSS资源。
在一些实施例中,所述资源路径插入子单元,被配置为执行:
对于所述至少一个渲染资源路径中的每个第二渲染资源路径,在所述框架资源中,为所述第二渲染资源路径创建脚本script标签,所述第二渲染资源路径为脚本语言JS资源的路径,所述框架资源为HTML资源;
将所述第二渲染资源路径插入到所述script标签中。
在一些实施例中,所述渲染资源加载子单元,被配置为执行:
通过运行所述框架资源,基于每个script标签中的所述第二渲染资源路径,加载所述每个script标签中的第二渲染资源路径指向的JS资源。
在一些实施例中,所述渲染资源加载单元,被配置为执行:
响应于所述至少一个渲染资源路径包括按序排列的N个第二渲染资源路径,在前N-1个第二渲染资源路径指向的JS资源加载完成之后,加载最后一个第二渲染资源路径指向的JS资源,所述N为大于1的整数,所述第二渲染资源路径为JS资源的路径。
在一些实施例中,所述至少一个渲染资源路径包括多个渲染资源路径,所述渲染资源加载单元,被配置为执行:
按照所述多个渲染资源路径在所述资源表中的排列顺序,依次加载每个渲染资源路径指向的渲染资源。
在一些实施例中,所述渲染资源加载单元,被配置为执行:
向服务器发送资源获取请求,所述资源获取请求携带所述资源表中的一个渲染资源路径,所述资源获取请求用于指示所述服务器返回所述渲染资源路径指向的渲染资源;
接收所述服务器返回的所述渲染资源。
在一些实施例中,所述至少一个渲染资源中的最后一个渲染资源包括启动接口;
所述子应用启动单元,包括:
启动接口确定子单元,被配置为执行从所加载的最后一个渲染资源中确定所述子应用的启动接口;
子应用启动子单元,被配置为执行通过运行所述启动接口,调用已加载的所述至少一个渲染资源,启动所述子应用。
在一些实施例中,所述至少一个渲染资源路径包括N个第二渲染资源路径,所述第二渲染资源路径为JS资源的路径,所述N为大于1的整数;
所述启动接口确定子单元,包括:
第一名称集合获取子-子单元,被配置为执行响应于所述N个第二渲染资源路径中的前N-1个第二渲染资源路径指向的JS资源加载完成,获取当前的全局接口的接口名称构成的第一名称集合,所述全局接口为在全局内被调用的接口;
第二名称集合获取子-子单元,被配置为执行响应于所述N个第二渲染资源路径指向的JS资源加载完成,获取当前的全局接口的接口名称构成的第二名称集合;
接口名称确定子-子单元,被配置为执行确定所述第二名称集合相对于所述第一名称集合新增的目标接口名称,将所加载的最后一个JS资源中的所述目标接口名称对应的接口确定为所述启动接口。
在一些实施例中,所述子应用启动装置还包括:
接口名称获取子-子单元,被配置为执行获取所述第一名称集合中的第一个接口名称,以及,获取所述第二名称集合中的第一个接口名称;
所述接口名称确定子-子单元,被配置为执行:
响应于所述第一名称集合中的第一个接口名称与所述第二名称集合中的第一个接口名称不同,将所述第二名称集合中的第一个接口名称确定为所述目标接口名称。
在一些实施例中,所述接口名称获取子-子单元,被配置为执行:
获取所述第一名称集合中的第一个接口名称和所述第一名称集合中的第二个接口名称,以及,获取所述第二名称集合中的第一个接口名称;
所述接口名称确定子-子单元,还被配置为执行:
响应于所述第一名称集合中的第一个接口名称与所述第二名称集合中的第一个接口名称相同,获取所述第二名称集合中的第二个接口名称;
响应于所述第一名称集合中的第二个接口名称与所述第二名称集合中的第二个接口名称不同,将所述第二名称集合中的第二个接口名称确定为所述目标接口名称。
在一些实施例中,所述接口名称获取子-子单元,被配置为执行:
获取所述第一名称集合中的第一个接口名称、所述第一名称集合中的第二个接口名称和所述第一名称集合中的最后一个接口名称,以及,获取所述第二名称集合中的第一个接口名称;
所述接口名称确定子-子单元,还被配置为执行:
响应于所述第一名称集合中的第二个接口名称与所述第二名称集合中的第二个接口名称相同,获取所述第二名称集合中的最后一个接口名称;
响应于所述第一名称集合中的最后一个接口名称与所述第二名称集合中的最后一个接口名称不同,将所述第二名称集合中的最后一个接口名称确定为所述目标接口名称。
根据本公开实施例的一方面,提供了一种子应用启动装置,所述子应用启动装置包括:
资源表路径获取单元,被配置为执行响应于接收到终端发送的资源表获取请求,获取所述资源表获取请求所携带的资源表路径;
第二资源表获取单元,被配置为执行获取所述资源表路径指向的资源表;
资源表返回单元,被配置为执行向所述终端返回获取到的资源表,所述资源表包括子应用的渲染资源对应的渲染资源路径,所述渲染资源路径指向的渲染资源用于所述终端启动所述子应用。
在一些实施例中,所述子应用启动装置还包括:
资源表接收单元,被配置为执行接收管理终端发送的多个子应用对应的资源表,所述管理终端用于基于每个子应用的至少一个渲染资源对应的渲染资源路径,生成所述每个子应用对应的资源表;
资源表存储单元,被配置为执行分别在所述每个子应用对应的资源表路径下,存储所述每个子应用对应的资源表。
在一些实施例中,所述子应用启动装置还包括:
第二资源路径获取单元,被配置为执行响应于接收到所述终端发送的资源获取请求,获取所述资源获取请求所携带的渲染资源路径;
渲染资源获取单元,被配置为执行获取所述渲染资源路径指向的渲染资源;
渲染资源返回单元,被配置为执行向所述终端返回获取到的渲染资源。
根据本公开实施例的一方面,提供了一种终端,所述终端包括:一个或多个处理器;用于存储所述处理器可执行的指令的存储器;其中,所述处理器被配置为执行所述指令,以实现上述方面所述的子应用启动方法。
根据本公开实施例的一方面,提供了一种服务器,所述服务器包括:一个或多个处理器;用于存储所述处理器可执行的指令的存储器;其中,所述处理器被配置为执行所述指令,以实现上述方面所述的子应用启动方法。
根据本公开实施例的一方面,提供了一种计算机可读存储介质,当所述计算机可读存储介质中的指令由终端的处理器执行时,使得终端能够执行上述方面所述的子应用启动方法。
根据本公开实施例的一方面,提供了一种计算机可读存储介质,当所述计算机可读存储介质中的指令由服务器的处理器执行时,使得服务器能够执行上述方面所述的子应用启动方法。
根据本公开实施例的一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述方面所述的子应用启动方法。
根据本公开实施例的一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述方面所述的子应用启动方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
通过资源表来维护子应用的渲染资源对应的渲染资源路径,无需进行相关文件的解析,即可利用该资源表中的渲染资源路径进行渲染资源的加载,实现了高效的子应用资源发现机制,提高了渲染资源的获取效率,在此基础上,基于已加载的渲染资源,启动该子应用,提高了子应用的启动效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种实施环境的示意图;
图2是根据一示例性实施例示出的一种子应用启动方法的流程图;
图3是根据一示例性实施例示出的一种子应用启动方法的流程图;
图4是根据一示例性实施例示出的一种子应用启动方法的交互流程图;
图5是根据一示例性实施例示出的一种加载渲染资源的示意图;
图6是根据一示例性实施例示出的一种从第一名称集合中获取接口名称的流程图;
图7是根据一示例性实施例示出的一种确定启动接口的接口名称的流程图;
图8是根据一示例性实施例示出的一种微前端的架构的示意图;
图9是根据一示例性实施例示出的一种子应用启动装置的框图;
图10是根据一示例性实施例示出的一种子应用启动装置的框图;
图11是根据一示例性实施例示出的一种终端的框图;
图12是根据一示例性实施例示出的一种服务器的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
需要说明的是,本公开所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据,均为经用户授权或者经过各方充分授权的信息和数据。
图1是根据一示例性实施例示出的一种实施环境的示意图。参见图1,该实施环境包括终端110和服务器120。
终端110可以是智能手机、平板电脑、笔记本电脑、台式电脑或者其他具有显示功能的电子设备。终端110具有渲染任一网址对应的页面的功能。在一些实施例中,终端110上安装有浏览器客户端,终端110通过运行该浏览器客户端,渲染任一网址对应的页面。
需要说明的是,终端110泛指多个终端中的一个,本实施例仅以终端110来举例说明。本领域技术人员可以知晓,上述终端的数量可以更多或更少。例如上述终端可以仅为几个,或者上述终端为几十个或几百个,或者更多数量,本公开实施例对终端的数量和设备类型均不加以限定。
服务器120可以是一台服务器、多台服务器、云服务器、云计算平台或者虚拟化中心。在一些实施例中,服务器120是任一网站或者任意多个网站的后台服务器,服务器120存储有用于渲染属于该任一网站或者该任意多个网站的页面的资源,服务器120基于所存储的资源,为该任一网站或者该任意多个网站的页面渲染提供后台服务。
终端110与服务器120通过无线网络或者有线网络进行通信。终端110运行浏览器客户端,响应于页面渲染指令,且该页面渲染指令对应的网址属于服务器120对应的网站,通过与服务器120进行通信来获取用于渲染该网址对应的页面的资源,基于获取到的资源,渲染该网址对应的页面。
需要说明的是,服务器120泛指多个服务器中的一个,其中每个服务器分别为不同网站的后台服务器,终端110通过与不同网站的后台服务器进行通信,对不同网站的页面进行渲染。
本公开实施例提供的子应用启动方法以微前端的架构为基础实现,下面对微前端的架构下的子应用启动方法进行简要说明。
终端通过浏览器客户端运行任一网站对应的web(万维网)应用程序,来渲染该网站的页面。在微前端的架构中,web应用程序包括一个壳应用和多个子应用,多个子应用之间相互独立,便于web应用程序的开发和维护。终端在任一网站被访问时,加载该网站对应的web应用程序中的壳应用;在壳应用加载完成之后,通过壳应用对子应用进行调度。若某一子应用的页面被访问,且该子应用尚未被加载,则通过壳应用加载该子应用;若某一子应用的页面未被访问,且该子应用已被加载,则通过壳应用卸载该子应用。
其中,壳应用包括框架资源,该框架资源用于定义页面的框架,也即是用于定义页面的布局或者说用于定义页面的结构。壳应用的框架资源是终端从服务器加载得到的。壳应用的框架资源能够在多个子应用中复用,也就是说,每个子应用的页面的框架均基于该框架资源搭建。在一些实施例中,该框架资源为HTML资源。HTML资源包括至少一条用于指示页面的框架的程序代码,在一些实施例中,HTML资源也被称为HTML文件、HTML代码文件或者HTML代码。每个子应用包括渲染资源,每个子应用的渲染资源用于定义该子应用的页面的表现样式和交互逻辑。终端基于壳应用的框架资源以及已加载的子应用的渲染资源,启动子应用,从而在该子应用启动后,基于该子应用的运行,渲染出子应用的页面。
图2是根据一示例性实施例示出的一种子应用启动方法的流程图。参见图2,该子应用启动方法由终端执行,包括以下步骤。
201、基于子应用对应的资源表路径,加载该资源表路径指向的资源表,该资源表包括该子应用的渲染资源对应的渲染资源路径。
202、基于资源表中的至少一个渲染资源路径,加载至少一个渲染资源路径指向的渲染资源。
203、调用已加载的至少一个渲染资源,启动该子应用。
本公开实施例提供的技术方案,通过资源表来维护子应用的渲染资源对应的渲染资源路径,无需进行相关文件的解析,即可利用该资源表中的渲染资源路径进行渲染资源的加载,实现了高效的子应用资源发现机制,提高了渲染资源的获取效率,在此基础上,基于已加载的渲染资源,启动该子应用,提高了子应用的启动效率。
图3是根据一示例性实施例示出的一种子应用启动方法的流程图。参见图3,该子应用启动方法由服务器执行,包括以下步骤。
301、响应于接收到终端发送的资源表获取请求,获取资源表获取请求所携带的资源表路径。
302、获取资源表路径指向的资源表。
303、向终端返回获取到的资源表,该资源表包括子应用的渲染资源对应的渲染资源路径,渲染资源路径指向的渲染资源用于终端启动子应用。
本公开实施例提供的技术方案,为终端利用资源表中的渲染资源路径更加高效的加载渲染资源提供了支持,进而终端基于已加载的渲染资源,启动子应用,能够提高子应用的启动效率。
图4是根据一示例性实施例示出的一种子应用启动方法的交互流程图。参见图4,该子应用启动方法通过终端与服务器之间的交互来执行,该子应用启动方法包括以下步骤。
401、终端获取子应用对应的资源表路径。
终端需要基于上述子应用的渲染资源启动该子应用,并渲染该子应用的页面,且终端当前尚未将该子应用的渲染资源加载到本地,因此,终端获取该子应用对应的资源表路径,以基于该资源表路径获取该子应用对应的资源表,基于该资源表加载该子应用的渲染资源。其中,一个资源表路径指向一个子应用对应的资源表,用于表示一个子应用对应的资源表的存储位置。
在一些实施例中,终端本地存储有子应用标识与资源表路径的对应关系。终端响应于页面渲染指令,从页面渲染指令对应的网址中获取子应用标识,该子应用标识用于标识子应用,该页面渲染指令用于指示渲染的页面为该子应用的页面;终端基于所存储的子应用标识与资源表路径的对应关系,获取该子应用标识对应的资源表路径。
在一些实施例中,网址为URL(Uniform Resource Locator,统一资源定位器)格式的地址,网址也被称为URL。例如,网址为“https://aaaaa.com/b”,该网址中的子应用标识为“/b”,终端从所存储的子应用标识与资源表路径的对应关系中,获取“/b”对应的资源表路径。
需要说明的一点是,子应用标识与资源表路径的对应关系是预先配置在壳应用中的。在壳应用对应的网站被访问之前,该壳应用存储在服务器中。在壳应用对应的网站被访问时,终端从服务器加载壳应用,将所加载的壳应用存储在了本地,终端响应于页面渲染指令,从已存储在本地的壳应用中获取子应用标识与资源表路径的对应关系即可。
需要说明的另一点是,上述页面渲染指令是由用户在终端上执行的页面访问操作触发的。例如,页面访问操作为对已输入的网址的访问操作,终端响应于该页面访问操作,触发页面渲染指令,该页面渲染指令对应的网址为上述已输入的网址。再如,页面访问操作为对已显示的页面链接的点击操作,该页面链接与网址相对应,终端响应于该页面访问操作,触发页面渲染指令,该页面渲染指令对应的网址为上述页面链接对应的网址。
在本公开实施例中,如果需要渲染子应用的页面,从本地存储中即可快速查询到该子应用对应的资源表路径,提高了资源表路径的获取效率,进而基于所获取到的资源表路径,获取该子应用对应的渲染资源,能够进一步提高渲染资源的获取效率。
402、终端向服务器发送资源表获取请求,该资源表获取请求携带资源表路径。
子应用对应的资源表存储在服务器中。终端通过向服务器发送携带有资源表路径的资源表获取请求,以指示服务器返回该资源表路径指向的资源表。
403、服务器接收终端发送的资源表获取请求,根据接收到的资源表获取请求携带的资源表路径,获取该资源表路径指向的资源表。
服务器存储有多个子应用对应的资源表,每个子应用对应的资源表存储在一个资源表路径下。服务器根据接收到的资源表获取请求携带的资源表路径,在该资源表路径下,获取资源表。
需要说明的是,服务器获取资源表路径指向的已存储的资源表之前,还接收管理终端发送的多个子应用对应的资源表,分别在每个子应用对应的资源表路径下,存储每个子应用对应的资源表。其中,管理终端为用于开发和维护子应用的终端。管理终端用于基于每个子应用的至少一个渲染资源对应的渲染资源路径,生成每个子应用对应的资源表。
404、服务器向终端返回获取到的资源表。
服务器获取到资源表之后,向终端返回该资源表,从而对终端发送的资源表获取请求做出响应。
405、终端接收服务器返回的资源表,该资源表包括子应用的渲染资源对应的渲染资源路径。
其中,一个渲染资源路径指向一个渲染资源,用于表示该渲染资源的存储位置。渲染资源用于定义子应用的页面的表现样式和交互逻辑。渲染资源至少包括JS(JavaScript,一种脚本语言)资源。在一些实施例中,渲染资源还包括CSS(Cascading Style Sheets,层叠样式表)资源,CSS资源独立于JS资源存在,JS资源和CSS资源分别独立加载。在一些实施例中,CSS资源依赖于JS资源而存在,CSS资源的加载依赖于JS资源的执行。在本公开实施例中,以CSS资源独立于JS资源存在为例进行说明。
需要说明的是,JS资源包括至少一条用于指示页面的交互逻辑的程序代码,在一些实施例中,JS资源也被称为JS文件、JS代码文件或者JS代码。CSS资源包括至少一条用于指示页面的表现样式的程序代码,在一些实施例中,CSS资源也被称为CSS文件、CSS代码文件或者CSS代码。
需要说明的是,在上述步骤401至步骤405中,终端是根据子应用对应的资源表路径,从服务器获取该资源表路径指向的资源表的。在一些实施例中,终端本地存储有多个子应用对应的资源表,终端从本地存储的多个资源表中获取子应用对应的资源表即可。其中,每个子应用对应的资源表由该子应用的子应用标识来表示,相应的,上述终端从本地存储的多个资源表中获取子应用对应的资源表的步骤包括:终端响应于页面渲染指令,从页面渲染指令对应的网址中获取子应用标识;从本地存储的多个资源表中获取该子应用标识所表示的资源表。另外,需要说明的是,上述多个由子应用标识来表示的资源表是预先配置在壳应用中的,在壳应用对应的网站被访问之前,该壳应用存储在服务器中。在壳应用对应的网站被访问时,终端从服务器加载壳应用,将所加载的壳应用存储在了本地,上述本地存储的多个资源表即为存储在本地的壳应用包括的多个资源表。
在本公开实施例中,通过资源表来维护子应用的渲染资源路径,子应用未对应有HTML文件,由于每个HTML文件中均存在可复用的HTML代码,相较于每个子应用对应有HTML文件的方案,本公开实施例提供的技术方案减少了冗余资源的存储,使得子应用的资源更加简洁,降低了子应用的维护难度。并且,在本公开实施例中,若子应用的渲染资源的渲染资源路径更新,资源表会相应的更新,但是资源表的资源表路径不会更新,通过资源表路径,仍能获取到该资源表路径指向的资源表,相较于将渲染资源路径配置在壳应用中的方案,不需要随着渲染资源路径的更新来更新壳应用,进一步降低了壳应用与子应用之间的耦合度,使子应用的更新和维护更加便捷高效。
406、终端将资源表中的至少一个渲染资源路径分别插入到子应用所属的壳应用的框架资源中。
终端将渲染资源路径插入到框架资源中,以通过框架资源的运行,来加载渲染资源路径指向的渲染资源。在一些实施例中,框架资源为HTML资源。至少一个渲染资源路径至少包括第二渲染资源路径,第二渲染资源路径为JS资源的路径,用于指向JS资源。例如,一个第二渲染资源路径为“/static/js/chunk-vendors.7eb6ae.js”。在一些实施例中,至少一个渲染资源路径还包括第一渲染资源路径,第一渲染资源路径为CSS资源的路径,用于指向CSS资源。例如,一个第一资源渲染资源路径为“/static/css/chunk-vendors.eb67df.css”。在本公开实施例中,以至少一个渲染资源路径为多个渲染资源路径,该多个渲染资源路径包括至少一个第一渲染资源路径和至少一个第二渲染资源路径为例进行说明。
下面对终端将第一渲染资源路径插入到框架资源的步骤,以及,终端将第二渲染资源路径插入到框架资源的步骤进行说明。
对于至少一个渲染资源路径中的每个第一渲染资源路径,终端在框架资源中,为第一渲染资源路径创建link(链接)标签;将第一渲染资源路径插入到link标签中。其中,link标签用于定义HTML资源与外部资源的关系。在本公开实施例中,link标签用于链接CSS资源,link标签中插入的元素为CSS资源的路径。
对于至少一个渲染资源路径中的每个第二渲染资源路径,终端在框架资源中,为第二渲染资源路径创建script(脚本)标签;将第二渲染资源路径插入到script标签中。其中,script标签用于定义脚本。在本公开实施例中,script标签用于链接JS资源,script标签中插入到的元素为JS资源的路径。
407、终端通过运行框架资源,加载至少一个渲染资源路径指向的渲染资源。
上述步骤406执行之后,框架资源中增加了至少一个link标签和至少一个script标签。终端运行框架资源,在执行到link标签时,加载link标签中的CSS资源的路径指向的CSS资源;在执行到script标签时,加载script标签中的JS资源的路径指向的JS资源。也即是,终端通过运行框架资源,基于每个link标签中的第一渲染资源路径,加载每个link标签中的第一渲染资源路径指向的CSS资源;通过运行框架资源,基于每个script标签中的第二渲染资源路径,加载每个script标签中的第二渲染资源路径指向的JS资源。
在本公开实施例中,终端通过将渲染资源路径插入到框架资源中,向终端上的浏览器客户端声明了渲染资源路径,从而能够借助浏览器客户端的资源加载功能来加载渲染资源,利用浏览器客户端的资源加载功能能够有效规避跨域限制,所加载的渲染资源无需具备跨域访问的权限,提高了资源加载的灵活性。
需要说明的是,由于最后一个第二渲染资源路径指向的JS资源包括子应用的启动接口,而启动接口的运行依赖于之前的多个第二渲染资源路径指向的JS资源,若最后一个第二渲染资源路径指向的JS资源在其他第二渲染资源路径指向的JS资源加载完成之前加载运行,终端会由于找不到前置依赖而报错,并且,由于被污染的内存无法清理,也无法恢复正常。因此,为保证资源加载和运行的稳定性,需要在之前的多个第二渲染资源路径指向的JS资源加载完成之后再加载最后一个第二渲染资源路径指向的JS资源。也即是,终端响应于至少一个渲染资源路径包括按序排列的N个第二渲染资源路径,在前N-1个第二渲染资源路径指向的JS资源加载完成之后,加载最后一个第二渲染资源路径指向的JS资源,其中,N为大于1的整数。
需要说明的是,终端每加载完成一个JS资源,会触发一个第一load(加载)事件。终端响应于监听到N-1个第一load事件,确定前N-1个第二渲染资源路径指向的JS资源加载完成。在一些实施例中,上述前N-1个第二渲染资源路径指向的JS资源可以并行加载,也即是上述前N-1个第二渲染资源路径指向的JS资源同步进行加载;或者,上述前N-1个第二渲染资源路径指向的JS资源也可以串行加载,也即是上述前N-1个第二渲染资源路径指向的JS资源按照在资源表中的排列顺序,在一个JS资源加载完成之后再加载下一个JS资源,本公开实施例对前N-1个第二渲染资源路径指向的JS资源的加载顺序不加以限定。
需要说明的是,若多个渲染资源路径指向的资源包括CSS资源,由于启动接口的运行也依赖于已加载的CSS资源,则终端在加载最后一个第二渲染资源路径指向的JS资源之前,应先加载完成多个渲染资源路径中的第一渲染资源路径指向的CSS资源。在一些实施例中,终端先加载多个渲染资源路径中的第一渲染资源路径指向的CSS资源,在CSS资源加载完成之后,再加载多个渲染资源路径中的第二渲染资源路径指向的JS资源。需要说明的是,终端每加载完成一个CSS资源,会触发一个第二load(加载)事件。若多个渲染资源路径中的第一渲染资源路径的数量为M个,则终端响应于监听到M个第二load事件,确定M个CSS资源加载完成,其中,M为大于1的整数。在一些实施例中,多个第一渲染资源路径指向的CSS资源可以串行加载,以避免样式的渲染被错误覆盖,提高样式渲染的稳定性;或者,多个第一渲染资源路径指向的CSS资源也可以并行加载,本公开实施例对多个第一渲染资源路径指向的CSS资源的加载顺序不加以限定。
为了便于理解,下面结合图5对渲染资源的加载过程进行说明,参见图5,终端先加载资源表;根据资源表中的CSS资源的路径,加载全部CSS资源;根据资源表中的JS资源的路径的排列顺序,先加载前N-1个JS资源;再加载最后一个JS资源。
需要说明的是,至少一个渲染资源路径包括多个渲染资源路径,在一些实施例中,终端按照多个渲染资源路径在资源表中的排列顺序,依次加载每个渲染资源路径指向的渲染资源,以避免应预先加载的渲染资源由于延后加载而产生的错误,提高页面渲染的稳定性。
需要说明的是,在一些实施例中,渲染资源存储在服务器上,终端从服务器加载渲染资源。终端从服务器加载渲染资源的步骤包括:终端向服务器发送资源获取请求,该资源获取请求携带资源表中的一个渲染资源路径,该资源获取请求用于指示服务器返回渲染资源路径指向的渲染资源;服务器响应于接收到终端发送的资源获取请求,获取资源获取请求所携带的渲染资源路径;服务器获取渲染资源路径指向的渲染资源;服务器向终端返回获取到的渲染资源;终端接收服务器返回的渲染资源。
上述技术方案,将渲染资源存储于服务器,在渲染页面时,才向服务器请求获取渲染资源,减少了渲染资源对终端的缓存的占用,提高了缓存资源的利用率。
408、终端从所加载的至少一个渲染资源的最后一个渲染资源中确定子应用的启动接口。
启动接口具有调用已加载的渲染资源启动子应用的功能,启动接口在最后一个JS资源中。在一些实施例中,由于最后一个JS资源中的全局接口仅包括启动接口,终端可以将最后一个JS资源加载前后新增的全局接口确定为启动接口。相应的,上述步骤408包括:终端响应于N个第二渲染资源路径中的前N-1个第二渲染资源路径指向的JS资源加载完成,获取当前的全局接口的接口名称构成的第一名称集合,其中,全局接口为在全局内被调用的接口;终端响应于N个第二渲染资源路径指向的JS资源加载完成,获取当前的全局接口的接口名称构成的第二名称集合;终端确定第二名称集合相对于第一名称集合新增的目标接口名称,将所加载的最后一个JS资源中的目标接口名称对应的接口确定为启动接口。
需要说明的是,由于启动接口是在全局内声明的接口,最后一个JS资源加载完成之后,该启动接口的接口名称会挂载在全局对象中,其中,全局对象也即是window(窗口)对象,全局对象包括在全局内声明的接口的接口名称,上述第一名称集合由前N-1个JS资源加载完成之后且最后一个JS资源加载完成之前的全局对象包括的接口名称构成。上述第二名称集合由最后一个JS资源加载完成之后的全局对象包括的接口名称构成。
上述技术方案,将最后一个JS资源加载前后新增的全局接口确定为启动接口,即使启动接口没有按照指定的规则命名,也能够自动探测到启动接口,解除了不必要的约定和耦合,提高了确定启动接口的灵活性。
在一些实施例中,新增的全局接口的接口名称要么位于第二名称集合的首位,要么位于第二名称集合的次位,要么位于第二名称集合的末位,终端确定上述三个位置上的接口名称是否为新增的接口名称即可。
在一些实施例中,终端先确定第二名称集合中的第一个接口名称是否为新增的接口名称,如果第二名称集合中的第一个接口名称是新增的接口名称,则将第二名称集合中的第一个接口名称确定为启动接口的接口名称,结束确定启动接口的接口名称的过程,上述过程的时间复杂度仅为O(1),极大的提高了确定启动接口的接口名称的效率,进而能够进一步提升子应用的启动效率。
相应的,终端确定第二名称集合相对于第一名称集合新增的目标接口名称之前,还获取第一名称集合中的第一个接口名称,以及,获取第二名称集合中的第一个接口名称;上述终端确定第二名称集合相对于第一名称集合新增的目标接口名称的步骤包括:终端响应于第一名称集合中的第一个接口名称与第二名称集合中的第一个接口名称不同,将第二名称集合中的第一个接口名称确定为目标接口名称。
如果第二名称集合中的第一个接口名称不是新增的接口名称,则终端继续确定第二名称集合中的第二个接口名称是否为新增的接口名称,如果第二名称集合中的第二个接口名称是新增的接口名称,则将第二名称集合中的第二个接口名称确定为启动接口的接口名称,结束确定启动接口的接口名称的过程。相应的,上述终端获取第一名称集合中的第一个接口名称,以及,获取第二名称集合中的第一个接口名称的步骤包括:终端获取第一名称集合中的第一个接口名称和第一名称集合中的第二个接口名称,以及,获取第二名称集合中的第一个接口名称;上述终端确定第二名称集合相对于第一名称集合新增的目标接口名称的步骤还包括:终端响应于第一名称集合中的第一个接口名称与第二名称集合中的第一个接口名称相同,获取第二名称集合中的第二个接口名称;终端响应于第一名称集合中的第二个接口名称与第二名称集合中的第二个接口名称不同,将第二名称集合中的第二个接口名称确定为目标接口名称。
上述过程中,在第一个接口名称不是新增的接口名称的情况下,才获取第二名称集合中的第二个接口名称,与第一名称集合中的第二个接口名称进行比较,相较于在不确定第一个接口名称是否为新增的接口名称的情况下就获取第二名称集合中的第二个接口名称,减少了不必要的情况下获取第二个接口名称的步骤,能够进一步提高启动接口的接口名称的确定效率,进而进一步提高子应用的启动效率。并且,如果第二名称集合中的第二个接口名称是新增的接口名称,上述确定启动接口的接口名称的过程的时间复杂度也仅为O(1),极大的提高了确定启动接口的接口名称的效率,进而能够进一步提升子应用的启动效率。
在一些实施例中,如果第二名称集合中的第二个接口名称不是新增的接口名称,则终端继续确定第二名称集合中的最后一个接口名称是否为新增的接口名称,如果第二名称集合中的最后一个接口名称是新增的接口名称,则将第二名称集合中的最后一个接口名称确定为启动接口的接口名称,以保证确定启动接口的接口名称的准确性。相应的,上述终端获取第一名称集合中的第一个接口名称和第一名称集合中的第二个接口名称,以及,获取第二名称集合中的第一个接口名称的步骤包括:获取第一名称集合中的第一个接口名称、第一名称集合中的第二个接口名称和第一名称集合中的最后一个接口名称,以及,获取第二名称集合中的第一个接口名称;上述终端确定第二名称集合相对于第一名称集合新增的目标接口名称的步骤还包括:终端响应于第一名称集合中的第二个接口名称与第二名称集合中的第二个接口名称相同,获取第二名称集合中的最后一个接口名称;终端响应于第一名称集合中的最后一个接口名称与第二名称集合中的最后一个接口名称不同,将第二名称集合中的最后一个接口名称确定为目标接口名称。
上述过程中,在第二个接口名称不是新增的接口名称的情况下,才获取第二名称集合中的最后一个接口名称,与第一名称集合中的最后一个接口名称进行比较,相较于在不确定第一个接口名称或者第二个接口名称是否为新增的接口名称的情况下,就获取第二名称集合中的最后一个接口名称,减少了不必要的情况下获取接口名称的步骤,能够进一步提高启动接口的接口名称的确定效率,进而进一步提高子应用的启动效率。并且,如果第二名称集合中的最后一个接口名称才是新增的接口名称,上述确定启动接口的接口名称的过程的时间复杂度也仅为O(n),其中,n代表第二名称集合中的接口名称的数量,n为大于2的整数,相较于一一对比第一名称集合与第二名称集合中的接口名称的方式,也极大的提高了确定启动接口的接口名称的效率,进而能够进一步提升子应用的启动效率。
需要说明的是,在一些实施例中,终端可以在确定启动接口的接口名称,先从第一名称集合中获取第一个接口名称、第二个接口名称和最后一个接口名称。在一些实施例中,终端也可以先从第一名称集合中获取第一个接口名称,响应于第一个接口名称不是新增的接口名称,才从第一名称集合中获取第二个接口名称;响应于第二个接口名称也不是新增的接口名称,才从第一名称集合中获取最后一个接口名称,本公开实施例,对终端从第一名称集合中获取第一个接口名称、第二个接口名称以及最后一个接口名称的时机,不加以限定。
为了使上述确定启动接口的接口名称的流程更加清晰,下面结合图6和图7进行说明。以终端在确定启动接口的接口名称之前,先从第一名称集合中获取第一个接口名称、第二个接口名称和最后一个接口名称为例,参见图6,终端在前N-1个JS资源渲染完成之后,最后一个JS资源渲染完成之前,对第一名称集合中的接口名称进行遍历;终端首先获取到第一个接口名称,判断第一参数是否为空,第一参数用于代表第一名称集合中的第一个接口名称;此时第一参数为空,终端将第一个接口名称赋值给第一参数;终端接着获取第二个接口名称,判断第一参数是否为空;此时第一参数不为空,终端判断第二参数是否为空,第二参数用于代表第一名称集合中的第二个接口名称;此时第二参数为空,终端将第二个接口名称赋值给第二参数;终端接着获取第三个接口名称,判断第一参数是否为空;此时第一参数不为空;终端判断第二参数是否为空;此时第二参数不为空,终端将第三个接口名称赋值给第三参数,第三参数用于代表第一名称集合中的最后一个接口名称;若遍历未结束,终端接着获取第四个接口名称,判断第一参数是否为空;此时第一参数不为空;终端判断第二参数是否为空;此时第二参数不为空,终端将第四个接口名称赋值给第三参数;若遍历未结束,终端继续执行与上述步骤同理的步骤;若遍历结束,则最终赋值给第三参数的值即为最后一个接口名称。
上述从第一名称集合中获取第一个接口名称、第二个接口名称和最后一个接口名称的过程也可以表示为以下步骤:终端执行“p in window”的步骤,对window对象内的接口名称进行遍历,其中,p代表接口名称,window代表window对象;终端执行“firstGlobalProp==null?”的判断步骤,其中,firstGlobalProp(第一个全局属性)代表第一参数,null(空)代表空;若判断结果为是,则执行“firstGlobalProp=p”的赋值步骤,将当前的p代表的接口名称赋值给firstGlobalProp,并返回“p in window”的步骤;若判断结果为否,则执行“secondGlobalProp==null?”的判断步骤,其中,secondGlobalProp(第二个全局属性)代表第二参数;若判断结果为是,则执行“secondGlobalProp=p”的赋值步骤,将当前的p代表的接口名称赋值给secondGlobalProp,并返回“p in window”的步骤;若判断结果为否,则执行“lastGlobalProp=p”的步骤,将当前的p代表的接口名称赋值给lastGlobalProp,若遍历未结束,继续返回“p in window”的步骤,其中,lastGlobalProp(最后一个全局属性)代表第三参数。若遍历未结束,则lastGlobalProp的赋值一直在更新,直至遍历结束,lastGlobalProp的赋值为最后一个接口名称。
终端从第一名称集合中获取第一个接口名称、第二个接口名称和最后一个接口名称之后,且最后一个JS资源加载完成之后,终端确定第二名称集合中新增的接口名称。参见图7,终端对第二名称集合中的接口名称进行遍历,并记录遍历次数为第四参数,第四参数的初始值为0,第四参数为0时,遍历到的接口名称为第一个接口名称;终端判断第四参数是否为0且遍历到的第一个接口名称与第一参数是否不同;若第四参数为0且第一个接口名称与第一参数不同,则返回第一个接口名称,将第一个接口名称确定为启动接口的接口名称;若第四参数不为0或者第一个接口名称与第一参数相同,则终端继续对第二名称集合中的接口名称进行遍历,遍历到的接口名称为第二个接口名称,此时第四参数为1;终端判断第四参数是否为1且遍历到的第二个接口名称与第二参数是否不同;若第四参数为1且第二个接口名称与第二参数不同,则返回第二个接口名称,将第二个接口名称确定为启动接口的接口名称;若第四参数不为1或者第二个接口名称与第二参数相同,则终端继续对第二名称集合中的接口名称进行遍历,遍历到的接口名称为第三个接口名称;将第四参数的数值加1;将第三个接口名称赋值给第五参数,第五参数用于代表第二名称集合中的最后一个接口名称;若遍历未结束,则终端返回对第二名称集合中的接口名称进行遍历的步骤,继续执行与上述步骤同理的步骤,直至遍历结束,第五参数的赋值被更新为第二名称集合中的最后一个接口名称;遍历结束后,终端判断第三参数与第五参数是否不同,若第三参数与第五参数不同,则返回第五参数,将最后一个接口名称确定为启动接口的接口名称。将遍历到的接口名称赋值给第五参数。
上述确定第二名称集合中新增的接口名称的过程也可以表示为以下步骤:终端执行“cnt=0”的步骤,将0赋值给cnt,其中,cnt代表第四参数;终端执行“p in window”的步骤;终端执行“cnt==0&&firstGlobalProp!=p?”的判断步骤;若判断结果为是,则将当前的p代表的第一个接口名称确定为启动接口的接口名称;若判断结果为否,则执行“cnt==1&&secondGlobalProp!=p?”的判断步骤;若判断结果为是,则将当前的p代表的第二个接口名称确定为启动接口的接口名称;若判断结果为否,则执行“cnt++”的步骤,将第四参数的数值加1;执行“lastProp=p”的步骤,直至遍历结束,其中,lastProp(最后一个属性)代表第五参数;遍历结束之后,lastProp的赋值为第二名称集合中的最后一个接口名称;终端执行“lastProp!=lastGlobalProp”的判断步骤,若判断结果为是,则返回lastProp,也即是将最后一个接口名称确定为启动接口的接口名称。
在一些实施例中,上述终端确定第二名称集合相对于第一名称集合新增的目标接口名称的步骤包括:终端从第一名称集合中获取第一个接口名称、第二个接口名称和最后一个接口名称;终端从第二名称集合中获取第一个接口名称、第二个接口名称和最后一个接口名称;终端比较第一名称集合中的第一个接口名称和第二名称集合中的第一个接口名称、第一名称集合中的第二个接口名称和第二名称集合中的第二个接口名称以及第一名称集合中的最后一个接口名称和第二名称集合中的最后一个接口名称;若第一名称集合中的第一个接口名称和第二名称集合中的第一个接口名称不同,则将第二名称集合中的第一个接口名称确定为目标接口名称;若第一名称集合中的第二个接口名称和第二名称集合中的第二个接口名称不同,则将第二名称集合中的第二个接口名称确定为目标接口名称;若第一名称集合中的最后一个接口名称和第二名称集合中的最后一个接口名称不同,则将第二名称集合中的最后一个接口名称确定为目标接口名称。
上述技术方案,仅通过名称集合中的首位、次位和末位三个位置上的名称的比较,即可确定新增的接口名称,相较于对名称集合中的全部接口名称进行一一比较,提高了确定目标接口名称的效率,进一步能够提高子应用的启动效率。
在一些实施例中,上述终端确定第二名称集合相对于第一名称集合新增的目标接口名称的步骤包括:终端分别对第一名称集合中的每个接口名称和第二名称集合中的每个接口名称进行比较;将第二名称集合中的与第一名称集合中的多个接口名称均不相同的接口名称确定为目标接口名称。
409、终端通过运行启动接口,调用已加载的至少一个渲染资源,启动子应用。
在一些实施例中,终端响应于页面渲染指令,执行步骤401,则终端通过运行启动接口,调用已加载的至少一个渲染资源,启动子应用,在该子应用启动后,基于该子应用的运行,渲染出该页面渲染指令对应的网址对应的页面。
本公开实施例提供的技术方案,通过资源表来维护子应用的渲染资源对应的渲染资源路径,无需进行相关文件的解析,即可利用该资源表中的渲染资源路径进行渲染资源的加载,实现了高效的子应用资源发现机制,提高了渲染资源的获取效率,在此基础上,基于已加载的渲染资源,启动该子应用,提高了子应用的启动效率。
需要说明的是,上述实施例均是以终端本地未缓存有资源表以及渲染资源为前提实施的。在一些实施例中,终端获取到资源表之后,在本地缓存该资源表;终端将渲染资源加载到缓存中进行存储。若页面渲染指令指示渲染子应用的页面,且终端本地缓存有该子应用的渲染资源,则终端从本地缓存中获取该子应用的渲染资源,调用该渲染资源,启动该子应用即可;若终端本地未缓存有该子应用的渲染资源,且终端本地缓存有该子应用的资源表,则终端从本地缓存中获取该子应用的资源表,基于该资源表中的渲染资源路径,加载渲染资源路径指向的渲染资源,调用该渲染资源,启动该子应用即可。
需要说明的是,服务器存储有子应用对应的资源表,该资源表是管理终端上传到服务器的,管理终端向服务器上传该资源表之前,还生成子应用对应的资源表。管理终端生成任一子应用对应的资源表的步骤包括:管理终端获取子应用的至少一个渲染资源对应的渲染资源路径;基于所获取的至少一个渲染资源路径,生成子应用对应的资源表。
在web应用程序的开发过程中,一个壳应用以及多个子应用构成一个开发项目,壳应用的框架资源以及每个子应用的渲染资源分别在该开发项目的不同路径下。上述管理终端获取子应用的至少一个渲染资源对应的渲染资源路径的步骤包括:在子应用开发完成之后,管理终端获取子应用的每个渲染资源在该开发项目下的路径;在每个渲染资源在该开发项目下的路径之前,拼接服务器为该开发项目分配的路径,得到该子应用的每个渲染资源的渲染资源路径。
渲染资源的渲染资源路径在资源表中的排列顺序会影响渲染资源的加载顺序,终端按照每个渲染资源的加载顺序,生成子应用对应的资源表,渲染资源路径在该资源表中的排列顺序与该渲染资源的加载顺序一致。其中,包括启动接口的渲染资源的排列顺序在资源表的最后一位。在一些实施例中,JS资源的渲染资源路径的排列顺序在CSS资源的渲染资源路径的排列顺序之后。
在一些实施例中,所生成的资源表的数据格式为JSON(JavaScript ObjectNotation,一种脚本语言的对象简谱)格式,JSON格式是一种轻量级的数据交换格式,JSON格式的资源表中的渲染资源路径的读取更加简洁高效,能够进一步提升效率。在一些实施例中,管理终端基于webpack(网络包)插件,将所获取的至少一个渲染资源路径,打包成JSON格式的资源表,其中,webpack插件具有将资源打包为JSON格式的文件的功能。
在一些实施例中,资源表还包括版本字段,版本字段用于代表资源表的格式的版本,若资源表的格式发生变化,则版本字段更新。例如,管理终端为一个子应用生成的资源表如下所示:
{“version”:1,
“CSS”:[“/static/css/chunk-vendors.eb67df.css”,“/static/css/app.67de0f.css”]
“JS”:[“/static/js/chunk-vendors.7eb6ae.js”,“/static/js/app.6cf80a.js”]}。
其中,“version(版本)”为版本字段,“1”为当前版本。“CSS”为CSS资源的路径的字段,“/static/css/chunk-vendors.eb67df.css”和“/static/css/app.67de0f.css”分别为不同CSS资源的路径。“JS”为JS资源的路径的字段,“/static/js/chunk-vendors.7eb6ae.js”,“/static/js/app.6cf80a.js”分别为不同JS资源的路径。
若资源表除“version”、“CSS”和“JS”三个字段之外,还新增了其他字段,则资源表的格式发生了变化,更新版本字段。
为了使微前端的架构下的子应用加载的过程更加清晰,下面结合图8进行说明,参见图8,微前端的架构中包括子应用和壳应用,子应用在管理终端上构建完成之后,管理终端通过资源表生成模块,生成该子应用对应的资源表;将该子应用以及该子应用对应的资源表发布到生产环境的服务器;终端通过资源加载模块执行上述步骤401至步骤407,来加载子应用的渲染资源;通过入口嗅探模块执行上述步骤408,来确定子应用的启动接口,进而通过步骤409运行启动接口,调用已加载的渲染资源,启动该子应用,从而基于该子应用的运行,渲染出该子应用的页面。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
图9是根据一示例性实施例示出的一种子应用启动装置的框图。参见图9,该装置包括第一资源表加载单元901、渲染资源加载单元902和子应用启动单元903。
第一资源表加载单元901,被配置为执行基于子应用对应的资源表路径,加载该资源表路径指向的资源表,资源表包括子应用的渲染资源对应的渲染资源路径;
渲染资源加载单元902,被配置为执行基于资源表中的至少一个渲染资源路径,加载至少一个渲染资源路径指向的渲染资源;
子应用启动单元903,被配置为执行调用已加载的至少一个渲染资源,启动该子应用。
本公开实施例提供的技术方案,通过资源表来维护子应用的渲染资源对应的渲染资源路径,无需进行相关文件的解析,即可利用该资源表中的渲染资源路径进行渲染资源的加载,实现了高效的子应用资源发现机制,提高了渲染资源的获取效率,在此基础上,基于已加载的渲染资源,启动该子应用,提高了子应用的启动效率。
在一些实施例中,第一资源表加载单元901,被配置为执行:
基于该资源表路径,向服务器发送资源表获取请求,资源表获取请求携带资源表路径,资源表获取请求用于指示服务器返回资源表路径指向的资源表;
接收服务器返回的资源表。
在一些实施例中,第一资源表加载单元901,还被配置为执行:
响应于页面渲染指令,从页面渲染指令对应的网址中获取子应用标识,子应用标识用于标识子应用;
基于所存储的子应用标识与资源表路径的对应关系,获取子应用标识对应的资源表路径。
在一些实施例中,子应用启动装置还包括:
第一资源路径获取单元,被配置为执行获取子应用的至少一个渲染资源对应的渲染资源路径;
资源表生成单元,被配置为执行基于所获取的至少一个渲染资源路径,生成子应用对应的资源表。
在一些实施例中,渲染资源加载单元902,包括:
资源路径插入子单元,被配置为执行将至少一个渲染资源路径分别插入到子应用所属的壳应用的框架资源中;
渲染资源加载子单元,被配置为执行通过运行框架资源,加载至少一个渲染资源路径指向的渲染资源。
在一些实施例中,资源路径插入子单元,被配置为执行:
对于至少一个渲染资源路径中的每个第一渲染资源路径,在框架资源中,为第一渲染资源路径创建链接link标签,第一渲染资源路径为层叠样式表CSS资源的路径,框架资源为超文本标记语言HTML资源;
将第一渲染资源路径插入到link标签中。
在一些实施例中,渲染资源加载子单元,被配置为执行:
通过运行框架资源,基于每个link标签中的第一渲染资源路径,加载每个link标签中的第一渲染资源路径指向的CSS资源。
在一些实施例中,资源路径插入子单元,被配置为执行:
对于至少一个渲染资源路径中的每个第二渲染资源路径,在框架资源中,为第二渲染资源路径创建脚本script标签,第二渲染资源路径为脚本语言JS资源的路径,框架资源为HTML资源;
将第二渲染资源路径插入到script标签中。
在一些实施例中,渲染资源加载子单元,被配置为执行:
通过运行框架资源,基于每个script标签中的第二渲染资源路径,加载每个script标签中的第二渲染资源路径指向的JS资源。
在一些实施例中,渲染资源加载单元902,被配置为执行:
响应于至少一个渲染资源路径包括按序排列的N个第二渲染资源路径,在前N-1个第二渲染资源路径指向的JS资源加载完成之后,加载最后一个第二渲染资源路径指向的JS资源,N为大于1的整数,第二渲染资源路径为JS资源的路径。
在一些实施例中,至少一个渲染资源路径包括多个渲染资源路径,渲染资源加载单元902,被配置为执行:
按照多个渲染资源路径在资源表中的排列顺序,依次加载每个渲染资源路径指向的渲染资源。
在一些实施例中,渲染资源加载单元902,被配置为执行:
向服务器发送资源获取请求,资源获取请求携带资源表中的一个渲染资源路径,资源获取请求用于指示服务器返回渲染资源路径指向的渲染资源;
接收服务器返回的渲染资源。
在一些实施例中,至少一个渲染资源中的最后一个渲染资源包括启动接口;
子应用启动单元903,包括:
启动接口确定子单元,被配置为执行从所加载的最后一个渲染资源中确定子应用的启动接口;
子应用启动子单元,被配置为执行通过运行启动接口,调用已加载的至少一个渲染资源,启动子应用。
在一些实施例中,至少一个渲染资源路径包括N个第二渲染资源路径,第二渲染资源路径为JS资源的路径,N为大于1的整数;
启动接口确定子单元,包括:
第一名称集合获取子-子单元,被配置为执行响应于N个第二渲染资源路径中的前N-1个第二渲染资源路径指向的JS资源加载完成,获取当前的全局接口的接口名称构成的第一名称集合,全局接口为在全局内被调用的接口;
第二名称集合获取子-子单元,被配置为执行响应于N个第二渲染资源路径指向的JS资源加载完成,获取当前的全局接口的接口名称构成的第二名称集合;
接口名称确定子-子单元,被配置为执行确定第二名称集合相对于第一名称集合新增的目标接口名称,将所加载的最后一个JS资源中的目标接口名称对应的接口确定为启动接口。
在一些实施例中,子应用启动装置还包括:
接口名称获取子-子单元,被配置为执行获取第一名称集合中的第一个接口名称,以及,获取第二名称集合中的第一个接口名称;
接口名称确定子-子单元,被配置为执行:
响应于第一名称集合中的第一个接口名称与第二名称集合中的第一个接口名称不同,将第二名称集合中的第一个接口名称确定为目标接口名称。
在一些实施例中,接口名称获取子-子单元,被配置为执行:
获取第一名称集合中的第一个接口名称和第一名称集合中的第二个接口名称,以及,获取第二名称集合中的第一个接口名称;
接口名称确定子-子单元,还被配置为执行:
响应于第一名称集合中的第一个接口名称与第二名称集合中的第一个接口名称相同,获取第二名称集合中的第二个接口名称;
响应于第一名称集合中的第二个接口名称与第二名称集合中的第二个接口名称不同,将第二名称集合中的第二个接口名称确定为目标接口名称。
在一些实施例中,接口名称获取子-子单元,被配置为执行:
获取第一名称集合中的第一个接口名称、第一名称集合中的第二个接口名称和第一名称集合中的最后一个接口名称,以及,获取第二名称集合中的第一个接口名称;
接口名称确定子-子单元,还被配置为执行:
响应于第一名称集合中的第二个接口名称与第二名称集合中的第二个接口名称相同,获取第二名称集合中的最后一个接口名称;
响应于第一名称集合中的最后一个接口名称与第二名称集合中的最后一个接口名称不同,将第二名称集合中的最后一个接口名称确定为目标接口名称。
关于上述实施例中的装置,其中各个单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图10是根据一示例性实施例示出的一种子应用启动装置的框图。参见图10,该装置包括资源表路径获取单元1001、第二资源表获取单元1002和资源表返回单元1003。
资源表路径获取单元1001,被配置为执行响应于接收到终端发送的资源表获取请求,获取资源表获取请求所携带的资源表路径;
第二资源表获取单元1002,被配置为执行获取资源表路径指向的资源表;
资源表返回单元1003,被配置为执行向终端返回获取到的资源表,资源表包括子应用的渲染资源对应的渲染资源路径,渲染资源路径指向的渲染资源用于终端启动子应用。
本公开实施例提供的技术方案,为终端利用资源表中的渲染资源路径更加高效的加载渲染资源提供了支持,进而终端基于已加载的渲染资源,启动子应用,能够提高子应用的启动效率。
在一些实施例中,子应用启动装置还包括:
资源表接收单元,被配置为执行接收管理终端发送的多个子应用对应的资源表,管理终端用于基于每个子应用的至少一个渲染资源对应的渲染资源路径,生成每个子应用对应的资源表;
资源表存储单元,被配置为执行分别在每个子应用对应的资源表路径下,存储每个子应用对应的资源表。
在一些实施例中,子应用启动装置还包括:
第二资源路径获取单元,被配置为执行响应于接收到终端发送的资源获取请求,获取资源获取请求所携带的渲染资源路径;
渲染资源获取单元,被配置为执行获取渲染资源路径指向的渲染资源;
渲染资源返回单元,被配置为执行向终端返回获取到的渲染资源。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图11是根据一示例性实施例示出的一种终端的框图。该终端1100可以是便携式移动终端,比如:智能手机、平板电脑、笔记本电脑或台式电脑。终端1100还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端1100包括有:处理器1101和存储器1102。
处理器1101可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1101可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1101也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1101可以集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1101还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1102可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1102还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1102中的非暂态的计算机可读存储介质用于存储至少一条指令,该至少一条指令用于被处理器1101所执行以实现本公开中方法实施例提供的子应用启动方法。
在一些实施例中,终端1100还可选包括有:外围设备接口1103和至少一个外围设备。处理器1101、存储器1102和外围设备接口1103之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1103相连。具体地,外围设备包括:射频电路1104、显示屏1105、摄像头组件1106、音频电路1107、定位组件1108和电源1109中的至少一种。
外围设备接口1103可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器1101和存储器1102。在一些实施例中,处理器1101、存储器1102和外围设备接口1103被集成在同一芯片或电路板上;在一些其他实施例中,处理器1101、存储器1102和外围设备接口1103中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1104用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1104通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1104将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1104包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1104可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1104还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本公开对此不加以限定。
显示屏1105用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1105是触摸显示屏时,显示屏1105还具有采集在显示屏1105的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1101进行处理。此时,显示屏1105还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1105可以为一个,设置在终端1100的前面板;在另一些实施例中,显示屏1105可以为至少两个,分别设置在终端1100的不同表面或呈折叠设计;在另一些实施例中,显示屏1105可以是柔性显示屏,设置在终端1100的弯曲表面上或折叠面上。甚至,显示屏1105还可以设置成非矩形的不规则图形,也即异形屏。显示屏1105可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-EmittingDiode,有机发光二极管)等材质制备。
摄像头组件1106用于采集图像或视频。可选地,摄像头组件1106包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1106还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路1107可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1101进行处理,或者输入至射频电路1104以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1100的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1101或射频电路1104的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1107还可以包括耳机插孔。
定位组件1108用于定位终端1100的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件1108可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统或俄罗斯的伽利略系统的定位组件。
电源1109用于为终端1100中的各个组件进行供电。电源1109可以是交流电、直流电、一次性电池或可充电电池。当电源1109包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端1100还包括有一个或多个传感器1110。该一个或多个传感器1110包括但不限于:加速度传感器1111、陀螺仪传感器1112、压力传感器1113、指纹传感器1114、光学传感器1115以及接近传感器1116。
本领域技术人员可以理解,图11中示出的结构并不构成对终端1100的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
图12是根据一示例性实施例示出的一种服务器的框图,该服务器1200可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(Central ProcessingUnits,CPU)1201和一个或一个以上的存储器1202,其中,存储器1202用于存储可执行指令,处理器1201被配置为执行上述可执行指令,以实现上述各个方法实施例提供的子应用启动方法。当然,该服务器还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种包括指令的计算机可读存储介质,例如包括指令的存储器1202,上述指令可由服务器1200的处理器1201执行以完成上述子应用启动方法。可选地,计算机可读存储介质可以是ROM(Read-Only Memory,只读存储器)、RAM(RandomAccess Memory,随机存取存储器)、CD-ROM(Compact Disc Read-Only Memory,只读光盘)、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序被处理器执行时实现上述各个方法实施例中的子应用启动方法。
在示例性实施例中,还提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序被处理器执行时实现上述各个方法实施例中的子应用启动方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种子应用启动方法,其特征在于,所述子应用启动方法包括:
基于子应用对应的资源表路径,加载所述资源表路径指向的资源表,所述资源表包括所述子应用的渲染资源对应的渲染资源路径;
基于所述资源表中的至少一个渲染资源路径,加载所述至少一个渲染资源路径指向的渲染资源;
调用已加载的至少一个渲染资源,启动所述子应用。
2.根据权利要求1所述的子应用启动方法,其特征在于,所述基于子应用对应的资源表路径,加载所述资源表路径指向的资源表,包括:
基于所述资源表路径,向服务器发送资源表获取请求,所述资源表获取请求携带所述资源表路径,所述资源表获取请求用于指示所述服务器返回所述资源表路径指向的资源表;
接收所述服务器返回的所述资源表。
3.根据权利要求1所述的子应用启动方法,其特征在于,所述基于所述资源表中的至少一个渲染资源路径,加载所述至少一个渲染资源路径指向的渲染资源,包括:
将所述至少一个渲染资源路径分别插入到所述子应用所属的壳应用的框架资源中;
通过运行所述框架资源,加载所述至少一个渲染资源路径指向的渲染资源。
4.根据权利要求1所述的子应用启动方法,其特征在于,所述调用已加载的至少一个渲染资源,启动所述子应用,包括:
从所加载的最后一个渲染资源中确定所述子应用的启动接口;
通过运行所述启动接口,调用已加载的所述至少一个渲染资源,启动所述子应用。
5.一种子应用启动方法,其特征在于,所述子应用启动方法包括:
响应于接收到终端发送的资源表获取请求,获取所述资源表获取请求所携带的资源表路径;
获取所述资源表路径指向的资源表;
向所述终端返回获取到的资源表,所述资源表包括子应用的渲染资源对应的渲染资源路径,所述渲染资源路径指向的渲染资源用于所述终端启动所述子应用。
6.根据权利要求5所述的子应用启动方法,其特征在于,所述获取所述资源表路径指向的资源表之前,所述子应用启动方法还包括:
接收管理终端发送的多个子应用对应的资源表,所述管理终端用于基于每个子应用的至少一个渲染资源对应的渲染资源路径,生成所述每个子应用对应的资源表;
分别在所述每个子应用对应的资源表路径下,存储所述每个子应用对应的资源表。
7.一种子应用启动装置,其特征在于,所述子应用启动装置包括:
第一资源表加载单元,被配置为执行基于子应用对应的资源表路径,加载所述资源表路径指向的资源表,所述资源表包括所述子应用的渲染资源对应的渲染资源路径;
渲染资源加载单元,被配置为执行基于所述资源表中的至少一个渲染资源路径,加载所述至少一个渲染资源路径指向的渲染资源;
子应用启动单元,被配置为执行调用已加载的至少一个渲染资源,启动所述子应用。
8.一种子应用启动装置,其特征在于,所述子应用启动装置包括:
资源表路径获取单元,被配置为执行响应于接收到终端发送的资源表获取请求,获取所述资源表获取请求所携带的资源表路径;
第二资源表获取单元,被配置为执行获取所述资源表路径指向的资源表;
资源表返回单元,被配置为执行向所述终端返回获取到的资源表,所述资源表包括子应用的渲染资源对应的渲染资源路径,所述渲染资源路径指向的渲染资源用于所述终端启动所述子应用。
9.一种终端,其特征在于,所述终端包括:
一个或多个处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至4中任一项所述的子应用启动方法。
10.一种服务器,其特征在于,所述服务器包括:
一个或多个处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求5至6中任一项所述的子应用启动方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110512997.9A CN113220366A (zh) | 2021-05-11 | 2021-05-11 | 子应用启动方法、装置、终端及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110512997.9A CN113220366A (zh) | 2021-05-11 | 2021-05-11 | 子应用启动方法、装置、终端及服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113220366A true CN113220366A (zh) | 2021-08-06 |
Family
ID=77094756
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110512997.9A Pending CN113220366A (zh) | 2021-05-11 | 2021-05-11 | 子应用启动方法、装置、终端及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113220366A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114003308A (zh) * | 2021-10-28 | 2022-02-01 | 上海米哈游璃月科技有限公司 | 项目文本资源的加载方法、装置、电子设备及存储介质 |
CN114238074A (zh) * | 2021-11-18 | 2022-03-25 | 北京达佳互联信息技术有限公司 | 一种子应用的调试方法、装置、设备及存储介质 |
CN117149468A (zh) * | 2023-10-30 | 2023-12-01 | 建信金融科技有限责任公司 | 一种资源访问方法、装置、电子设备及计算机可读介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102185900A (zh) * | 2011-04-18 | 2011-09-14 | 北京新媒传信科技有限公司 | 一种应用服务平台系统和一种开发应用服务的方法 |
US20160098502A1 (en) * | 2014-10-03 | 2016-04-07 | Schlumberger Technology Corporation | Multiphase flow simulator sub-modeling |
CN106484383A (zh) * | 2015-08-31 | 2017-03-08 | 阿里巴巴集团控股有限公司 | 页面渲染方法、装置及设备 |
CN106662986A (zh) * | 2014-06-26 | 2017-05-10 | 谷歌公司 | 优化的浏览器渲染过程 |
CN107885540A (zh) * | 2016-09-28 | 2018-04-06 | 腾讯科技(深圳)有限公司 | 一种加载应用程序静态资源的方法、装置及终端 |
CN108932332A (zh) * | 2018-07-05 | 2018-12-04 | 麒麟合盛网络技术股份有限公司 | 静态资源的加载方法及装置 |
-
2021
- 2021-05-11 CN CN202110512997.9A patent/CN113220366A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102185900A (zh) * | 2011-04-18 | 2011-09-14 | 北京新媒传信科技有限公司 | 一种应用服务平台系统和一种开发应用服务的方法 |
CN106662986A (zh) * | 2014-06-26 | 2017-05-10 | 谷歌公司 | 优化的浏览器渲染过程 |
US20160098502A1 (en) * | 2014-10-03 | 2016-04-07 | Schlumberger Technology Corporation | Multiphase flow simulator sub-modeling |
CN106484383A (zh) * | 2015-08-31 | 2017-03-08 | 阿里巴巴集团控股有限公司 | 页面渲染方法、装置及设备 |
CN107885540A (zh) * | 2016-09-28 | 2018-04-06 | 腾讯科技(深圳)有限公司 | 一种加载应用程序静态资源的方法、装置及终端 |
CN108932332A (zh) * | 2018-07-05 | 2018-12-04 | 麒麟合盛网络技术股份有限公司 | 静态资源的加载方法及装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114003308A (zh) * | 2021-10-28 | 2022-02-01 | 上海米哈游璃月科技有限公司 | 项目文本资源的加载方法、装置、电子设备及存储介质 |
CN114238074A (zh) * | 2021-11-18 | 2022-03-25 | 北京达佳互联信息技术有限公司 | 一种子应用的调试方法、装置、设备及存储介质 |
CN117149468A (zh) * | 2023-10-30 | 2023-12-01 | 建信金融科技有限责任公司 | 一种资源访问方法、装置、电子设备及计算机可读介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113220366A (zh) | 子应用启动方法、装置、终端及服务器 | |
CN111340482B (zh) | 冲突检测方法、装置、节点设备及存储介质 | |
CN112181576A (zh) | 表单处理方法、装置、终端及存储介质 | |
WO2021244267A1 (zh) | 应用程序的移植方法、装置、设备及介质 | |
CN113190362B (zh) | 服务调用方法、装置、计算机设备及存储介质 | |
CN109040339B (zh) | 基于ajax的跨域请求处理方法、装置及设备 | |
CN111159604A (zh) | 图片资源加载方法及装置 | |
CN113138771B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN111125602B (zh) | 页面构建方法、装置、设备和存储介质 | |
CN112257006A (zh) | 页面信息的配置方法、装置、设备及计算机可读存储介质 | |
CN109726379B (zh) | 内容项编辑方法、装置、电子设备及存储介质 | |
CN110995842A (zh) | 业务数据下载方法、装置、设备及存储介质 | |
CN113467663B (zh) | 界面配置方法、装置、计算机设备及介质 | |
US10643252B2 (en) | Banner display method of electronic device and electronic device thereof | |
CN113835571A (zh) | 一种终端设备、信息展示方法和存储介质 | |
CN110569064B (zh) | 接口标识生成方法、装置、设备及存储介质 | |
CN110505253B (zh) | 一种请求网页信息的方法、装置及存储介质 | |
CN110321332B (zh) | 多媒体文件恢复方法、装置、终端和存储介质 | |
CN113642010B (zh) | 一种获取扩展存储设备数据的方法及移动终端 | |
CN114238074A (zh) | 一种子应用的调试方法、装置、设备及存储介质 | |
CN110390065B (zh) | 网页获取方法、装置及系统 | |
CN114327453A (zh) | 页面显示方法、装置、设备及存储介质 | |
CN112052419A (zh) | 图片加载方法、装置、设备及可读存储介质 | |
CN112784201A (zh) | 网页显示方法、装置、终端及存储介质 | |
CN114385939A (zh) | 应用显示方法、应用显示系统、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |