CN116820555B - 应用程序的分包方法、装置、电子设备及可读存储介质 - Google Patents

应用程序的分包方法、装置、电子设备及可读存储介质 Download PDF

Info

Publication number
CN116820555B
CN116820555B CN202311095304.6A CN202311095304A CN116820555B CN 116820555 B CN116820555 B CN 116820555B CN 202311095304 A CN202311095304 A CN 202311095304A CN 116820555 B CN116820555 B CN 116820555B
Authority
CN
China
Prior art keywords
page
target
jump
candidate
node
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
CN202311095304.6A
Other languages
English (en)
Other versions
CN116820555A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202311095304.6A priority Critical patent/CN116820555B/zh
Publication of CN116820555A publication Critical patent/CN116820555A/zh
Application granted granted Critical
Publication of CN116820555B publication Critical patent/CN116820555B/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请实施例公开了一种应用程序的分包方法、装置、电子设备及可读存储介质,方法包括:获取目标应用程序的源代码,并在源代码中识别出目标跳转字段,目标跳转字段指示多个候选页面之间跳转的信息;基于目标跳转字段,构建多个候选页面之间的路由有向图,路由有向图表征候选页面之间的跳转关系;基于路由有向图,确定每一候选页面的路由权重;基于路由权重,在候选页面中筛选出至少一个目标页面,目标页面包括执行分包操作的候选页面;在源代码中提取出目标页面的配置信息和页面加载信息,并基于配置信息和页面加载信息,生成目标页面的分包文件。本申请实施例能够提升应用程序的分包效率,降低分包复杂度和分包所需的人力资源消耗。

Description

