生成及加载文件包的方法、装置、介质和计算设备制造方法及图纸

技术编号:33887372 阅读:25 留言:0更新日期:2022-06-22 17:20
本公开的实施方式提供了一种生成及加载文件包的方法、装置、介质和计算设备。所述生成文件包的方法包括:确定多个模块文件之间的依赖关系,所述多个模块文件包括至少一个中间文件和依赖于所述中间文件的一个入口文件,各个模块文件用于记录应用程序的代码;响应于所述中间文件包括按照动态方式导入所述入口文件的动态中间文件,根据所述依赖关系生成所述入口文件对应的第一文件包和所述动态中间文件对应的第二文件包,其中,所述第二文件包被所述应用程序的客户端用于在所述第一文件包之后加载。该方法可以实现文件包的自动化拆分和打包,具有较高的文件包生成速度,并且可以提升客户端加载文件包的效率,缩短用户的等待时长,提升用户体验。提升用户体验。提升用户体验。

【技术实现步骤摘要】
生成及加载文件包的方法、装置、介质和计算设备


[0001]本公开的实施方式涉及计算机软件
,更具体地,本公开的实施方式涉及一种生成及加载文件包的方法、装置、介质和计算设备。

技术介绍

[0002]本部分旨在为本公开的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
[0003]在应用程序在发布之前,通常需要将记录有程序代码的模块(Module)文件打包为文件包(Bundle),以便客户端下载和执行。随着应用程序的代码量逐渐增长,若仍然将应用程序的全部模块文件打包为一个体积较大的文件包,将会导致文件的加载和执行时间显著增加,从而导致客户端性能恶化。为此,可以通过拆分打包的方式将应用程序的全部模块文件打包成多个文件包,以便客户端分别下载。
[0004]为实现拆分打包,现阶段通常由应用程序的开发人员在编写程序代码时设置多个入口文件,并指定各个入口文件分别对应的模块文件,实现对模块文件的拆分;进而,对各个入口文件及其分别对应的模块文件进行打包,从而得到分别对应于各个入口文件的文件包。

技术实现思路

