CN110795143B - 用于处理功能模块的方法、装置、计算设备以及介质 - Google Patents

用于处理功能模块的方法、装置、计算设备以及介质 Download PDF

Info

Publication number
CN110795143B
CN110795143B CN201911011229.4A CN201911011229A CN110795143B CN 110795143 B CN110795143 B CN 110795143B CN 201911011229 A CN201911011229 A CN 201911011229A CN 110795143 B CN110795143 B CN 110795143B
Authority
CN
China
Prior art keywords
functional modules
modules
module
groups
target
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.)
Active
Application number
CN201911011229.4A
Other languages
English (en)
Other versions
CN110795143A (zh
Inventor
高见
罗涛
赵海强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN201911011229.4A priority Critical patent/CN110795143B/zh
Publication of CN110795143A publication Critical patent/CN110795143A/zh
Application granted granted Critical
Publication of CN110795143B publication Critical patent/CN110795143B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开提供了一种由计算设备执行的用于处理功能模块的方法,包括:获取N个功能模块,N个功能模块之间彼此关联,N个功能模块用于实现目标应用的相关功能,N为大于等于2的整数;基于拆分指令,将N个功能模块拆分为M组功能模块,M为大于等于2的整数;以及分别打包M组功能模块,得到M个目标文件,其中,M个目标文件中的每个目标文件能够被客户端加载以执行目标应用的相关功能。本公开还提供了一种用于处理功能模块的装置、计算设备以及计算机可读存储介质。

Description

用于处理功能模块的方法、装置、计算设备以及介质
技术领域
本公开涉及计算机技术领域,特别是涉及一种由计算设备执行的用于处理功能模块的方法、一种用于处理功能模块的装置、一种计算设备以及一种计算机可读存储介质。
背景技术
在项目开发过程中,通常由开发人员开发出多个功能模块,并将多个功能模块打包为目标文件(例如bundle文件)和静态资源文件,以将bundle文件和静态资源文件提供给客户端加载。其中,将项目的所有功能模块进行提取、过滤和整合等操作,最终输出bundle文件代码和静态资源文件的过程称为打包。其中,功能模块例如包括js(javascript)文件、json(javascript object notation)文件和图片等。
在实现本公开构思的过程中,发明人发现现有技术中至少存在如下问题。相关技术的打包方式,通常将所有功能模块打包成一个bundle文件,其中囊括了所有功能模块的代码。但在实际应用中,随着业务规模的扩大和逻辑复杂度的提升,bundle文件的数据量过大,导致客户端加载bundle文件的效果较差。
发明内容
本公开的一个方面提供了一种由计算设备执行的用于处理功能模块的方法,包括:获取N个功能模块,所述N个功能模块之间彼此关联,所述N个功能模块用于实现目标应用的相关功能,N为大于等于2的整数,基于拆分指令,将所述N个功能模块拆分为M组功能模块,M为大于等于2的整数,分别打包所述M组功能模块,得到M个目标文件,其中,所述M个目标文件中的每个目标文件能够被客户端加载以执行所述目标应用的相关功能。
根据本公开实施例,上述M组功能模块包括一组基本功能模块和M-1组业务功能模块,所述M-1组业务功能模块中的各组业务功能模块用于执行不同业务功能。
根据本公开实施例,上述方法还包括:接收选择操作,所述选择操作用于从N个功能模块中选择M个目标功能模块,响应于所述选择操作,生成所述拆分指令,以便基于所述拆分指令将所述N个功能模块拆分为M组功能模块,其中,所述M组功能模块中的每一组功能模块均包括一个所述目标功能模块。
根据本公开实施例,上述N个功能模块组成组成具有L层级的树结构,每一层级包括至少一个功能模块,L为大于等于2的整数。所述基于拆分指令,将所述N个功能模块拆分为M组功能模块包括:确定所述M个目标功能模块中的当前目标功能模块,以所述当前目标功能模块为起点,向低层级的方向遍历所述树结构中的功能模块,直至遇到另一目标功能模块则停止,并将所遍历的K个功能模块作为M组功能模块中的一组功能模块,所述K个功能模块中包括所述当前目标功能模块,K为大于等于1的整数。
根据本公开实施例,上述分别打包所述M组功能模块,得到M个目标文件包括:确定所述M组功能模块中的当前组功能模块,其中,所述当前组功能模块包括m1个功能模块,m1为大于等于2的整数,对所述m1个功能模块进行去重处理,得到m2个功能模块,m2为小于等于m1的正整数,处理所述m2个功能模块,得到m2个第一对象,打包所述m2个第一对象,得到一个所述目标文件。
根据本公开实施例,上述方法还包括:确定所述m1个功能模块之间的关联关系,如果所述关联关系表征所述m1个功能模块中的任意两个模块的关联次数大于1次,则处理所述两个模块之间的关联关系,得到m3个第二对象,m3为大于等于1的整数。
根据本公开实施例,上述打包所述m2个对象,得到一个所述目标文件包括:打包所述m2个第一对象和所述m3个第二对象,得到一个所述目标文件。
本公开的另一个方面提供了一种用于处理功能模块的装置,包括:获取模块、拆分模块以及打包模块。其中,获取模块,获取N个功能模块,所述N个功能模块之间彼此关联,所述N个功能模块用于实现目标应用的相关功能,N为大于等于2的整数。拆分模块,基于拆分指令,将所述N个功能模块拆分为M组功能模块,M为大于等于2的整数。打包模块,分别打包所述M组功能模块,得到M个目标文件,其中,所述M个目标文件中的每个目标文件能够被客户端加载以执行所述目标应用的相关功能。
根据本公开实施例,上述M组功能模块包括一组基本功能模块和M-1组业务功能模块,所述M-1组业务功能模块中的各组业务功能模块用于执行不同业务功能。
根据本公开实施例,上述装置还包括:接收模块以及生成模块。其中,接收模块,接收选择操作,所述选择操作用于从N个功能模块中选择M个目标功能模块。生成模块,响应于所述选择操作,生成所述拆分指令,以便基于所述拆分指令将所述N个功能模块拆分为M组功能模块,其中,所述M组功能模块中的每一组功能模块均包括一个所述目标功能模块。
根据本公开实施例,上述N个功能模块组成组成具有L层级的树结构,每一层级包括至少一个功能模块,L为大于等于2的整数。所述基于拆分指令,将所述N个功能模块拆分为M组功能模块包括:确定所述M个目标功能模块中的当前目标功能模块,以所述当前目标功能模块为起点,向低层级的方向遍历所述树结构中的功能模块,直至遇到另一目标功能模块则停止,并将所遍历的K个功能模块作为M组功能模块中的一组功能模块,所述K个功能模块中包括所述当前目标功能模块,K为大于等于1的整数。
根据本公开实施例,上述打包模块包括:确定子模块、去重子模块、处理子模块以及打包子模块。其中,确定子模块,确定所述M组功能模块中的当前组功能模块,其中,所述当前组功能模块包括m1个功能模块,m1为大于等于2的整数。去重子模块,对所述m1个功能模块进行去重处理,得到m2个功能模块,m2为小于等于m1的正整数。处理子模块,处理所述m2个功能模块,得到m2个第一对象。打包子模块,打包所述m2个第一对象,得到一个所述目标文件。
根据本公开实施例,上述装置还包括:确定模块以及处理模块。其中,确定模块,确定所述m1个功能模块之间的关联关系。处理模块,如果所述关联关系表征所述m1个功能模块中的任意两个模块的关联次数大于1次,则处理所述两个模块之间的关联关系,得到m3个第二对象,m3为大于等于1的整数。
根据本公开实施例,上述打包所述m2个对象,得到一个所述目标文件包括:打包所述m2个第一对象和所述m3个第二对象,得到一个所述目标文件。
本公开的另一方面提供了一种计算设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上所述的方法。
本公开的另一方面提供了一种非易失性可读存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
本公开的另一方面提供了一种计算机程序,所述计算机程序包括计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
附图说明
为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:
图1示意性示出了根据本公开实施例的用于处理功能模块的方法和用于处理功能模块的装置的系统架构;
图2示意性示出了根据本公开实施例的用于打包功能模块的方法和用于打包功能模块的装置的应用场景;
图3示意性示出了根据本公开实施例的由计算设备执行的用于处理功能模块的方法的流程图;
图4示意性示出了根据本公开另一实施例的由计算设备执行的用于处理功能模块的方法的流程图;
图5示意性示出了根据本公开实施例的拆分功能模块的示意图;
图6示意性示出了根据本公开实施例的打包功能模块的流程图;
图7示意性示出了根据本公开实施例的用于处理功能模块的装置的框图;
图8示意性示出了根据本公开另一实施例的用于处理功能模块的装置的框图;
图9示意性示出了根据本公开实施例的打包模块的框图;以及
图10示意性示出了根据本公开实施例的用于实现处理功能模块的计算机系统的方框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程控制装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。
因此,本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。在本公开的上下文中,计算机可读介质可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,计算机可读介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。计算机可读介质的具体示例包括:磁存储装置,如磁带或硬盘(HDD);光存储装置,如光盘(CD-ROM);存储器,如随机存取存储器(RAM)或闪存;和/或有线/无线通信链路。
本公开的实施例提供了一种由计算设备执行的用于处理功能模块的方法,包括:首先获取N个功能模块,N个功能模块之间彼此关联,N个功能模块用于实现目标应用的相关功能,N为大于等于2的整数。然后,基于拆分指令,将N个功能模块拆分为M组功能模块,M为大于等于2的整数。最后,分别打包M组功能模块,得到M个目标文件,其中,M个目标文件中的每个目标文件能够被客户端加载以执行目标应用的相关功能。
图1示意性示出了根据本公开实施例的用于处理功能模块的方法和用于处理功能模块的装置的系统架构。需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图1所示,根据该实施例的系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对用户利用终端设备101、102、103所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。
需要说明的是,本公开实施例所提供的用于处理功能模块的方法一般可以由服务器105执行。相应地,本公开实施例所提供的用于处理功能模块的装置一般可以设置于服务器105中。本公开实施例所提供的用于处理功能模块的方法也可以由不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的用于处理功能模块的装置也可以设置于不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群中。
例如,本公开实施例的N个功能模块可以存储在终端设备101、102、103中,通过终端设备101、102、103将N个功能模块发送至服务器105中,服务器105可以基于拆分指令,将N个功能模块拆分为M组功能模块可,并分别打包M组功能模块,得到M个目标文件。另外,N个功能模块还可以由服务器105接收并直接存储在服务器105中,由服务器105直接基于拆分指令,将N个功能模块拆分为M组功能模块可,并分别打包M组功能模块,得到M个目标文件。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
图2示意性示出了根据本公开实施例的用于打包功能模块的方法和用于打包功能模块的装置的应用场景。
如图2所示,该应用场景200例如包括多个功能模块210,该功能模块例如可以是程序代码。例如,开发人员在开发目标应用时,可以通过开发出多个功能模块210,并将该多个功能模块210进行打包以用于实现目标应用的相关功能。例如,客户端220可以加载打包的功能模块,以便客户端220执行打包的功能模块来实现目标应用的相关功能。
在本公开实施例中,如果将多个功能模块210打包成一个目标文件(bundle文件),会导致目标文件的数据量过大,使得客户端220在加载目标文件时,加载速度慢,加载效果差。
因此,本公开实施例通过将多个功能模块210拆分成多组功能模块,并分别打包每组功能模块得到多个目标文件,每个目标文件的数据量较小。其中,客户端220可以根据实际需求加载多个目标文件中的一个或多个,以此提高了客户端220的加载速度和加载效果。
下面结合图1的系统架构和图2的应用场景,参考图3~图6来描述根据本公开示例性实施方式的用于处理功能模块的方法。需要注意的是,上述系统架构和应用场景仅是为了便于理解本公开的精神和原理而示出,本公开的实施方式在此方面不受任何限制。相反,本公开的实施方式可以应用于适用的任何场景。
图3示意性示出了根据本公开实施例的由计算设备执行的用于处理功能模块的方法的流程图。
如图3所示,该方法可以包括操作S310~S330。
在操作S310,获取N个功能模块,N个功能模块之间彼此关联,N个功能模块用于实现目标应用的相关功能,N为大于等于2的整数。
根据本公开实施例,N个功能模块例如是目标应用的程序代码,每个不同的功能模块例如能够用于实现目标应用的不同功能。其中,N个功能模块之间彼此关联例如包括一些功能模块的实现依赖于其他功能模块,例如功能模块1和功能模块2关联包括功能模块1在实现过程中引用功能模块2。
在操作S320,基于拆分指令,将N个功能模块拆分为M组功能模块,M为大于等于2的整数。
根据本公开实施例,拆分指令例如可以用于指示将N个功能模块拆分为M组功能模块。本公开实施例根据拆分指令将N个功能模块拆分为M组功能模块之后,所得到的M组功能模块例如包括一组基本功能模块和M-1组业务功能模块,其中,M-1组业务功能模块中的各组业务功能模块例如可以用于执行不同的业务功能。
其中,一组基本功能模块中例如包括基础js(javascript)库和开发所依赖的框架代码信息。M-1业务功能模块中的每组例如均包括目标应用的具体业务逻辑,其中不同的业务功能模块例如能够实现目标应用的不同功能。
在操作S330,分别打包M组功能模块,得到M个目标文件,其中,M个目标文件中的每个目标文件能够被客户端加载以执行目标应用的相关功能。
根据本公开实施例,例如可以将一组基本功能模块打包形成一个基础目标文件(基础bundle文件),以及可以将M-1组业务功能模块打包形成M-1个业务目标文件(业务bundle文件)。其中,操作S330的实现过程例如可以参见图6所示。
本公开实施例通过将多个功能模块拆分成多组功能模块,并分别打包每组功能模块以得到多个目标文件,其中,所打包形成的多个目标文件中每个目标文件的数据量较小,便于客户端加载。例如,客户端可以根据实际需求加载多个目标文件中的一个或多个。例如,在客户端已经安装了低版本的目标应用时,如果开发人员对低版本的目标应用进行修改后生成高版本的目标应用,则可以通过将高版本目标应用的多个功能模块进行拆分打包,以便形成多个bundle文件。其中,相对于低版本目标应用,更新后的高版本目标应用对应的多个bundle文件中例如仅有部分bundle文件更新,客户端可以仅加载更新的部分bundle文件,而不需要加载所有的bundle文件。因此,通过本公开实施例的技术方案,提高了客户端的加载速度和加载效果。
另外,本公开实施例的技术方案通过将多个功能模块拆分成多个数据量较小的bundle文件,并将公共程序代码存放于一个基础bundle文件中,基础bundle文件中例如包括基础js(javascript)库和开发所依赖的框架代码信息。业务bundle文件可以仅关心具体业务逻辑,并通过引用的方式依赖基础bundle文件,实现每个bundle文件的职责更加明确,引用关系更为简洁高效。另外,Bundle文件拆分之后,不仅可提高客户端的加载效率,也为更精细化的差量更新、热更新和按需加载等性能提升方案打下了基础。
图4示意性示出了根据本公开另一实施例的由计算设备执行的用于处理功能模块的方法的流程图。
图5示意性示出了根据本公开实施例的拆分功能模块的示意图。
结合图4和图5所示,该方法可以包括操作S310~S330以及操作S410~S420。其中,操作S310~S330与上参考图3描述的操作相同或类似,在此不再赘述。
如图5所示,N个功能模块例如组成具有L层级的树结构,L为大于等于2的整数。该树结构中的每一层级例如包括至少一个功能模块,该树结构例如可以是二叉树。N个功能模块中的每个功能模块例如可以是树结构的节点。
在操作S410,接收选择操作,选择操作用于从N个功能模块中选择M个目标功能模块。
例如,该选择操作可以是用户所执行的操作,用于从N个功能模块中选择M个目标功能模块。该M个目标功能模块例如可以是图5所示的第1层级中的模块1和第L-1层级中的模块7。
在操作S420,响应于选择操作,生成拆分指令,以便基于拆分指令将N个功能模块拆分为M组功能模块,其中,M组功能模块中的每一组功能模块均包括一个目标功能模块。
例如,根据用户的选择操作,确定第1层级中的模块1和第L-1层级中的模块7作为目标功能模块,并将组成树结构中的多个功能模块进行拆分,例如将多个功能模块拆分成两组功能模块。例如,如图5所示虚线处,将该二叉树从模块5和模块7之间进行拆分。其中,拆分后得到的两组功能模块中的第一组功能模块例如包括第1层级中的目标功能模块1,第二组功能模块例如包括第L-1层级中的目标功能模块7。
具体地,例如可以首先确定M个目标功能模块中的当前目标功能模块。例如当确定第1层级中的目标功能模块1作为当前功能模块时。由于该当前功能模块1例如为树结构的第1层级,因此,可以以当前目标功能模块1为起点,向低层级的方向(例如第2层级到第L层级的方向)遍历树结构中的功能模块,直至遇到另一目标功能模块则停止,该另一目标功能模块例如为第L-1层级中的模块7。并将所遍历的K个功能模块作为M组功能模块中的一组功能模块。其中,K个功能模块中包括当前目标功能模块,K为大于等于1的整数。其中,该K个功能模块例如不包括模块7,换言之,该K个功能模块包括两个模块1、两个模块2、模块3、模块4、模块5、模块6。该K个功能模块为M组功能模块中的一组功能模块。
如果确定当前目标功能模块为第L-1层级中的模块7时,可以以模块7为起点向低层级方向遍历树结构,如果在遍历过程中遇到其他目标功能模块之前已经遍历完树结构,则停止继续遍历,并将所遍历的模块7、模块8、模块9作为M组功能模块中的一组功能模块。
图6示意性示出了根据本公开实施例的打包功能模块的流程图。
如图6所示,操作S330例如包括操作S331~S334。
在操作S331,确定M组功能模块中的当前组功能模块,其中,当前组功能模块包括m1个功能模块,m1为大于等于2的整数。
例如,图5示例性示出了两组功能模块,例如确定第一组功能模块为当前功能模块,该当前组功能模块例如包括两个模块1、两个模块2、模块3、模块4、模块5、模块6,即,m1例如等于8。
在操作S332,对m1个功能模块进行去重处理,得到m2个功能模块,m2为小于等于m1的正整数。例如,首先确定m1个功能模块中是否具有重复模块,如果具有重复模块,则可以进行去重处理。例如,m1个功能模块中例如包括重复的模块,例如包括两个模块1、两个模块2。可以进行去重处理,得到的m2个功能模块例如包括一个模块1、一个模块2、模块3、模块4、模块5、模块6,即m2例如等于6。
在操作S333,处理m2个功能模块,得到m2个第一对象。例如,分别将m2个功能模块实例化得到m2个第一对象。其中,实例化例如指在面向对象的编程中,把用类创建对象的过程称为实例化,是将一个抽象的概率类,具体到该类实物的过程。
在操作S334,打包m2个第一对象,得到一个目标文件。即,将m2个第一对象打包形成一个bundle文件。例如,可以将m2个第一对象串联起来,进行序列化输出得到一个bundle文件。
或者,如图5所示,如果确定的第二组功能模块为当前功能模块,该当前功能模块例如包括模块7、模块8、模块9。其中,由于该当前功能模块未包含重复模块,因此,可以分别处理模块7、模块8、模块9,得到三个第一对象,并将该三个第一对象串联起来,进行序列化输出得到一个bundle文件。
根据本公开实施例,可以将模块进行实例化处理得到第一对象,还可以将模块之间的关联关系进行实例化处理得到第二对象。
例如,可以首先确定m1个功能模块之间的关联关系,如果关联关系表征m1个功能模块中的任意两个模块的关联次数大于1次,则处理两个模块之间的关联关系,得到m3个第二对象,m3为大于等于1的整数。
如图5所示,模块1和模块2之间具有关联关系,并且关联次数为两次,则可以将该关联关系进行实例化处理,得到一个第二对象,以便避免将重复的关联关系进行实例化处理。针对一组功能模块,可以打包该组功能模块中所有的第一对象和所有的第二对象,得到一个目标文件。即,将M组功能模块分别打包形成M个bundle文件,降低了每个bundle文件的数据量大小,便于客户端加载每个bundle文件。
如图5所示,例如以第1层级中的模块1为资源入口,可以将第1层级中的模块1的依赖拆分成[[depNames_a,depNames_b],[dependencies_a,dependencies_b]]形式的数组,depNames和dependencies是一一对应的关系,depNames为模块名称,例如depNames_a为“2”,depNames_b为“3”,dependecies为实例化后的对象集合,例如dependencies_a例如为空,表示第2层级中的模块2未引用其他模块,dependencies_b例如为第3层级中的模块1和第3层级中的模块4,表示第2层级中的模块3引用第3层级中的模块1和第3层级中的模块4。然后,再遍历[dependencies_a,dependencies_b]数组,将每个元素依次作为新的资源入口遍历树结构,例如依次将dependencies_a中的模块1和模块4作为资源入口继续向树结构的低层级方向遍历,每次以新的资源入口遍历树结构都会生成一个数组,可以将所生成的数组保存到一个Map中。其中,每次保存之前都可以首先检查Map中是否已存在该数组,如果存在则不再保存该数组,以达到去重的目的,也便于业务人员根据Map中所保存的信息确定模块以及模块之间的关联关系。
可以理解,本公开实施例通过将多个功能模块拆分成多组功能模块,并分别打包每组功能模块得到多个目标文件,所得到的多个目标文件中每个目标文件的数据量较小,便于客户端加载。即,Bundle拆分之后,不仅可提高客户端的加载效率,也为更精细化的差量更新、热更新和按需加载等性能提升方案打下了基础。
图7示意性示出了根据本公开实施例的用于处理功能模块的装置的框图。
如图7所示,用于处理功能模块的装置700例如包括获取模块710、拆分模块720以及打包模块730。
获取模块710可以用于获取N个功能模块,N个功能模块之间彼此关联,N个功能模块用于实现目标应用的相关功能,N为大于等于2的整数。根据本公开实施例,获取模块710例如可以执行上文参考图3描述的操作S310,在此不再赘述。
拆分模块720可以用于基于拆分指令,将N个功能模块拆分为M组功能模块,M为大于等于2的整数。根据本公开实施例,拆分模块720例如可以执行上文参考图3描述的操作S320,在此不再赘述。
打包模块730可以用于分别打包M组功能模块,得到M个目标文件,其中,M个目标文件中的每个目标文件能够被客户端加载以执行目标应用的相关功能。根据本公开实施例,打包模块730例如可以执行上文参考图3描述的操作S330,在此不再赘述。
根据本公开实施例,M组功能模块包括一组基本功能模块和M-1组业务功能模块,M-1组业务功能模块中的各组业务功能模块用于执行不同业务功能。
图8示意性示出了根据本公开另一实施例的用于处理功能模块的装置的框图。
如图8所示,用于处理功能模块的装置800例如包括获取模块710、拆分模块720、打包模块730、接收模块810以及生成模块820。其中,获取模块710、拆分模块720以及打包模块730与上参考图7描述的模块相同或类似,在此不再赘述。
接收模块810可以用于接收选择操作,选择操作用于从N个功能模块中选择M个目标功能模块。根据本公开实施例,接收模块810例如可以执行上文参考图4描述的操作S410,在此不再赘述。
生成模块820可以用于响应于选择操作,生成拆分指令,以便基于拆分指令将N个功能模块拆分为M组功能模块,其中,M组功能模块中的每一组功能模块均包括一个目标功能模块。根据本公开实施例,生成模块820例如可以执行上文参考图4描述的操作S420,在此不再赘述。
根据本公开实施例,N个功能模块组成组成具有L层级的树结构,每一层级包括至少一个功能模块,L为大于等于2的整数。基于拆分指令,将N个功能模块拆分为M组功能模块包括:确定M个目标功能模块中的当前目标功能模块,以当前目标功能模块为起点,向低层级的方向遍历树结构中的功能模块,直至遇到另一目标功能模块则停止,并将所遍历的K个功能模块作为M组功能模块中的一组功能模块,K个功能模块中包括当前目标功能模块,K为大于等于1的整数。
图9示意性示出了根据本公开实施例的打包模块的框图。
如图9所示,打包模块730例如包括确定子模块731、去重子模块732、处理子模块733以及打包子模块734。
确定子模块731可以用于确定M组功能模块中的当前组功能模块,其中,当前组功能模块包括m1个功能模块,m1为大于等于2的整数。根据本公开实施例,确定子模块731例如可以执行上文参考图6描述的操作S331,在此不再赘述。
去重子模块732可以用于对m1个功能模块进行去重处理,得到m2个功能模块,m2为小于等于m1的正整数。根据本公开实施例,去重子模块732例如可以执行上文参考图6描述的操作S332,在此不再赘述。
处理子模块733可以用于处理m2个功能模块,得到m2个第一对象。根据本公开实施例,处理子模块733例如可以执行上文参考图6描述的操作S333,在此不再赘述。
打包子模块734可以用于打包m2个第一对象,得到一个目标文件。根据本公开实施例,打包子模块734例如可以执行上文参考图6描述的操作S334,在此不再赘述。
根据本公开实施例,用于处理功能模块的装置还包括:确定模块以及处理模块。其中,确定模块可以用于确定m1个功能模块之间的关联关系。处理模块可以用于在如果关联关系表征m1个功能模块中的任意两个模块的关联次数大于1次,则处理两个模块之间的关联关系,得到m3个第二对象,m3为大于等于1的整数。
根据本公开实施例,打包m2个对象,得到一个目标文件包括:打包m2个第一对象和m3个第二对象,得到一个目标文件。
根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,获取模块710、拆分模块720、打包模块730、确定子模块731、去重子模块732、处理子模块733、打包子模块734、接收模块810以及生成模块820中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,获取模块710、拆分模块720、打包模块730、确定子模块731、去重子模块732、处理子模块733、打包子模块734、接收模块810以及生成模块820中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,获取模块710、拆分模块720、打包模块730、确定子模块731、去重子模块732、处理子模块733、打包子模块734、接收模块810以及生成模块820中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图10示意性示出了根据本公开实施例的用于实现处理功能模块的计算机系统的方框图。图10示出的计算机系统仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图10所示,计算机系统1000包括处理器1001、计算机可读存储介质1002。该系统1000可以执行根据本公开实施例的方法。
具体地,处理器1001例如可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器1001还可以包括用于缓存用途的板载存储器。处理器1001可以是用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
计算机可读存储介质1002,例如可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,可读存储介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。可读存储介质的具体示例包括:磁存储装置,如磁带或硬盘(HDD);光存储装置,如光盘(CD-ROM);存储器,如随机存取存储器(RAM)或闪存;和/或有线/无线通信链路。
计算机可读存储介质1002可以包括计算机程序1003,该计算机程序1003可以包括代码/计算机可执行指令,其在由处理器1001执行时使得处理器1001执行根据本公开实施例的方法或其任何变形。
计算机程序1003可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,计算机程序1003中的代码可以包括一个或多个程序模块,例如包括1003A、模块1003B、……。应当注意,模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被处理器1001执行时,使得处理器1001可以执行根据本公开实施例的方法或其任何变形。
根据本公开的实施例,获取模块710、拆分模块720、打包模块730、确定子模块731、去重子模块732、处理子模块733、打包子模块734、接收模块810以及生成模块820中的至少一个可以实现为参考图10描述的计算机程序模块,其在被处理器1001执行时,可以实现上面描述的相应操作。
本公开还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现上述方法。
根据本公开的实施例,计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线、光缆、射频信号等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
尽管已经参照本公开的特定示例性实施例示出并描述了本公开,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。

Claims (9)

1.一种由计算设备执行的用于处理功能模块的方法,包括:
获取N个功能模块,所述N个功能模块之间彼此关联,所述N个功能模块用于实现目标应用的相关功能,N为大于等于2的整数;
基于拆分指令,将所述N个功能模块拆分为M组功能模块,M为大于等于2的整数;以及
分别打包所述M组功能模块,得到M个目标文件,其中,所述M个目标文件中的每个目标文件能够被客户端加载以执行所述目标应用的相关功能;所述M组功能模块包括一组基本功能模块和M-1组业务功能模块,所述M-1组业务功能模块中的各组业务功能模块用于执行不同业务功能。
2.根据权利要求1所述的方法,还包括:
接收选择操作,所述选择操作用于从N个功能模块中选择M个目标功能模块;以及
响应于所述选择操作,生成所述拆分指令,以便基于所述拆分指令将所述N个功能模块拆分为M组功能模块,
其中,所述M组功能模块中的每一组功能模块均包括一个所述目标功能模块。
3.根据权利要求2所述的方法,其中,所述N个功能模块组成具有L层级的树结构,每一层级包括至少一个功能模块,L为大于等于2的整数;
所述基于拆分指令,将所述N个功能模块拆分为M组功能模块包括:
确定所述M个目标功能模块中的当前目标功能模块;以及
以所述当前目标功能模块为起点,向低层级的方向遍历所述树结构中的功能模块,直至遇到另一目标功能模块则停止,并将所遍历的K个功能模块作为M组功能模块中的一组功能模块,所述K个功能模块中包括所述当前目标功能模块,K为大于等于1的整数。
4.根据权利要求1所述的方法,其中,所述分别打包所述M组功能模块,得到M个目标文件包括:
确定所述M组功能模块中的当前组功能模块,其中,所述当前组功能模块包括m1个功能模块,m1为大于等于2的整数;
对所述m1个功能模块进行去重处理,得到m2个功能模块,m2为小于等于m1的正整数;
处理所述m2个功能模块,得到m2个第一对象;以及
打包所述m2个第一对象,得到一个所述目标文件。
5.根据权利要求4所述的方法,还包括:
确定所述m1个功能模块之间的关联关系;以及
如果所述关联关系表征所述m1个功能模块中的任意两个模块的关联次数大于1次,则处理所述两个模块之间的关联关系,得到m3个第二对象,m3为大于等于1的整数。
6.根据权利要求5所述的方法,其中,所述打包所述m2个第一对象,得到一个所述目标文件包括:
打包所述m2个第一对象和所述m3个第二对象,得到一个所述目标文件。
7.一种用于处理功能模块的装置,包括:
获取模块,获取N个功能模块,所述N个功能模块之间彼此关联,所述N个功能模块用于实现目标应用的相关功能,N为大于等于2的整数;
拆分模块,基于拆分指令,将所述N个功能模块拆分为M组功能模块,M为大于等于2的整数;以及
打包模块,分别打包所述M组功能模块,得到M个目标文件,其中,所述M个目标文件中的每个目标文件能够被客户端加载以执行所述目标应用的相关功能;所述M组功能模块包括一组基本功能模块和M-1组业务功能模块,所述M-1组业务功能模块中的各组业务功能模块用于执行不同业务功能。
8.一种计算设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至6中任一项所述的方法。
9.一种计算机可读存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现权利要求1至6中任一项所述的方法。
CN201911011229.4A 2019-10-22 2019-10-22 用于处理功能模块的方法、装置、计算设备以及介质 Active CN110795143B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911011229.4A CN110795143B (zh) 2019-10-22 2019-10-22 用于处理功能模块的方法、装置、计算设备以及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911011229.4A CN110795143B (zh) 2019-10-22 2019-10-22 用于处理功能模块的方法、装置、计算设备以及介质

Publications (2)

Publication Number Publication Date
CN110795143A CN110795143A (zh) 2020-02-14
CN110795143B true CN110795143B (zh) 2023-11-07

Family

ID=69440932

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911011229.4A Active CN110795143B (zh) 2019-10-22 2019-10-22 用于处理功能模块的方法、装置、计算设备以及介质

Country Status (1)

Country Link
CN (1) CN110795143B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111949312B (zh) * 2020-08-14 2024-02-09 曙光信息产业(北京)有限公司 数据模块的打包方法、装置、计算机设备和存储介质
CN112632384B (zh) * 2020-12-25 2024-07-05 北京百度网讯科技有限公司 针对应用程序的数据处理方法、装置、电子设备和介质
CN113326038B (zh) * 2021-06-11 2023-11-10 北京百度网讯科技有限公司 用于提供服务的方法、装置、设备、存储介质及程序产品

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103761107A (zh) * 2014-02-13 2014-04-30 福建星网视易信息系统有限公司 软件包定制的装置及方法
CN105528225A (zh) * 2015-11-30 2016-04-27 用友优普信息技术有限公司 应用程序的加载方法及加载装置
CN107315593A (zh) * 2017-06-29 2017-11-03 广州优视网络科技有限公司 应用程序打包方法、装置及终端设备
CN108920139A (zh) * 2018-06-29 2018-11-30 北京金山数字娱乐科技有限公司 一种程序生成方法、装置、系统、电子设备及存储介质
CN109783744A (zh) * 2018-12-05 2019-05-21 北京奇艺世纪科技有限公司 页面启动方法、装置、终端及计算机可读存储介质
CN109783138A (zh) * 2018-12-05 2019-05-21 北京奇艺世纪科技有限公司 应用程序包构成的拆分方法、装置、终端及介质
CN109857454A (zh) * 2018-12-15 2019-06-07 中国平安人寿保险股份有限公司 安装包生成与缓存方法、装置、电子设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160124744A1 (en) * 2014-04-03 2016-05-05 Empire Technology Development Llc Sub-packaging of a packaged application including selection of user-interface elements

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103761107A (zh) * 2014-02-13 2014-04-30 福建星网视易信息系统有限公司 软件包定制的装置及方法
CN105528225A (zh) * 2015-11-30 2016-04-27 用友优普信息技术有限公司 应用程序的加载方法及加载装置
CN107315593A (zh) * 2017-06-29 2017-11-03 广州优视网络科技有限公司 应用程序打包方法、装置及终端设备
CN108920139A (zh) * 2018-06-29 2018-11-30 北京金山数字娱乐科技有限公司 一种程序生成方法、装置、系统、电子设备及存储介质
CN109783744A (zh) * 2018-12-05 2019-05-21 北京奇艺世纪科技有限公司 页面启动方法、装置、终端及计算机可读存储介质
CN109783138A (zh) * 2018-12-05 2019-05-21 北京奇艺世纪科技有限公司 应用程序包构成的拆分方法、装置、终端及介质
CN109857454A (zh) * 2018-12-15 2019-06-07 中国平安人寿保险股份有限公司 安装包生成与缓存方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN110795143A (zh) 2020-02-14

Similar Documents

Publication Publication Date Title
CN110795143B (zh) 用于处理功能模块的方法、装置、计算设备以及介质
US12019652B2 (en) Method and device for synchronizing node data
US9858177B2 (en) Automated test generation for multi-interface enterprise virtualization management environment
US10630556B2 (en) Discovering and publishing device changes in a cloud environment
CN109726094A (zh) 压力测试的方法和装置
WO2016058488A1 (zh) 一种用于提供sdk文件的方法与设备
CN112965761B (zh) 一种数据处理方法、系统、电子设备及存储介质
US10572373B2 (en) Automated test generation for multi-interface and multi-platform enterprise virtualization management environment
US20200004464A1 (en) Method and apparatus for storing data
US11582285B2 (en) Asynchronous workflow and task api for cloud based processing
CN110795331A (zh) 软件测试的方法和装置
CN113553178A (zh) 任务处理方法、装置和电子设备
CN110928571A (zh) 业务程序开发方法和装置
CN115617420A (zh) 应用程序的生成方法、装置、设备以及存储介质
CN112883006B (zh) 一种企业级容器镜像加速方法、装置、电子设备和存储介质
CN111382953A (zh) 一种动态流程生成方法和装置
US10542110B2 (en) Data communication in a clustered data processing environment
CN111444148A (zh) 基于MapReduce的数据传输方法和装置
CN117149248A (zh) 微前端构建方法、装置、设备及存储介质
CN108804442B (zh) 序列号生成方法和装置
CN109614230A (zh) 资源虚拟化方法、装置和电子设备
CN112540772B (zh) 应用发布方法及其系统、电子设备、存储介质
US11782971B2 (en) Static and dynamic NBMP function image retrieval and scale ranking
CN112882921B (zh) 故障模拟方法和装置
CN112667491B (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
GR01 Patent grant
GR01 Patent grant