应用程序的分包方法、装置、电子设备及可读存储介质
技术领域
本申请涉及计算机技术领域,具体涉及一种应用程序的分包方法、装置、电子设备及可读存储介质。
背景技术
在应用程序开发的过程中,可以将整个应用按照不同的功能模块、页面、业务逻辑、引用库、包体积限制等条件进行分包,分包后的应用程序可以提高初始加载速度、降低首次启动所需的时间,并优化使用者体验。
然而,应用程序的分包通常由开发人员手动分包来实现,开发人员需要对应用程序的大量源代码进行重构和修改等处理,导致手动分包的效率低、操作繁琐、复杂度高。
发明内容
本申请实施例提供一种应用程序的分包方法、装置、电子设备和存储介质,能够提升应用程序的分包效率,降低分包复杂度和分包所需的人力资源消耗。
本申请实施例第一方面提供一种应用程序的分包方法,所述方法包括:
获取目标应用程序的源代码,并在所述源代码中识别出目标跳转字段,所述目标跳转字段指示多个候选页面之间跳转的信息;
基于所述目标跳转字段,构建所述多个候选页面之间的路由有向图,所述路由有向图表征所述候选页面之间的跳转关系;
基于所述路由有向图,确定每一所述候选页面的路由权重,所述路由权重表征页面的路由调用次数;
基于所述路由权重,在所述候选页面中筛选出至少一个目标页面,所述目标页面包括执行分包操作的候选页面;
在所述源代码中提取出所述目标页面的配置信息和页面加载信息,并基于所述配置信息和页面加载信息,生成所述目标页面的分包文件。
相应地,本申请实施例第二方面提供一种应用程序的分包装置,所述装置包括:
源代码获取单元,用于获取目标应用程序的源代码,并在所述源代码中识别出目标跳转字段,所述目标跳转字段指示多个候选页面之间跳转的信息;
路由有向图构建单元,用于基于所述目标跳转字段,构建所述多个候选页面之间的路由有向图,所述路由有向图表征所述候选页面之间的跳转关系;
路由权重确定单元,用于基于所述路由有向图,确定每一所述候选页面的路由权重,所述路由权重表征页面的路由调用次数;
目标页面筛选单元,用于基于所述路由权重,在所述候选页面中筛选出至少一个目标页面,所述目标页面包括执行分包操作的候选页面;
分包文件生成单元,用于在所述源代码中提取出所述目标页面的配置信息和页面加载信息,并基于所述配置信息和页面加载信息,生成所述目标页面的分包文件。
可选地,所述路由有向图构建单元,包括:
跳转关系信息确定第一子单元,用于基于所述目标跳转字段,确定多个候选页面之间的跳转关系信息;
节点构建子单元,用于将所述每个候选页面作为节点,并基于所述跳转关系信息,确定所述节点对应的至少一条节点边,以及每一所述节点边的边权重;
路由有向图生成子单元,用于基于所述节点、所述节点边和所述边权重,生成路由有向图。
可选地,所述跳转关系信息确定子单元,包括:
上下文信息提取子单元,用于提取所述目标跳转字段的上下文信息;
跳转页面确定第一子单元,用于基于所述上下文信息,确定所述候选页面的跳转指向信息和跳转次数,所述跳转指向信息指示所述候选页面对应跳转页面;
跳转关系信息确定第二子单元,用于将所述跳转指向信息和所述跳转次数作为跳转关系信息。
可选地,所述节点构建子单元,包括:
跳转页面确定第二子单元,用于基于所述每个候选页面的跳转指向信息,确定所述每个候选页面对应的跳转页面;
节点边确定子单元,用于基于所述跳转页面,确定所述每个节点的至少一个节点边;
边权重确定子单元,用于在所述跳转次数中筛选出每一节点边对应的目标跳转次数,并基于所述目标跳转次数,确定每一节点边的边权重。
可选地,所述节点边确定子单元还具体用于:
获取候选页面的节点,以及所述跳转页面的节点;
基于所述跳转页面相对于所述候选页面的跳转指向,确定所述跳转页面的节点相对于所述候选页面的节点的跳转指向;
基于所述跳转页面的节点相对于所述候选页面的节点的跳转指向,确定所述每个候选页面的节点的至少一个节点边。
可选地,所述路由权重确定单元还具体用于:
在所述路由有向图中识别出每一候选页面对应节点的至少一个节点边,得到每一候选页面对应的节点边集合;
将所述节点边集合中每一节点边对应的边权重进行求和,得到每一候选页面的路由权重。
可选地,所述目标页面筛选单元还具体用于:
获取用于筛选所述路由权重的权重阈值;
在所述候选页面中筛选出所述路由权重大于所述权重阈值的至少一个候选页面,得到目标页面。
可选地,所述分包文件生成单元,包括:
配置信息获取子单元,用于从所述源代码中提取所述目标页面的页面路径,并基于所述页面路径,对所述目标页面进行配置,得到所述目标页面的配置信息;
页面加载信息获取子单元,用于从所述源代码中提取所述目标页面的样式信息和事件绑定信息,得到所述目标页面的页面加载信息。
可选地,所述页面加载信息获取子单元还具体用于:
遍历所述目标页面的节点的子节点属性设置信息,所述节点属性设置信息包括样式属性和事件绑定属性;
提取所述样式属性引用的样式类所对应的样式定义,将所述样式定义确定为所述样式信息;
提取所述事件绑定属性的绑定函数所对应的函数实现,将所述函数实现确定为所述事件绑定信息。
可选地,所述分包文件生成单元还具体用于:
将所述配置信息添加至所述应用程序的全局配置文件,以得到初始分包文件;
将所述页面加载信息复制到所述初始分包文件,以得到所述目标页面的分包文件。
可选地,所述源代码获取单元还具体用于:
获取预设跳转字段对应的至少一个跳转关键字;
在所述源代码中筛选出所述跳转关键字对应的至少一个字段,得到目标跳转字段。
本申请实施例第三方面提供的一种电子设备,包括:
处理器和存储介质;
所述处理器,用于实现各个指令;
所述存储介质用于储存多条指令,所述指令用于由处理器加载并执行以上所述的应用程序的分包方法。
本申请实施例第四方面还提供一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本申请实施例所提供的任一种应用程序的分包方法中的步骤。
本申请实施例第五方面还提供一种计算机程序产品,包括计算机程序或指令,所述计算机程序或指令被处理器执行时实现本申请实施例所提供的任一种应用程序的分包方法。
由此可知,应用本申请实施例,可以在应用程序的源代码中自动、快速地识别出目标跳转字段,并根据目标跳转字段自动筛选出待分包的应用程序的多个候选页面。在确定出多个候选页面之后,可以根据多个候选页面之间的跳转关系构建对应的路由有向图,进而根据路由有向图所表征出的每个候选页面的路由权重,来快速、准确地从多个候选页面中筛选出至少一个需要分包的目标页面。从而本申请实施例无需开发人员手动分包,以自动分包的方式快速、准确地得到应用程序的分包结构,提升应用程序的分包效率和开发效率,降低应用程序分包的复杂度,以及分包所需的人力资源消耗。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的应用程序的分包方法的应用场景示意图;
图2a是本申请实施例提供的应用程序的分包方法的流程示意图;
图2b是本申请实施例提供的应用程序的分包方法的流程示意图;
图3a是本申请实施例提供的应用程序的分包系统的结构示意图;
图3b是本申请实施例提供的路由有向图的示意图;
图3c是本申请实施例提供的对应用程序进行分包的数据交互示意图;
图3d是本申请实施例提供的确定分包结构的流程示意图;
图3e是本申请实施例提供的生成分包文件的流程示意图;
图4是本申请实施例提供的应用程序的分包装置的结构示意图;
图5是本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
云技术(Cloud technology):是指在广域网或局域网内将硬件、软件及网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术,也可理解为基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术及应用技术等的总称,可以组成资源池,按需所用,灵活便利。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站,伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,因此云技术需要以云计算作为支撑。云计算是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。作为云计算的基础能力提供商,会建立云计算资源池平台,简称云平台,一般称为基础设施即服务(IaaS,Infrastructure as a Service),在资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(可为虚拟化机器,包含操作系统)、存储设备和网络设备。
为了实现应用程序的自动分包操作,并提升分包效率、降低分包复杂度和分包所需的人力资源,本申请实施例提供一种应用程序的分包方法、装置、介质及设备。下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了便于理解本申请实施例所述的技术方案及其产生的技术效果,本申请实施例对于涉及到的相关专业名词进行解释:
分包:是指在应用程序开发的过程中,将应用程序的代码和资源拆分为多个包,以便更好地管理和优化应用程序的加载性能。
路由:是指在计算机网络中确定数据包从源节点到目标节点的路径选择过程。在网络通信中,数据包需要经过多个网络节点才能到达目标节点。路由的目的是根据网络拓扑和路由策略,决定数据包从源节点到目标节点的最佳路径,以实现有效的数据传输和网络通信。
有向图:Directed Graph,又称为有向网络,是图论中的一种图形结构。与无向图不同,有向图的边是有方向性的,即从一个节点指向另一个节点。在有向图中,节点(也称为顶点)之间的连接关系由有向边表示。有向边从一个节点(起始节点)指向另一个节点(目标节点),表示了从起始节点到目标节点的单向关系。
本发明实施例提供一种应用程序的分包方法、装置及可读存储介质。其中,该应用程序的分包装置可以集成在电子设备中,该电子设备可以是服务器,也可以是终端等设备。
其中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、网络加速服务(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
例如,参见图1,以应用程序的分包装置集成在服务器中为例,服务器在获取目标应用程序的源代码,并在源代码中识别出目标跳转字段后,基于所述目标跳转字段,构建所述多个候选页面之间的路由有向图,再根据路由有向图,确定每一候选页面的路由权重,然后,基于路由权重,在候选页面中筛选出至少一个目标页面,最终,在源代码中提取出目标页面的配置信息和页面加载信息,并基于配置信息和页面加载信息,生成目标页面的分包文件,进而提升对应用程序进行分包的效率、降低分包的复杂度和分包所需的人力资源。
以下分别进行详细说明。需要说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
本实施例将从应用程序的分包装置的角度进行描述,该应用程序的分包装置具体可以集成在电子设备中,该电子设备可以是服务器,也可以是终端等设备;其中,该终端可以包括平板电脑、笔记本电脑、以及个人计算机(PC,Personal Computer)、可穿戴设备、虚拟现实设备或其他可以更新插件的智能设备等设备。
一种应用程序的分包方法,包括:
获取目标应用程序的源代码,并在所述源代码中识别出目标跳转字段,所述目标跳转字段指示多个候选页面之间跳转的信息;
基于所述目标跳转字段,构建所述多个候选页面之间的路由有向图,所述路由有向图表征所述候选页面之间的跳转关系;
根据所述路由有向图,确定每一所述候选页面的路由权重,所述路由权重表征页面的路由调用次数;
基于所述路由权重,在所述候选页面中筛选出至少一个目标页面,所述目标页面包括执行分包操作的候选页面;
在所述源代码中提取出所述目标页面的配置信息和页面加载信息,并基于所述配置信息和页面加载信息,生成所述目标页面的分包文件。
本申请实施例还可以结合云技术实现,云技术(Cloud technology)是指在广域网或局域网内将硬件、软件及网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术,也可理解为基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术及应用技术等的总称。云技术需要以云计算作为支撑。云计算是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。具体地,所述服务器和数据库位于云端,所述服务器可以是实体机器,也可以是虚拟化机器。
以下介绍本申请提供的一种应用程序的分包方法。图2a是本申请实施例提供的一种应用程序的分包方法的流程图,本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。请参照图2a,本申请实施例提供的一种应用程序的分包方法可以包括如下步骤:
步骤101、获取目标应用程序的源代码,并在所述源代码中识别出目标跳转字段。
其中,目标跳转字段可以指示多个候选页面之间跳转的信息。其中,候选页面是指可能需要执行分包操作的应用程序的页面。
在应用程序的分包场景中,应用程序会存在多个页面,以电商类的应用程序为例,可以包括首页、商品分类页面、个人信息页面、商品详情页面、购物车页面等,由于以上页面之间存在跳转关系,因此以上页面均可以看作候选页面。以上每个页面具有不同的功能,用于展示不同的内容,因此可以通过对以上页面进行分包来提升应用程序的加载速度。例如可以将首页、商品分类页面和个人信息页面放在主包,将商品详情页面放在分包A,将购物车页面放在分包B。
通过以上分包操作,当使用者打开该应用程序时,主包的代码和资源文件会被加载,使用者可以浏览首页、商品分类页面和个人信息页面。相应地,如果使用者点击某个商品进入商品详情页面,此时会触发分包A的加载,分包A中的代码和资源文件会被加载,使用者可以查看商品的详细信息。同时,使用者可以将商品添加到购物车,如果使用者进入购物车页面,则会触发分包B的加载,分包B中的代码和资源文件会被加载,使用者可以管理购物车中的商品。通过以上按需加载分包的方式,可以降低的初始加载时间和网络请求量,提升使用者的体验。
然而,开发人员在手动分包的过程中,需要处理大量的源代码重构、配置信息编写、分包策略确认、分包结构确认、包体积限制确认,以及分包依赖关系管理等工作,使得针对大量应用程序的分包或海量源代码处理时,手动分包必然存在分包效率低、分包复杂度高、过度依赖人为主观经验等缺点,而本申请的应用程序的分包方法可以通过自动分包的方式解决以上问题。
可选地,步骤101可以包括:
获取预设跳转字段对应的至少一个跳转关键字;
在所述源代码中筛选出所述跳转关键字对应的至少一个字段,得到目标跳转字段。
在一些实施例中,目标跳转字段中可以包括对应的跳转关键字,并通过遍历识别该跳转关键字来得到目标跳转字段。在一些实施例中,跳转关键字可以是预先设置的,例如可以包括navigateTo,navigateBack,redirectTo,switchTab,reLaunch等。可以理解,以上跳转关键字均与页面的跳转和切换相关,例如navigateTo表示页面的跳转操作,navigateBack表示页面返回的操作,因此目标跳转字段可以用于指示多个候选页面之间跳转的信息。
现给定以下源代码的部分字段:
// 源码文件A.js
wx.navigateTo({'page/home/index'})。
可以看出,当在源代码中识别出跳转关键字navigateTo时,可以准确地匹配到该跳转关键字对应的目标跳转字段的navigateTo方法,进而可以得到该目标跳转字段“wx.navigateTo({'page/home/index'})”,并提取出对应的参数'page/home/index'得到候选页面的路径,该路径可以看作跳转的路由目的地。以该字段为例,候选页面为page目录下的home页面,而路径中的index是指page/home目录下home页面的index入口文件,该入口文件包含页面的逻辑、结构和样式等信息。通过指定入口文件的路径,可以唯一确定一个页面。
请参阅图3a和图3c,图3a是本申请实施例提供的应用程序的分包系统的结构示意图,图3c是本申请实施例提供的对应用程序进行分包的数据交互示意图。如图3a所示,该应用程序的分包系统可以是应用程序IDE(Integrated Development Environment,开发者工具),该应用程序IDE中可以包括词法分析器、分包结构生成器、分包信息生成器和配置中心。
如图3c所示,开发人员可以在应用程序IDE中开发应用程序,在应用程序开发完成后,可以继续在该应用程序IDE中执行代码编译的操作,并触发本申请的自动分包流程,以上步骤101的操作由词法分析器自动执行。
可以理解,本申请的词法分析器不仅能够自动、快速、准确地识别出跳转关键字和目标跳转字段,还能够解析和提取出目标跳转字段所对应的路由目的地信息,也即候选页面的路径信息,为后续快速、准确地构建候选页面的路由有向图奠定基础,进而能够提升应用程序的整体分包效率和准确性。
步骤102、基于所述目标跳转字段,构建所述多个候选页面之间的路由有向图,所述路由有向图表征所述候选页面之间的跳转关系。
其中,路由有向图是用于表征候选页面之间跳转路由关系的数据结构图。请参阅图3b,图3b是本申请实施例提供的路由有向图的示意图。如图3b所示,路由有向图由多个节点和对应的节点边构成,每个节点代表一个对应的候选页面,每个节点边给出了节点之间的跳转指向,例如候选页面pageB跳转至候选页面pageA。相应地,每个节点边对应一个用数值表示的边权重,边权重表示候选页面之间的路由调用次数,即候选页面之间跳转操作发生的次数,例如图3b中由候选页面pageB指向候选页面pageA的节点边所对应的边权重为3,表示候选页面pageB跳转至候选页面pageA的操作发生了3次。
可选地,步骤102可以包括以下步骤:
基于所述目标跳转字段,确定多个候选页面之间的跳转关系信息;
将所述每个候选页面作为节点,并基于所述跳转关系信息,确定所述节点对应的至少一条节点边,以及每一所述节点边的边权重;
基于所述节点、所述节点边和所述边权重,生成路由有向图。
其中,跳转关系信息可以包括页面之间的跳转指向信息和跳转次数。可以理解,在包含目标跳转字段的字段中,词法分析器可以根据该字段准确地识别出候选页面之间的跳转关系信息,以进一步地根据跳转关系信息来构建路由有向图的节点、节点边和边权重。
可选地,步骤“基于所述目标跳转字段,确定多个候选页面之间的跳转关系信息”,包括:
提取所述目标跳转字段的上下文信息;
基于所述上下文信息,确定所述候选页面的跳转指向信息和跳转次数,所述跳转指向信息指示所述候选页面对应跳转页面;
将所述跳转指向信息和所述跳转次数作为跳转关系信息。
以目标跳转字段为navigateTo方法的字段为例,目标跳转字段的上下文信息可以表示为如下字段:
// 跳转来源页面:PageA
Page({
navigateToPageB() {
// 跳转目标页面:PageB
wx.navigateTo({
'pages/PageB/index'
});
}
})。
可以看出,在该上下文信息中pageA为跳转来源页面,pageB为跳转指向页面,因此可以准确地确定跳转指向信息为pageA跳转至pageB。相应地,词法分析器在遍历识别源代码中的跳转关键字时,同时也会统计出目标跳转字段的方法对应的调用次数,例如识别跳转关键字navigateTo时,会相应地统计出pageA、pageB等候选页面对navigateTo方法的调用次数,以计算出pageA与pageB之间的跳转次数。在获取跳转指向信息和跳转次数后,便得到了候选页面的完整的跳转关系信息。
可选地,步骤“确定所述节点对应的至少一条节点边,以及每一所述节点边的边权重”,包括:
基于所述每个候选页面的跳转指向信息,确定所述每个候选页面对应的跳转页面;
基于所述跳转页面,确定所述每个节点的至少一个节点边;
在所述跳转次数中筛选出每一节点边对应的目标跳转次数,并基于所述目标跳转次数,确定每一节点边的边权重。
可以理解,对于每一个候选页面的节点而言,可以从该候选页面的跳转指向信息中确定出对应的跳转页面。其中,该跳转页面可以是该候选页面的跳转来源页面,也可以是该候选页面的跳转目标页面。每个候选页面可能对应一个或多个跳转页面,如图3b所示,以候选页面pageA为例,pageA的跳转页面包括pageB、pageC和pageD。相应地,词法分析器可以在pageA的跳转关系信息中,可以从跳转次数中筛选出每一个节点边对应的目标跳转次数,作为每一个节点边的边权重,例如图3b中由pageA指向pageC的节点边所对应的边权重为1。
在一些实施例中,还可以引入更多计算边权重的方式,例如图3b中pageA与pageE之间虽然未发生直接跳转操作,两个节点之间不存在对应的节点边,但是pageA跳转至pageD、pageD再跳转至pageE,以及pageE跳转至pageB、pageB又跳转至pageA,使得pageA与pageE之间存在间接跳转的关系,则可以根据间接跳转的关系,为pageA与pageE之间增加一条或两条对应的节点边,节点边的边权重可以设置为中间跳转的边权重之和与设定系数的乘积,例如设定系数可以为0.1、0.2等,假设设定系数为0.1,则pageA指向pageE的节点边的边权重为(2+6)×0.1=0.8。需要说明的是,以上对于节点边的边权重的计算规则和计算细节可以根据需求进行调整,本实施例对此不做限制。
可选地,步骤“基于所述跳转页面,确定所述每个节点的至少一个节点边”,包括:
获取候选页面的节点,以及所述跳转页面的节点;
基于所述跳转页面相对于所述候选页面的跳转指向,确定所述跳转页面的节点相对于所述候选页面的节点的跳转指向;
基于所述跳转页面的节点相对于所述候选页面的节点的跳转指向,确定所述每个候选页面的节点的至少一个节点边。
仍以前述上下文信息的字段为例,候选页面为pageA、跳转页面为pageB,并且可以确定跳转指向为pageA跳转至pageB,则在路由有向图中,可以确定一条由pageA节点指向pageB节点的节点边。可以理解,词法分析器完成对全部源代码的分析操作后,可以自动、准确地得到每个候选页面的节点所对应的全部节点边。
步骤103、基于所述路由有向图,确定每一所述候选页面的路由权重。
其中,候选页面的路由权重是指该候选页面的路由调用次数的总体权重,可以通过计算候选页面的节点的全部节点边的边权重之和得到。
可选地,步骤103可以包括以下步骤:
在所述路由有向图中识别出每一候选页面对应节点的至少一个节点边,得到每一候选页面对应的节点边集合;
将所述节点边集合中每一节点边对应的边权重进行求和,得到每一候选页面的路由权重。
其中,节点边集合是指该候选页面对应的全部节点边的集合。如图3b所示,以pageA为例,pageA的节点边集合包括由pageB指向pageA的节点边、由pageA指向pageC的节点边、由pageC指向pageA的节点边、由pageA指向pageD的节点边。
在一些实施例中,在得到候选页面的节点边集合后,可以对节点边结合中的每一个节点边的边权重进行求和,以计算得到路由权重。仍以pageA为例,pageA的路由权重计算为(1+2+2+3)=8。
通过以上方式计算每个候选页面的节点对应的路由权重,能够准确地分析出每个候选页面的跳转热度,以此来作为后续是否对该候选页面进行分包的依据,能够为应用程序准确地制定分包策略,从而提升对应用程序分包的效率、降低分包的复杂度。
步骤104、基于所述路由权重,在所述候选页面中筛选出至少一个目标页面,所述目标页面包括执行分包操作的候选页面。
可以理解,在筛选出多个候选页面后,为了保证分包的合理性,无需对每个候选页面都进行分包,当应用程序包含大量页面时,将所有候选页面都分包会导致分包的数量增多,增加了网络请求的次数和分包的加载时间。因此需要制定一个合理的分包策略,从候选页面中筛选出实际需要分包的目标页面,以得到合理的分包结构,通过将分包中的页面按需加载来实现提升应用程序加载速度的效果。
可选地,步骤104可以包括:
获取用于筛选所述路由权重的权重阈值;
在所述候选页面中筛选出所述路由权重大于所述权重阈值的至少一个候选页面,得到目标页面。
其中,权重阈值可以是一个预设值,例如可以将权重阈值设置为6、7、8等。仅作为示例,假设现有五个候选页面pageA、pageB、pageC、pageD和pageE,对应的路由权重分别为8、11、6、12和9,假设权重阈值为8,则只有pageC的路由权重小于权重阈值,其他四个候选页面的路由权重均大于权重阈值,则可以将以上候选页面pageA、pageB、pageD和pageE确定为待执行分包操作的目标页面。
在一些实施例中,以上确定目标页面的操作可以由分词结构生成器执行。具体的,分包结构生成器可以根据配置中心提供的权重阈值和分包限制数量,来确定最终的目标页面。其中,配置中心是用于管理开发人员设置的分包设置信息的管理系统,主要用于提供权重阈值、分包限制数量等分包设置信息。
继续前述示例,假设当分包限制数量为3时,则根据路由权重的大小排序,将路由权重最高的3个候选页面pageD、pageB和pageE作为目标页面,虽然pageA的路由权重大于权重阈值,但由于分包数量的限制,也不将pageA作为目标页面。
步骤105、在所述源代码中提取出所述目标页面的配置信息和页面加载信息,并基于所述配置信息和页面加载信息,生成所述目标页面的分包文件。
在一些实施例中,在确定出目标页面后,分包结构生成器可以进一步地提取出目标页面的配置信息。其中,目标页面的配置信息可以包括目标页面的页面路径。例如目标页面为应用程序中一个显示小猫的页面,在源代码中对应的页面路径可以为"pages/cat",表示该页面的入口文件在pages目录下的cat文件中。
下面给出一段目标页面的配置信息所对应的代码:
{
"root": "packageA",
"pages": [
"pages/cat",
"pages/dog"
]
}, {
"root": "packageB",
"name": "pack2",
"pages": [
"pages/apple",
"pages/banana"
]
}
可以看出,除了目标页面的页面路径以外,配置信息还可以包括用于定义分包根目录的root字段、用于定义分包别名的name字段,以及用于定义分包是否是独立分包的independent字段。
可以理解,以上提取目标页面的配置信息的过程,可以看作是一个确定应用程序分包结构的过程,例如前述示例中,将pageD、pageB和pageE作为三个目标页面,使得该应用程序具有一个分包和三个主包的分包结构,具体请参阅图图3c和图3d。其中,图3c中的分包构造器可以包括分包结构生成器和分包信息生成器,用于提取目标页面的配置信息、页面加载信息,并生成最终的分包文件。
可选地,步骤105可以包括:
从所述源代码中提取所述目标页面的页面路径,并基于所述页面路径,对所述目标页面进行配置,得到所述目标页面的配置信息;
从所述源代码中提取所述目标页面的样式信息和事件绑定信息,得到所述目标页面的页面加载信息。
可以理解,在得到目标页面的配置信息后,可以确定应用程序的分包结构,分包结构相当于是一个分包的框架,用于声明将哪些页面放在应用程序的主包中,将哪些页面放在应用程序的分包中。因此,在得到分包结构后,需要进一步地通过分包信息生成器,从目标页面的入口文件中提取目标页面对应的css样式信息和事件绑定信息,以便于后续得到完整的分包文件。
可选地,步骤“从所述源代码中提取所述目标页面的样式信息和事件绑定信息”,包括:
遍历所述目标页面的节点的子节点属性设置信息,所述节点属性设置信息包括样式属性和事件绑定属性;
提取所述样式属性引用的样式类所对应的样式定义,将所述样式定义确定为所述样式信息;
提取所述事件绑定属性的绑定函数所对应的函数实现,将所述函数实现确定为所述事件绑定信息。
为了方便理解分包信息生成器提取样式信息和事件绑定信息的过程,下面结合以下示例进行描述。假设将应用程序中用于显示小猫的cat页面进行分包操作放入分包A中,该页面的页面路径为packageA/pages/cat,则可以确定该页面的入口文件为packageA/pages/cat.html。其中,入口文件为html格式,存储了该页面的结构代码,包含页面的视觉层元素和组件等。
进一步地,分包信息生成器可以从该入口文件中提取css样式信息,其中,css样式信息是页面的样式代码,包含了页面的样式规则。在提取时,可以遍历目标页面的节点所对应的子节点属性设置信息,假设遍历到子节点属性设置为class属性,该class属性引用了cat-page和cat-name这两个样式类,则分包信息生成器可以在原始的app.css文件中找到对应样式类的样式定义,样式定义的举例如下:
.cat-page {
background-color: #FFF;
padding: 10px;
}
.cat-name {
font-size: 16px;
font-weight: bold;
}
例如该样式定义中,包括了页面的背景颜色、内边距、字体大小、字体粗细的样式信息,在提取到以上样式信息后,便可以将以上提取的样式信息添加到分包的css文件中,例如packageA.css文件中:
.cat-page {
background-color: #FFF;
padding: 10px;
}
.cat-name {
font-size: 16px;
font-weight: bold;
}。
相应地,下面对提取事件绑定信息的过程进行举例:
假设事件绑定信息对应的子节点属性设置为bindtap属性,可以确定该目标页面绑定了onCatClick函数,则分包信息生成器需要从原始的全局配置文件app.js文件中找到该绑定函数的函数实现,假设在app.js文件中有以下代码:
Page({
onCatClick() {
console.log('Cat clicked!');
}
})。
可以看出,以上代码包含了onCatClick函数的函数实现,该函数实现定义了一个名为 onCatClick 的函数,当页面中的某个元素,例如一个按钮或图片被点击时,该函数会被触发。在函数体内部,使用console.log 函数打印了一条消息 'Cat clicked!',表示当onCatClick 函数被调用时,在控制台(开发者工具的调试控制台)中会输出 'Catclicked!' 这个消息。
可以理解,该绑定函数的函数实现可以作为目标页面的事件绑定信息,则可以将该事件绑定信息添加到分包的js文件中,例如packageA.js文件中:
// packageA.js
Page({
onCatClick() {
console.log('Cat clicked!');
}
})。
进一步地,在处理完分包的css样式信息文件和js事件绑定信息文件后,需要处理以上两个文件所对应的资源引用,如果引用的是在线资源,则直接复制资源引用地址到对应的实现;如果是引用的本地资源,则将本地资源文件拷贝到对应的分包目录中。这样可以有效地管理分包文件的依赖资源,保证分包的独立性,并且当分包文件引用在线资源时,直接复制资源引用地址到对应的实现可以进一步地提高应用程序的加载速度和性能。
可选地,步骤105可以包括:
将所述配置信息添加至所述应用程序的全局配置文件,以得到初始分包文件;
将所述页面加载信息复制到所述初始分包文件,以得到所述目标页面的分包文件。
请参阅图3c和图3e,图3e是是本申请实施例提供的生成分包文件的流程示意图。其中,全局配置文件可以为app.js文件,用于整个应用程序的初始化和全局配置,将配置信息添加至应用程序的全局配置文件后,可以得到初始分包文件,下面给出一个初始分包文件的示例代码:
{
"pages":[
"pages/index",
"pages/logs"
],
"subpackages": [
{
"root": "packageA",
"pages": [
"pages/cat",
"pages/dog"
]
}, {
"root": "packageB",
"name": "pack2",
"pages": [
"pages/apple",
"pages/banana"
]
}
]
}
可以看出,在该初始分包文件中,"pages"字段定义了应用程序的主包下的页面路径。在该示例的分包结构中,应用程序的主包包含了"pages/index" 和 "pages/logs"两个页面。相应的,"subpackages"字段定义了应用程序的分包,每个分包都有一个根目录和相关页面。
在该示例的分包结构中,首先定义了packageA 分包,其中,"root"字段指定了packageA分包的根目录,"pages"字段定义了packageA分包下的页面路径,包括"pages/cat"和 "pages/dog"两个分包入口文件。
其次,定义了packageB分包,其中,"root"字段指定了packageB分包的根目录,"name"字段指定了packageB 分包的名称为"pack2","pages"字段定义了 packageB分包下的页面路径,包括 "pages/apple"和 "pages/banana"两个入口文件。
可以理解,分包信息生成器可以将提取的目标页面的样式信息和事件绑定信息拷贝添加到初始分包文件的css文件和js文件中,以生成最终的分包文件,整个对应用程序进行自动分包的流程结束。
由此可知,应用本申请实施例,可以在应用程序的源代码中自动、快速地识别出目标跳转字段,并根据目标跳转字段自动筛选出待分包的应用程序的多个候选页面。在确定出多个候选页面之后,可以根据多个候选页面之间的跳转关系构建对应的路由有向图,进而根据路由有向图所表征出的每个候选页面的路由权重,来快速、准确地从多个候选页面中筛选出至少一个需要分包的目标页面。从而本申请实施例无需开发人员手动分包,以自动分包的方式快速、准确地得到应用程序的分包结构,提升应用程序的分包效率和开发效率,降低应用程序分包的复杂度,以及分包所需的人力资源消耗。
其中,上述应用程序的分包方法的另一具体流程如下,参考图2b,该方法还包括以下步骤:
步骤201、获取目标应用程序的源代码,并在源代码中识别出目标跳转字段;
步骤202、基于目标跳转字段,确定多个候选页面之间的跳转关系信息;
步骤203、将每个候选页面作为节点,并基于跳转关系信息,确定节点对应的至少一条节点边,以及每一所述节点边的边权重;
步骤204、基于节点、节点边和边权重,生成路由有向图;
步骤205、在路由有向图中识别出每一候选页面对应节点的至少一个节点边,得到每一候选页面对应的节点边集合;
步骤206、将节点边集合中每一节点边对应的边权重进行求和,得到每一候选页面的路由权重;
步骤207、获取用于筛选路由权重的权重阈值;
步骤208、在候选页面中筛选出路由权重大于权重阈值的至少一个候选页面,得到目标页面;
步骤209、在源代码中提取出目标页面的配置信息和页面加载信息,并基于配置信息和页面加载信息,生成目标页面的分包文件。
根据上述实施例所描述的方法,以下将作进一步详细说明。
如图4所示,为本申请实施例提供的应用程序的分包装置的结构示意图,该装置包括:
源代码获取单元301,用于获取目标应用程序的源代码,并在所述源代码中识别出目标跳转字段,所述目标跳转字段指示多个候选页面之间跳转的信息;
路由有向图构建单元302,用于基于所述目标跳转字段,构建所述多个候选页面之间的路由有向图,所述路由有向图表征所述候选页面之间的跳转关系;
路由权重确定单元303,用于基于所述路由有向图,确定每一所述候选页面的路由权重,所述路由权重表征页面的路由调用次数;
目标页面筛选单元304,用于基于所述路由权重,在所述候选页面中筛选出至少一个目标页面,所述目标页面包括执行分包操作的候选页面;
分包文件生成单元305,用于在所述源代码中提取出所述目标页面的配置信息和页面加载信息,并基于所述配置信息和页面加载信息,生成所述目标页面的分包文件。
可选地,所述路由有向图构建单元302,包括:
跳转关系信息确定第一子单元,用于基于所述目标跳转字段,确定多个候选页面之间的跳转关系信息;
节点构建子单元,用于将所述每个候选页面作为节点,并基于所述跳转关系信息,确定所述节点对应的至少一条节点边,以及每一所述节点边的边权重;
路由有向图生成子单元,用于基于所述节点、所述节点边和所述边权重,生成路由有向图。
可选地,所述跳转关系信息确定子单元,包括:
上下文信息提取子单元,用于提取所述目标跳转字段的上下文信息;
跳转页面确定第一子单元,用于基于所述上下文信息,确定所述候选页面的跳转指向信息和跳转次数,所述跳转指向信息指示所述候选页面对应跳转页面;
跳转关系信息确定第二子单元,用于将所述跳转指向信息和所述跳转次数作为跳转关系信息。
可选地,所述节点构建子单元,包括:
跳转页面确定第二子单元,用于基于所述每个候选页面的跳转指向信息,确定所述每个候选页面对应的跳转页面;
节点边确定子单元,用于基于所述跳转页面,确定所述每个节点的至少一个节点边;
边权重确定子单元,用于在所述跳转次数中筛选出每一节点边对应的目标跳转次数,并基于所述目标跳转次数,确定每一节点边的边权重。
可选地,所述节点边确定子单元还具体用于:
获取候选页面的节点,以及所述跳转页面的节点;
基于所述跳转页面相对于所述候选页面的跳转指向,确定所述跳转页面的节点相对于所述候选页面的节点的跳转指向;
基于所述跳转页面的节点相对于所述候选页面的节点的跳转指向,确定所述每个候选页面的节点的至少一个节点边。
可选地,所述路由权重确定单元303还具体用于:
在所述路由有向图中识别出每一候选页面对应节点的至少一个节点边,得到每一候选页面对应的节点边集合;
将所述节点边集合中每一节点边对应的边权重进行求和,得到每一候选页面的路由权重。
可选地,所述目标页面筛选单元304还具体用于:
获取用于筛选所述路由权重的权重阈值;
在所述候选页面中筛选出所述路由权重大于所述权重阈值的至少一个候选页面,得到目标页面。
可选地,所述分包文件生成单元305,包括:
配置信息获取子单元,用于从所述源代码中提取所述目标页面的页面路径,并基于所述页面路径,对所述目标页面进行配置,得到所述目标页面的配置信息;
页面加载信息获取子单元,用于从所述源代码中提取所述目标页面的样式信息和事件绑定信息,得到所述目标页面的页面加载信息。
可选地,所述页面加载信息获取子单元还具体用于:
遍历所述目标页面的节点的子节点属性设置信息,所述节点属性设置信息包括样式属性和事件绑定属性;
提取所述样式属性引用的样式类所对应的样式定义,将所述样式定义确定为所述样式信息;
提取所述事件绑定属性的绑定函数所对应的函数实现,将所述函数实现确定为所述事件绑定信息。
可选地,所述分包文件生成单元305还具体用于:
将所述配置信息添加至所述应用程序的全局配置文件,以得到初始分包文件;
将所述页面加载信息复制到所述初始分包文件,以得到所述目标页面的分包文件。
可选地,所述源代码获取单元301还具体用于:
获取预设跳转字段对应的至少一个跳转关键字;
在所述源代码中筛选出所述跳转关键字对应的至少一个字段,得到目标跳转字段。
由此可知,应用本申请实施例,可以在应用程序的源代码中自动、快速地识别出目标跳转字段,并根据目标跳转字段自动筛选出待分包的应用程序的多个候选页面。在确定出多个候选页面之后,可以根据多个候选页面之间的跳转关系构建对应的路由有向图,进而根据路由有向图所表征出的每个候选页面的路由权重,来快速、准确地从多个候选页面中筛选出至少一个需要分包的目标页面。从而本申请实施例无需开发人员手动分包,以自动分包的方式快速、准确地得到应用程序的分包结构,提升应用程序的分包效率和开发效率,降低应用程序分包的复杂度,以及分包所需的人力资源消耗。
本申请实施例还提供一种电子设备,该电子设备可以为终端、服务器等设备。如图5所示,其示出了本申请实施例所涉及的电子设备的结构示意图,具体来讲:
该电子设备可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403、输入单元404以及通信单元405等部件。本领域技术人员可以理解,图5中示出的电子设备结构并不生成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器401是该电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器402内的软件程序和/或单元,以及调用存储在存储器402内的数据,执行电子设备的各种功能和处理数据。在一些实施例中,处理器401可包括一个或多个处理核心;在一些实施例中,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、展示界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。
存储器402可用于存储软件程序以及单元,处理器401通过运行存储在存储器402的软件程序以及单元,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
电子设备还包括给各个部件供电的电源403,在一些实施例中,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该电子设备还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与对象设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
该电子设备还可包括通信单元405,在一些实施例中通信单元405可以包括无线单元,电子设备可以通过该通信单元405的无线单元进行短距离无线传输,从而为对象提供了无线的宽带互联网访问。比如,该通信单元405可以用于帮助对象收发电子邮件、浏览网页和访问流式媒体等。
尽管未示出,电子设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,电子设备中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:
获取目标应用程序的源代码,并在所述源代码中识别出目标跳转字段,所述目标跳转字段指示多个候选页面之间跳转的信息;
基于所述目标跳转字段,构建所述多个候选页面之间的路由有向图,所述路由有向图表征所述候选页面之间的跳转关系;
基于所述路由有向图,确定每一所述候选页面的路由权重,所述路由权重表征页面的路由调用次数;
基于所述路由权重,在所述候选页面中筛选出至少一个目标页面,所述目标页面包括执行分包操作的候选页面;
在所述源代码中提取出所述目标页面的配置信息和页面加载信息,并基于所述配置信息和页面加载信息,生成所述目标页面的分包文件。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
由上可知,应用本申请实施例,可以在应用程序的源代码中自动、快速地识别出目标跳转字段,并根据目标跳转字段自动筛选出待分包的应用程序的多个候选页面。在确定出多个候选页面之后,可以根据多个候选页面之间的跳转关系构建对应的路由有向图,进而根据路由有向图所表征出的每个候选页面的路由权重,来快速、准确地从多个候选页面中筛选出至少一个需要分包的目标页面。从而本申请实施例无需开发人员手动分包,以自动分包的方式快速、准确地得到应用程序的分包结构,提升应用程序的分包效率和开发效率,降低应用程序分包的复杂度,以及分包所需的人力资源消耗。
为此,本申请实施例提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本申请实施例所提供的任一种应用程序的分包方法中的步骤。例如,该指令可以执行如下步骤:
获取目标应用程序的源代码,并在所述源代码中识别出目标跳转字段,所述目标跳转字段指示多个候选页面之间跳转的信息;
基于所述目标跳转字段,构建所述多个候选页面之间的路由有向图,所述路由有向图表征所述候选页面之间的跳转关系;
基于所述路由有向图,确定每一所述候选页面的路由权重,所述路由权重表征页面的路由调用次数;
基于所述路由权重,在所述候选页面中筛选出至少一个目标页面,所述目标页面包括执行分包操作的候选页面;
在所述源代码中提取出所述目标页面的配置信息和页面加载信息,并基于所述配置信息和页面加载信息,生成所述目标页面的分包文件。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的指令,可以执行本申请实施例所提供的任一种应用程序的分包方法中的步骤,因此,可以实现本申请实施例所提供的任一种应用程序的分包方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本申请实施例所提供的一种应用程序的分包方法、装置、电子设备和存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (13)

1.一种应用程序的分包方法,其特征在于,所述方法包括:获取目标应用程序的源代码,并在所述源代码中识别出目标跳转字段,所述目标跳转字段指示多个候选页面之间跳转的信息;
基于所述目标跳转字段,构建所述多个候选页面之间的路由有向图,所述路由有向图表征所述候选页面之间的跳转关系,其中,包括:基于所述目标跳转字段,确定所述多个候选页面之间的跳转关系信息;将每个候选页面作为节点,并基于所述跳转关系信息,确定所述节点对应的至少一条节点边,以及每个所述节点边的边权重;基于所述节点、所述节点边和所述边权重,生成路由有向图;
基于所述路由有向图,确定每一所述候选页面的路由权重,所述路由权重表征页面的路由调用次数;
基于所述路由权重,在所述候选页面中筛选出至少一个目标页面,所述目标页面包括执行分包操作的候选页面,其中,包括:基于路由权重对所述候选页面进行降序排序,得到候选页面序列;取所述候选页面序列的前分包限制数量个候选页面记为所述目标页面;
在所述源代码中提取出所述目标页面的配置信息和页面加载信息,并基于所述配置信息和页面加载信息,生成所述目标页面的分包文件。
2.根据权利要求1所述的方法,其特征在于,所述基于所述目标跳转字段,确定多个候选页面之间的跳转关系信息,包括:
提取所述目标跳转字段的上下文信息;
基于所述上下文信息,确定所述候选页面的跳转指向信息和跳转次数,所述跳转指向信息指示所述候选页面对应跳转页面;
将所述跳转指向信息和所述跳转次数作为跳转关系信息。
3.根据权利要求2所述的方法,其特征在于,所述确定所述节点对应的至少一条节点边,以及每一所述节点边的边权重,包括:
基于所述每个候选页面的跳转指向信息,确定所述每个候选页面对应的跳转页面;
基于所述跳转页面,确定每个节点的至少一个节点边;
在所述跳转次数中筛选出每一节点边对应的目标跳转次数,并基于所述目标跳转次数,确定每一节点边的边权重。
4.根据权利要求3所述的方法,其特征在于,所述基于所述跳转页面,确定每个节点的至少一个节点边,包括:
获取候选页面的节点,以及所述跳转页面的节点;
基于所述跳转页面相对于所述候选页面的跳转指向,确定所述跳转页面的节点相对于所述候选页面的节点的跳转指向;
基于所述跳转页面的节点相对于所述候选页面的节点的跳转指向,确定所述每个候选页面的节点的至少一个节点边。
5.根据权利要求1所述的方法,其特征在于,所述基于所述路由有向图,确定每一所述候选页面的路由权重,包括:
在所述路由有向图中识别出每一候选页面对应节点的至少一个节点边,得到每一候选页面对应的节点边集合;
将所述节点边集合中每一节点边对应的边权重进行求和,得到每一候选页面的路由权重。
6.根据权利要求1所述的方法,其特征在于,所述基于所述路由权重,在所述候选页面中筛选出至少一个目标页面,包括:
获取用于筛选所述路由权重的权重阈值;
在所述候选页面中筛选出所述路由权重大于所述权重阈值的至少一个候选页面,得到目标页面。
7.根据权利要求1所述的方法,其特征在于,所述在所述源代码中提取出所述目标页面的配置信息和页面加载信息,包括:
从所述源代码中提取所述目标页面的页面路径,并基于所述页面路径,对所述目标页面进行配置,得到所述目标页面的配置信息;
从所述源代码中提取所述目标页面的样式信息和事件绑定信息,得到所述目标页面的页面加载信息。
8.根据权利要求7所述的方法,其特征在于,所述从所述源代码中提取所述目标页面的样式信息和事件绑定信息,包括:
遍历所述目标页面的节点的子节点属性设置信息,所述节点属性设置信息包括样式属性和事件绑定属性;
提取所述样式属性引用的样式类所对应的样式定义,将所述样式定义确定为所述样式信息;
提取所述事件绑定属性的绑定函数所对应的函数实现,将所述函数实现确定为所述事件绑定信息。
9.根据权利要求1所述的方法,其特征在于,所述基于所述配置信息和页面加载信息,生成所述目标页面的分包文件,包括:
将所述配置信息添加至所述应用程序的全局配置文件,以得到初始分包文件;
将所述页面加载信息复制到所述初始分包文件,以得到所述目标页面的分包文件。
10.根据权利要求1所述的方法,其特征在于,所述在所述源代码中识别出目标跳转字段,包括:
获取预设跳转字段对应的至少一个跳转关键字;
在所述源代码中筛选出所述跳转关键字对应的至少一个字段,得到目标跳转字段。
11.一种应用程序的分包装置,其特征在于,所述装置包括:
源代码获取单元,用于获取目标应用程序的源代码,并在所述源代码中识别出目标跳转字段,所述目标跳转字段指示多个候选页面之间跳转的信息;
路由有向图构建单元,用于基于所述目标跳转字段,构建所述多个候选页面之间的路由有向图,所述路由有向图表征所述候选页面之间的跳转关系,其中,所述路由有向图构建单元,具体用于基于所述目标跳转字段,确定所述多个候选页面之间的跳转关系信息;将每个候选页面作为节点,并基于所述跳转关系信息,确定所述节点对应的至少一条节点边,以及每个所述节点边的边权重;基于所述节点、所述节点边和所述边权重,生成路由有向图;
路由权重确定单元,用于基于所述路由有向图,确定每一所述候选页面的路由权重,所述路由权重表征页面的路由调用次数;
目标页面筛选单元,用于基于所述路由权重,在所述候选页面中筛选出至少一个目标页面,所述目标页面包括执行分包操作的候选页面;其中,所述目标页面筛选单元,具体用于基于路由权重对所述候选页面进行降序排序,得到候选页面序列;取所述候选页面序列的前分包限制数量个候选页面记为所述目标页面;
分包文件生成单元,用于在所述源代码中提取出所述目标页面的配置信息和页面加载信息,并基于所述配置信息和页面加载信息,生成所述目标页面的分包文件。
12.一种电子设备,其特征在于,包括:
处理器和存储介质;
所述处理器,用于实现各个指令;
所述存储介质用于储存多条指令,所述指令用于由处理器加载并执行如权利要求1至10中任一项所述的应用程序的分包方法。
13.一种计算机可读存储介质,存储有可执行指令,其特征在于,所述可执行指令被处理器执行时实现权利要求1至10中任一项所述的应用程序的分包方法。
CN202311095304.6A 2023-08-29 2023-08-29 应用程序的分包方法、装置、电子设备及可读存储介质 Active CN116820555B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311095304.6A CN116820555B (zh) 2023-08-29 2023-08-29 应用程序的分包方法、装置、电子设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311095304.6A CN116820555B (zh) 2023-08-29 2023-08-29 应用程序的分包方法、装置、电子设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN116820555A CN116820555A (zh) 2023-09-29
CN116820555B true CN116820555B (zh) 2023-11-28

Family

ID=88122491

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311095304.6A Active CN116820555B (zh) 2023-08-29 2023-08-29 应用程序的分包方法、装置、电子设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN116820555B (zh)

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103927177A (zh) * 2014-04-18 2014-07-16 扬州大学 基于LDA模型和PageRank算法建立特征接口有向图的方法
CN108196930A (zh) * 2018-01-18 2018-06-22 腾讯科技(深圳)有限公司 应用程序处理方法、装置、存储介质和计算机设备
CN110806906A (zh) * 2019-10-30 2020-02-18 腾讯科技(深圳)有限公司 一种Dex分包方法、装置、设备及介质
CN110909015A (zh) * 2019-09-12 2020-03-24 华为技术有限公司 微服务的拆分方法、装置、设备及存储介质
CN111666585A (zh) * 2020-04-16 2020-09-15 北京百度网讯科技有限公司 子应用访问的方法、装置、电子设备以及可读存储介质
WO2021228143A1 (zh) * 2020-05-15 2021-11-18 支付宝(杭州)信息技术有限公司 小程序启动方法、签名方法、装置、服务器及介质
CN113821252A (zh) * 2021-09-24 2021-12-21 深圳市明源云采购科技有限公司 小程序的构建方法、装置、终端设备以及存储介质
CN113961344A (zh) * 2021-10-22 2022-01-21 上海幻电信息科技有限公司 资源处理方法及系统
CN114706616A (zh) * 2022-03-25 2022-07-05 中国建设银行股份有限公司 小程序构建方法和装置
CN115291933A (zh) * 2022-08-01 2022-11-04 北京沃东天骏信息技术有限公司 小程序数据包构建方法、装置、设备及存储介质
CN115373684A (zh) * 2022-08-23 2022-11-22 腾讯科技(深圳)有限公司 一种小程序融合方法、装置、电子设备及存储介质
CN116340659A (zh) * 2023-03-14 2023-06-27 恒生电子股份有限公司 数据处理方法及装置
CN116541069A (zh) * 2023-05-24 2023-08-04 中国工商银行股份有限公司 关键函数评估方法、装置、电子设备、介质和程序产品

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103927177A (zh) * 2014-04-18 2014-07-16 扬州大学 基于LDA模型和PageRank算法建立特征接口有向图的方法
CN108196930A (zh) * 2018-01-18 2018-06-22 腾讯科技(深圳)有限公司 应用程序处理方法、装置、存储介质和计算机设备
CN110909015A (zh) * 2019-09-12 2020-03-24 华为技术有限公司 微服务的拆分方法、装置、设备及存储介质
CN110806906A (zh) * 2019-10-30 2020-02-18 腾讯科技(深圳)有限公司 一种Dex分包方法、装置、设备及介质
CN111666585A (zh) * 2020-04-16 2020-09-15 北京百度网讯科技有限公司 子应用访问的方法、装置、电子设备以及可读存储介质
WO2021228143A1 (zh) * 2020-05-15 2021-11-18 支付宝(杭州)信息技术有限公司 小程序启动方法、签名方法、装置、服务器及介质
CN113821252A (zh) * 2021-09-24 2021-12-21 深圳市明源云采购科技有限公司 小程序的构建方法、装置、终端设备以及存储介质
CN113961344A (zh) * 2021-10-22 2022-01-21 上海幻电信息科技有限公司 资源处理方法及系统
CN114706616A (zh) * 2022-03-25 2022-07-05 中国建设银行股份有限公司 小程序构建方法和装置
CN115291933A (zh) * 2022-08-01 2022-11-04 北京沃东天骏信息技术有限公司 小程序数据包构建方法、装置、设备及存储介质
CN115373684A (zh) * 2022-08-23 2022-11-22 腾讯科技(深圳)有限公司 一种小程序融合方法、装置、电子设备及存储介质
CN116340659A (zh) * 2023-03-14 2023-06-27 恒生电子股份有限公司 数据处理方法及装置
CN116541069A (zh) * 2023-05-24 2023-08-04 中国工商银行股份有限公司 关键函数评估方法、装置、电子设备、介质和程序产品

Also Published As

Publication number Publication date
CN116820555A (zh) 2023-09-29

Similar Documents

Publication Publication Date Title
CN109067890B (zh) 一种基于docker容器的CDN节点边缘计算系统
WO2023093414A1 (zh) 微应用的开发方法、装置、设备、存储介质及程序产品
CN112036577B (zh) 基于数据形式的应用机器学习的方法、装置和电子设备
CN113126990A (zh) 一种页面开发方法、装置、设备及存储介质
CN110213105A (zh) 一种跨平台微应用创建方法
CN114036439A (zh) 网站搭建方法、装置、介质及电子设备
CN114116065A (zh) 获取拓扑图数据对象的方法、装置、及电子设备
CN111666100A (zh) 软件框架生成方法、装置、电子设备及存储介质
CN115202729A (zh) 基于容器服务的镜像生成方法、装置、设备及介质
Bandelloni et al. Dynamic generation of web migratory interfaces
CN109063059A (zh) 行为日志处理方法、装置及电子设备
CN112395108A (zh) 一种bim元件模型的调用方法及装置
CN116820555B (zh) 应用程序的分包方法、装置、电子设备及可读存储介质
CN114637499B (zh) 可视化组件处理方法、装置、设备及介质
CN112181409A (zh) 一种应用构建方法、应用渲染方法及装置
CN112114805B (zh) 页面生成方法、装置、设备
CN111124386B (zh) 基于Unity的动画事件处理方法、装置、设备和存储介质
CN113961191A (zh) 一种自动注册楼层化代码方法及装置、存储介质
CN114327709A (zh) 一种控制页面生成方法、装置、智能设备及存储介质
Alaa et al. Design criteria and software metrics for efficient and effective web-enabled mobile applications
CN110465093A (zh) 一种基于Unity的包体冗余资源分析方法及其装置
CN110989982A (zh) 一种带返回值函数的积木块构建方法、装置、存储介质和处理器
CN110780983A (zh) 任务异常处理方法、装置、计算机设备以及存储介质
CN110837367A (zh) 用户界面处理方法、装置及电子设备
CN117251231B (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40092346

Country of ref document: HK