[0005]但是,相关技术中的上述拆包方案需要开发人员手动设置多个入口文件,在应用程序的代码发生变更的情况下,还需要注意手动更新相应的入口文件,因此难以实现应用程序的快速更新。而且在生成文件包的过程中,任一入口文件及其对应的模块文件需要统一经过解析(Resolution)、转换(Transformation)和序列化(Serialization)的完整打包过程,才能够生成相应的文件包,而对于多个入口文件及其分别对应的模块文件,就需要分别经过上述完整打包过程才能够生成应用程序的多个文件包,因此拆分和打包的整体效率较低。
[0006]另外,通过该方式得到的多个文件包分别对应于不同的入口文件,客户端需要下载并加载全部文件包才能够向用户展示相应的页面内容,加载效率较低导致内容展示耗时较长,影响用户体验。
[0007]为此,非常需要一种改进的生成及加载文件包的方法,以提升文件包的生成及加载效率。
[0008]在本上下文中,本公开的实施方式期望提供一种生成及加载文件包的方法、装置、介质和计算设备。
[0009]在本公开实施方式的第一方面中,提供了一种生成文件包的方法,所述方法包括:
[0010]确定多个模块文件之间的依赖关系,所述多个模块文件包括至少一个中间文件和依赖于所述中间文件的一个入口文件,各个模块文件用于记录应用程序的代码;
[0011]响应于所述中间文件包括按照动态方式导入所述入口文件的动态中间文件,根据
所述依赖关系生成所述入口文件对应的第一文件包和所述动态中间文件对应的第二文件包,其中,所述第二文件包被所述应用程序的客户端用于在所述第一文件包之后加载。
[0012]在本公开实施方式的第二方面中,提供了一种加载文件包的方法,所述方法包括:
[0013]响应于在第一页面中检测到的文件包获取指令获取第二文件包,所述第一页面由应用程序的客户端加载第一文件包所产生;
[0014]加载所述第二文件包,所述第一文件包和所述第二文件包被响应于预设条件并根据多个模块文件之间的依赖关系而生成,其中,所述多个模块文件包括至少一个中间文件和依赖于所述中间文件的一个入口文件,所述预设条件包括:所述中间文件包括动态中间文件,所述动态中间文件按照动态方式导入所述入口文件,各个模块文件用于记录所述应用程序的代码。
[0015]在本公开实施方式的第三方面中,提供了一种生成文件包的装置,所述方法包括:
[0016]依赖确定模块,用于确定多个模块文件之间的依赖关系,所述多个模块文件包括至少一个中间文件和依赖于所述中间文件的一个入口文件,各个模块文件用于记录应用程序的代码;
[0017]文件包生成模块,用于响应于所述中间文件包括按照动态方式导入所述入口文件的动态中间文件,根据所述依赖关系生成所述入口文件对应的第一文件包和所述动态中间文件对应的第二文件包,其中,所述第二文件包被所述应用程序的客户端用于在所述第一文件包之后加载。
[0018]在本公开实施方式的第四方面中,提供了一种加载文件包的装置,所述方法包括:
[0019]文件包获取模块,用于响应于在第一页面中检测到的文件包获取指令获取第二文件包,所述第一页面由应用程序的客户端加载第一文件包所产生;
[0020]文件包加载模块,用于加载所述第二文件包,所述第一文件包和所述第二文件包被响应于预设条件并根据多个模块文件之间的依赖关系而生成,其中,所述多个模块文件包括至少一个中间文件和依赖于所述中间文件的一个入口文件,所述预设条件包括:所述中间文件包括动态中间文件,所述动态中间文件按照动态方式导入所述入口文件,各个模块文件用于记录所述应用程序的代码。
[0021]在本公开实施方式的第五方面中,提供了一种介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面中任一实施例所述的生成文件包的方法或第二方面中任一实施例所述的加载文件包的方法。
[0022]在本公开实施方式的第六方面中,提供了一种计算设备,包括:
[0023]处理器;
[0024]用于存储处理器可执行指令的存储器;
[0025]其中,所述处理器通过运行所述可执行指令以实现上述第一方面中任一实施例所述的生成文件包的方法或第二方面中任一实施例所述的加载文件包的方法。
[0026]根据本公开实施方式的生成文件包的方法,对于包括至少一个中间文件和依赖于所述中间文件的一个入口文件在内的多个模块文件,文件包的生成设备可以确定多个模块文件之间的依赖关系,然后响应于中间文件包括按照动态方式导入入口文件的动态中间文件,根据上述依赖关系生成入口文件对应的第一文件包和动态中间文件对应的第二文件包,其中,所述第二文件包可以被所述应用程序的客户端用于在所述第一文件包之后加载。
根据本公开实施方式的加载文件包的方法,应用程序的客户端可以加载第一文件包产生第一页面,进而响应于在所述第一页面中检测到的文件包获取指令,获取并加载第二文件包。
[0027]采用这样的方式,应用程序的全部模块文件中仅包含一个入口文件,该文件被用于生成相应的第一文件包,而被导入该入口文件的动态中间文件则被用于生成第二文件包。可见,因为其他模块文件均被导入同一个入口文件,所以开发人员无需逐一手动变更入口文件,只需更新相应模块文件中的代码即可实现应用程序的快速更新。而且,因为仅生成对应于入口文件的一个第一文件包和对应于动态中间文件的第二文件包,所以上述各个文件包的仅需要经过解析、转换和序列化的一个完整过程即可实现,显著提升了文件包的生成速度。
[0028]另外,对于通过该方式得到的多个文件包,客户端可以首先加载入口文件展示第一页面,进一步地,在该页面中检测到文件包获取指令的情况下再获取并加载相应的第二文件包,而无需一次性加载全部文件包,实现了对第二文件包的按需加载,有助于避免对第二文本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种生成文件包的方法,包括:确定多个模块文件之间的依赖关系,所述多个模块文件包括至少一个中间文件和依赖于所述中间文件的一个入口文件,各个模块文件用于记录应用程序的代码;响应于所述中间文件包括按照动态方式导入所述入口文件的动态中间文件,根据所述依赖关系生成所述入口文件对应的第一文件包和所述动态中间文件对应的第二文件包,其中,所述第二文件包被所述应用程序的客户端用于在所述第一文件包之后加载。2.根据权利要求1所述的方法,所述确定多个模块文件之间的依赖关系,包括:对所述多个模块文件记录的所述代码进行依赖分析,以生成所述多个模块文件对应的依赖树;根据所述依赖树确定所述多个模块文件之间的依赖关系。3.根据权利要求1所述的方法,任一中间文件为动态中间文件,包括:所述任一中间文件中记录有预设动态标记;或者,所述任一中间文件中记录的代码被按照动态导入对应的语法规则编写。4.根据权利要求1所述的方法,所述根据所述依赖关系生成所述入口文件对应的第一文件包和所述动态中间文件对应的第二文件包,包括:生成各个所述动态中间文件分别对应的第二文件包;基于各个第二文件包生成所述入口文件对应的第一文件包。5.根据权利要求4所述的方法,所述基于各个第二文件包生成所述入口文件对应的第一文件包,包括:确定各个第二文件包的第二存储地址,所述第二存储地址用于存储发布后的相应的所述第二文件包;将确定出的各个所述第二存储地址记录在所述第一文件包中。6.一种加载文件包的方法,包括:响应于在第一页面中检测到的文件包获取指令获取第二文件包,所述第一页面由应用程序的客户端加载第一文件包所产生;加载所述第二文件包,所述第一文件包和所述第二文件包被响应于预设条件并根据多个模块文件之间的依赖关系而生成,其中...

【专利技术属性】
技术研发人员:黄喆章伟东陆俊峰
申请(专利权)人:杭州网易云音乐科技有限公司
类型:发明
国别省市:

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

1