CN117130642A - 子程序更新方法以及相关设备 - Google Patents
子程序更新方法以及相关设备 Download PDFInfo
- Publication number
- CN117130642A CN117130642A CN202210553269.7A CN202210553269A CN117130642A CN 117130642 A CN117130642 A CN 117130642A CN 202210553269 A CN202210553269 A CN 202210553269A CN 117130642 A CN117130642 A CN 117130642A
- Authority
- CN
- China
- Prior art keywords
- target
- code file
- component
- page
- logic code
- 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 76
- 238000011161 development Methods 0.000 claims abstract description 37
- 238000012986 modification Methods 0.000 claims abstract description 27
- 230000004048 modification Effects 0.000 claims abstract description 27
- 238000013507 mapping Methods 0.000 claims description 20
- 230000001419 dependent effect Effects 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 11
- 230000000694 effects Effects 0.000 abstract description 13
- 238000013473 artificial intelligence Methods 0.000 abstract description 2
- 238000005516 engineering process Methods 0.000 abstract description 2
- 230000018109 developmental process Effects 0.000 description 33
- 230000006870 function Effects 0.000 description 24
- 230000008569 process Effects 0.000 description 14
- 230000008859 change Effects 0.000 description 10
- 238000012545 processing Methods 0.000 description 9
- 230000001960 triggered effect Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 238000010276 construction Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 2
- 239000000470 constituent Substances 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013497 data interchange Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000008140 language development Effects 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/48—Incremental compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种子程序更新方法以及相关设备,相关实施例可应用于云技术、人工智能、智慧交通等各种场景;可以接收在开发侧针对目标子程序的逻辑代码文件的修改更新操作;若修改后的目标逻辑代码文件不是子程序的入口逻辑代码文件,确定所述目标逻辑代码文件关联的目标页面;当目标页面中的原始组件当前处于已加载状态时,基于目标逻辑代码文件注册目标组件;将原始组件替换为目标组件;对目标组件的组件信息进行编译处理,以更新展示目标页面,更新后目标页面包括目标组件。本申请可以在子程序的逻辑代码文件修改后,通过重新注册目标组件,并用目标组件替换掉原始组件,来实现目标页面的热更新效果,这样可以降低更新耗时,提高开发效率。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种子程序更新方法以及相关设备。
背景技术
小程序,是指一种基于特定编程语言开发完成,无需下载和安装,就可以使用的移动端应用程序,其可以运行在跨平台移动客户端上。小程序的最大特点是使用便捷,小程序通常是以某个应用软件作为运行平台来实现的,用户通过该应用软件扫一扫该小程序对应的二维码或者在该应用软件中搜索一下即可打开小程序,无需手动在移动端的操作系统中安装,基于小程序的特点,可以在一定程度上解决用户不想在终端上安装太多应用软件的问题。
目前,在小程序开发过程中,若开发者修改了某个页面的逻辑代码文件、且该页面处于展示状态下,则需要重新操作才能注入修改后逻辑代码文件对应的编译结果,也即需要重启小程序进入更新后的该页面,对于开发者来说,这样会带来比较繁琐的操作,更新耗时相对较高,开发效率较低。
发明内容
本申请实施例提供一种子程序更新方法以及相关设备,相关设备可以包括子程序更新装置、电子设备、计算机可读存储介质和计算机程序产品,可以实现目标页面的热更新效果,降低更新耗时,提高开发效率。
本申请实施例提供一种子程序更新方法,包括:
接收在开发侧针对目标子程序的逻辑代码文件的修改更新操作;
若修改后的目标逻辑代码文件不是子程序的入口逻辑代码文件,确定所述目标逻辑代码文件关联的目标页面;
当所述目标页面中的原始组件当前处于已加载状态时,基于所述目标逻辑代码文件注册目标组件;
将与所述目标逻辑代码文件对应的原始组件替换为所述目标逻辑代码文件对应的目标组件;
对所述目标组件的组件信息进行编译处理,以更新展示所述目标页面,更新后的目标页面包括所述目标组件。
相应的,本申请实施例提供一种子程序更新装置,包括:
接收单元,用于接收在开发侧针对目标子程序的逻辑代码文件的修改更新操作;
确定单元,用于若修改后的目标逻辑代码文件不是子程序的入口逻辑代码文件,确定所述目标逻辑代码文件关联的目标页面;
注册单元,用于当所述目标页面中的原始组件当前处于已加载状态时,基于所述目标逻辑代码文件注册目标组件;
替换单元,用于将与所述目标逻辑代码文件对应的原始组件替换为所述目标逻辑代码文件对应的目标组件;
更新单元,用于对所述目标组件的组件信息进行编译处理,以更新展示所述目标页面,更新后的目标页面包括所述目标组件。
可选的,在本申请的一些实施例中,该子程序更新装置还可以包括编译单元和重新启动单元,如下:
所述编译单元,用于若修改后的目标逻辑代码文件为子程序的入口逻辑代码文件,对所述目标逻辑代码文件进行编译处理;
重新启动单元,用于基于编译结果,重新启动所述目标子程序,以通过重新启动后的目标子程序,展示所述目标逻辑代码文件对应的更新后页面。
可选的,在本申请的一些实施例中,所述非子程序的入口逻辑代码文件包括页面入口逻辑代码文件和非页面入口逻辑代码文件;
所述确定单元可以包括第一确定子单元和第二确定子单元,如下:
所述第一确定子单元,用于若修改后的目标逻辑代码文件为页面入口逻辑代码文件,将所述目标逻辑代码文件对应的页面确定为目标页面;
第二确定子单元,用于若修改后的目标逻辑代码文件为非页面入口逻辑代码文件,对所述目标逻辑代码文件进行页面依赖关系的分析,得到所述目标逻辑代码文件对应的依赖页面,将所述依赖页面确定为目标页面。
可选的,在本申请的一些实施例中,所述替换单元可以包括第一替换子单元和第二替换子单元,如下:
所述第一替换子单元,用于将与所述目标逻辑代码文件对应的原始组件的组件逻辑替换为所述目标逻辑代码文件对应的目标组件的组件逻辑;
第二替换子单元,用于将与所述目标逻辑代码文件对应的原始组件的组件实例替换为所述目标逻辑代码文件对应的目标组件的组件实例。
可选的,在本申请的一些实施例中,所述第二替换子单元具体可以用于从所述目标子程序的逻辑代码文件中获取所述原始组件对应的组件实例;基于所述目标逻辑代码文件对应的目标组件的组件属性,构建所述目标组件对应的组件实例;将所述原始组件对应的组件实例替换为所述目标组件的组件实例。
可选的,在本申请的一些实施例中,步骤“基于所述目标逻辑代码文件对应的目标组件的组件属性,构建所述目标组件对应的组件实例”,可以包括:
根据所述目标逻辑代码文件对应的目标组件的属性和属性值之间的关联关系,构建所述目标组件对应的映射关系集合;
基于所述映射关系集合,构建所述目标组件对应的组件实例。
可选的,在本申请的一些实施例中,所述确定单元可以包括执行子单元和第三确定子单元,如下:
所述执行子单元,用于当所述修改更新操作携带有热重载的指令信息时,执行针对修改后的目标逻辑代码文件的热重载流程;
第三确定子单元,用于若所述目标逻辑代码文件不是子程序的入口逻辑代码文件,通过所述热重载流程确定所述目标逻辑代码文件关联的目标页面。
本申请实施例提供的一种电子设备,包括处理器和存储器,所述存储器存储有多条指令,所述处理器加载所述指令,以执行本申请实施例提供的子程序更新方法中的步骤。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现本申请实施例提供的子程序更新方法中的步骤。
此外,本申请实施例还提供一种计算机程序产品,包括计算机程序或指令,该计算机程序或指令被处理器执行时实现本申请实施例提供的子程序更新方法中的步骤。
本申请实施例提供了一种子程序更新方法以及相关设备,可以接收在开发侧针对目标子程序的逻辑代码文件的修改更新操作;若修改后的目标逻辑代码文件不是子程序的入口逻辑代码文件,确定所述目标逻辑代码文件关联的目标页面;当所述目标页面中的原始组件当前处于已加载状态时,基于所述目标逻辑代码文件注册目标组件;将与所述目标逻辑代码文件对应的原始组件替换为所述目标逻辑代码文件对应的目标组件;对所述目标组件的组件信息进行编译处理,以更新展示所述目标页面,更新后的目标页面包括所述目标组件。本申请可以在子程序的逻辑代码文件修改后,通过重新注册目标组件,并用目标组件替换掉原始组件,来实现目标页面的热更新效果,这样可以降低更新耗时,提高开发效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本申请实施例提供的子程序更新方法的场景示意图;
图1b是本申请实施例提供的子程序更新方法的流程图;
图1c是本申请实施例提供的子程序更新方法的说明图;
图1d是本申请实施例提供的子程序更新方法的另一说明图;
图1e是本申请实施例提供的子程序更新方法的另一说明图;
图1f是本申请实施例提供的子程序更新方法的另一流程图;
图1g是本申请实施例提供的子程序更新方法的逻辑示意图;
图2是本申请实施例提供的子程序更新方法的另一流程图;
图3是本申请实施例提供的子程序更新装置的结构示意图;
图4是本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供一种子程序更新方法以及相关设备,相关设备可以包括子程序更新装置、电子设备、计算机可读存储介质和计算机程序产品。该子程序更新装置具体可以集成在电子设备中,该电子设备可以是终端或服务器等设备。
可以理解的是,本实施例的子程序更新方法可以是在终端上执行的,也可以是在服务器上执行,还可以由终端和服务器共同执行的。以上举例不应理解为对本申请的限制。
如图1a所示,以终端和服务器共同执行子程序更新方法为例。本申请实施例提供的子程序更新系统包括终端10和服务器11等;终端10与服务器11之间通过网络连接,比如,通过有线或无线网络连接等,其中,子程序更新装置可以集成在终端中。
其中,终端10,可以用于:在开发侧针对目标子程序的逻辑代码文件进行修改更新;向服务器11发送所述修改更新操作,若修改后的目标逻辑代码文件不是子程序的入口逻辑代码文件,触发服务器11确定所述目标逻辑代码文件关联的目标页面;当所述目标页面中的原始组件当前处于已加载状态时,基于所述目标逻辑代码文件注册目标组件;将与所述目标逻辑代码文件对应的原始组件替换为所述目标逻辑代码文件对应的目标组件。终端10还可以接收服务器11发送的目标组件的组件信息,并对所述目标组件的组件信息进行编译处理,以更新展示所述目标页面,更新后的目标页面包括所述目标组件。其中,终端10可以包括手机、智能电视、平板电脑、笔记本电脑、或个人计算机(PC,Personal Computer)等。终端10上还可以设置客户端,该客户端可以是应用程序客户端或浏览器客户端等等。
其中,服务器11,可以用于:接收在终端10针对目标子程序的逻辑代码文件的修改更新操作;若修改后的目标逻辑代码文件不是子程序的入口逻辑代码文件,确定所述目标逻辑代码文件关联的目标页面;当所述目标页面中的原始组件当前处于已加载状态时,基于所述目标逻辑代码文件注册目标组件;将与所述目标逻辑代码文件对应的原始组件替换为所述目标逻辑代码文件对应的目标组件;向终端10发送目标组件的组件信息。其中,服务器11可以是单台服务器,也可以是由多个服务器组成的服务器集群或云服务器。本申请所公开的子程序更新方法或装置,其中多个服务器可组成为一区块链,而服务器为区块链上的节点。
上述服务器11中将原始组件替换为目标组件等步骤,也可以由终端10执行。
以下分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
本实施例将从子程序更新装置的角度进行描述,该子程序更新装置具体可以集成在电子设备中,该电子设备可以是服务器或终端等设备。
本申请实施例的子程序更新方法可以应用于小程序的开发场景中。本实施例可应用于云技术、人工智能、智慧交通、辅助驾驶等各种场景。
如图1b所示,该子程序更新方法的具体流程可以如下:
101、接收在开发侧针对目标子程序的逻辑代码文件的修改更新操作。
其中,目标子程序具体可以为当前处于开发调试阶段的子程序,开发者在进行子程序的开发调试时,通常需要一边修改子程序的逻辑代码,一边预览子程序相应的页面调试效果。
目前的相关技术中,子程序开发者在修改更新目标子程序的逻辑代码文件后,开发者工具会调用目标子程序的基础库接口进行应用重载,也就是说,修改子程序的某个页面代码之后,需要通过重启子程序来重新操作进入该页面,这样会给子程序开发者带来比较繁琐的操作,且更新耗时较长,导致开发体验较差。
本申请提供的子程序更新方法可以在子程序的逻辑代码文件变更之后,通过重新注册组件页面,用新组件替换掉原有组件,以此达到热更新的效果,这样更新耗时可以控制到很短,提高了子程序开发者的开发效率,并提高了开发体验。这里的热更新(也可以称为热重载)是指一种不需要重新启动子程序就可以对页面进行更新的更新方式。
本实施例中,子程序可以为轻应用、小程序等等,本实施例对此不作限制。
其中,轻应用是一种无需下载、即搜即用的全功能的应用程序,它不仅可以支持用户搜索时实现调用,还支持用户主动订阅。如果用户有订阅需求并添加应用,相关开发者就能够将用户沉淀下来,并对用户进行持续、精准的信息和服务推送。
其中,小程序(mini program)是一种基于特定编程语言开发完成的能够实现某种业务功能,但并不需要下载安装即可使用的应用程序或脚本文件。小程序通常是以某个应用软件作为运行平台来实现的,用户可以通过该应用软件的扫码功能来打开小程序,或者也可以在该应用软件中搜索小程序。
其中,开发者工具是一种帮助开发者简单高效地开发和调试子程序的工具。
具体地,本实施例中,逻辑代码文件中记载了目标子程序对应的各个页面的逻辑代码,逻辑代码可用于处理相应子程序页面中触发的事件,还可以用于进行包括数据处理在内的其它逻辑处理。逻辑代码文件可以是脚本文件,如JavaScript脚本文件。可选地,逻辑代码文件可以是后缀名为.js的文件。
其中,JavaScript(简称“JS”)是一种具有函数优先的轻量级、解释型或即时编译型的编程语言。
102、若修改后的目标逻辑代码文件不是子程序的入口逻辑代码文件,确定所述目标逻辑代码文件关联的目标页面。
其中,目标逻辑代码文件为目标子程序对应修改后的逻辑代码文件,它可以是js格式的文件,简称为js文件。具体地,目标子程序可以对应多个逻辑代码文件,目标逻辑代码文件可以指多个逻辑代码文件中修改了的逻辑代码文件。
其中,子程序的入口逻辑代码文件可以用于监测并处理子程序的生命周期函数、声明全局变量,还可以调用框架提供的丰富的API(Application Programming Interface,应用程序编程接口)。子程序的入口逻辑代码文件可以视为所述目标子程序的全局配置文件;可选地,子程序的入口逻辑代码文件可以是后缀名为.js的文件,示例性地,子程序的入口逻辑代码文件为app.js,app.js是子程序的脚本代码,相当于程序的入口。app.js在子程序启动的时候会触发子程序声明周期的方法,若需要在子程序加载的时候执行登陆,读取信息等事件,可以在这里执行相关的操作。
其中,全局配置文件是指对子程序整体进行配置的文件,具体可以包括配置子程序页面配置文件的路径、子程序窗口表现形式以及子程序的网络超时阈值等的子程序全局配置信息。
可选地,本实施例中,步骤“若修改后的目标逻辑代码文件不是子程序的入口逻辑代码文件,确定所述目标逻辑代码文件关联的目标页面”,可以包括:
当所述修改更新操作携带有热重载的指令信息时,执行针对修改后的目标逻辑代码文件的热重载流程;
若所述目标逻辑代码文件不是子程序的入口逻辑代码文件,通过所述热重载流程确定所述目标逻辑代码文件关联的目标页面。
在一具体实施例中,目标子程序的开发者工具可以包含用于供子程序开发者选择是否进行热重载的控件,具体地,如图1c所示,为开发者工具侧中的热重载控件,它可以以“启动代码自动热重载”对应的图标呈现,它是自动热重载的开关;若子程序开发者在开发者工具勾选“启用代码自动热重载”,即可在修改目标子程序的目标逻辑代码文件之后,执行针对目标子程序的热重载流程。若子程序开发者在开发者工具侧未勾选“启用代码自动热重载”,则在修改目标子程序的目标逻辑代码文件之后,不执行热重载流程,需要通过重新启动目标子程序的方式来展示更新后的页面。
其中,若子程序开发者在开发者工具勾选“启用代码自动热重载”,则可以生成热重载的指令信息,然后,子程序开发者对目标子程序的逻辑代码文件进行编辑,当编辑保存所修改后的目标逻辑代码文件后,便可以触发对相关页面的自动更新,具体地,该修改更新操作可以携带有热重载的指令信息,当子程序开发者保存所修改后的目标逻辑代码文件时,会触发热重载的流程,基于该热重载的流程,可以当开发者工具收到逻辑代码文件的变更信息之后,将变更的目标逻辑代码文件的路径以及内容传递给子程序基础库,在基础库接收到变更的目标逻辑代码文件的路径以及内容之后,通过重新注册新的页面组件,用新组件替换原有组件,以此达到热更新的效果。
这里的热重载流程具体可以是只对修改了的目标逻辑代码文件进行重新编译,若目标逻辑代码文件的相应页面当前处于已加载显示的状态,可以将目标逻辑代码文件的编译结果直接替换到相应页面上;而不需要“对目标子程序对应的所有逻辑代码文件进行编译,并通过重启子程序的方式来重新操作进入更新后的相应页面”。
可选地,在一些实施例中,热重载流程不支持json格式的文件,其中,json格式是一种轻量级的数据交换格式,其采用完全独立于编程语言的文本格式来存储和表示数据。
具体地,如图1d所示,为开发者工具侧展示的目标子程序的逻辑代码文件的内容,此时逻辑代码文件中有一个data(数据)属性text(文本),其内容是“JavaScript代码自动热重载”,当开启热重载的开关后,若将text的内容改为“JavaScript代码自动热重载test”,如图1e所示,为修改后的目标逻辑代码文件,假如目标逻辑代码页面关联的目标页面此时处于展示状态,则该目标页面会自动刷新,直接渲染出来,不会进行重启子程序的操作,这样能够使得开发更加便利。
可选地,本实施例中,所述非子程序的入口逻辑代码文件包括页面入口逻辑代码文件和非页面入口逻辑代码文件;
步骤“若修改后的目标逻辑代码文件不是子程序的入口逻辑代码文件,确定所述目标逻辑代码文件关联的目标页面”,可以包括:
若修改后的目标逻辑代码文件为页面入口逻辑代码文件,将所述目标逻辑代码文件对应的页面确定为目标页面;
若修改后的目标逻辑代码文件为非页面入口逻辑代码文件,对所述目标逻辑代码文件进行页面依赖关系的分析,得到所述目标逻辑代码文件对应的依赖页面,将所述依赖页面确定为目标页面。
其中,页面入口逻辑代码文件和非页面入口逻辑代码文件不属于子程序的入口逻辑代码文件,二者可以视为目标子程序的局部配置文件。本实施例中,页面入口逻辑代码文件可以是某个子程序页面对应的逻辑代码文件,非页面入口逻辑代码文件可以是组件的入口逻辑代码文件,也可以是一些子程序页面依赖的逻辑代码文件。
具体地,目标子程序的每个页面都可以对应有逻辑代码文件,某个子程序页面对应的逻辑代码文件中可以记载处理该子程序页面中触发事件的逻辑代码等。可选地,逻辑代码文件是后缀名为.js的文件,示例性地,某个子程序页面的逻辑代码文件为page.js,page.js也即该子程序页面的页面入口逻辑代码文件。
可选地,本实施例中,该子程序更新方法还可以包括:
若修改后的目标逻辑代码文件为子程序的入口逻辑代码文件,对所述目标逻辑代码文件进行编译处理;
基于编译结果,重新启动所述目标子程序,以通过重新启动后的目标子程序,展示所述目标逻辑代码文件对应的更新后页面。
其中,若被修改的目标逻辑代码文件为子程序的入口逻辑代码文件(具体也即app.js文件),app.js文件是目标子程序的全局文件,在这种情况下,不能执行针对目标逻辑代码文件的热重载,只能对目标子程序修改后的逻辑代码文件进行编译处理,并通过重新启动目标子程序的方式将编译结果注入相应的页面。
在一具体实施例中,子程序开发者在开发者工具中开启自动热重载的开关,启动自动热重载,开发者工具开始监测目标子程序的逻辑代码文件是否发生了变化;响应于子程序开发者对逻辑代码文件的修改,开发者工具监测到目标子程序的逻辑代码文件的变化,这个时候,开发者工具会自动判断当前修改的目标逻辑代码文件的类型,这里分三种情况:
a)若当前修改的目标逻辑代码文件为子程序的入口逻辑代码文件,即子程序入口js,则调用基础库接口进行应用重载;
b)若当前修改的目标逻辑代码文件为页面入口逻辑代码文件,也即监测到页面入口js变化,则调用基础库updateAppCode(更新应用代码)接口进行热更新该目标逻辑代码文件对应的页面;
c)若当前修改的目标逻辑代码文件为非页面入口逻辑代码文件,也即监测到非页面入口js变化,则分析出所有依赖该目标逻辑代码文件的页面,并调用基础库updateAppCode接口进行热更新所有依赖页面。
103、当所述目标页面中的原始组件当前处于已加载状态时,基于所述目标逻辑代码文件注册目标组件。
其中,目标页面中的原始组件即目标子程序的逻辑代码文件修改前,目标页面中的组件。
其中,组件(Component)是对数据和方法的简单封装。具体地,组件可以是子程序页面的组成单元,具有视觉形态,组件还可以封装有用于处理针对该组件所触发事件的逻辑代码。组件包括但不限于按钮(button)组件、进度条(progress)组件、文本(text)组件、表单(form)组件、滑动(slider)组件等等。
其中,组件所触发的事件,是操作该组件所触发的事件。事件可以用于描述子程序页面中发生的操作,事件可分为多种事件类型,如触摸事件、表单提交(Submit)事件、输入事件或者滚动(Scroll)事件等。
其中,目标页面中的原始组件处于已加载状态,具体可以是处于已加载并显示的状态。
本实施例中,若目标页面中的原始组件当前处于未加载状态,则不需要进行热重载。
其中,基于目标逻辑代码文件注册一个新的目标组件,具体可以是基于目标逻辑代码文件,定义目标组件的构造选项等。通过注册,可以获得目标组件对应的组件逻辑和组件属性等。
104、将与所述目标逻辑代码文件对应的原始组件替换为所述目标逻辑代码文件对应的目标组件。
具体地,可以是将与所述目标逻辑代码文件对应的原始组件的组件信息替换为所述目标逻辑代码文件对应的目标组件的组件信息。其中,与目标逻辑代码文件对应的原始组件是指目标逻辑代码文件修改前对应的组件。在一些实施例中,逻辑代码文件的变更涉及到多个组件的变更,则可以根据修改后的目标逻辑代码文件,注册多个目标组件,对于每个原始组件,可以确定其变更后对应的目标组件,再将该原始组件的组件信息替换为对应的目标组件的组件信息。
可选地,本实施例中,步骤“将与所述目标逻辑代码文件对应的原始组件替换为所述目标逻辑代码文件对应的目标组件”,可以包括:
将与所述目标逻辑代码文件对应的原始组件的组件逻辑替换为所述目标逻辑代码文件对应的目标组件的组件逻辑;
将与所述目标逻辑代码文件对应的原始组件的组件实例替换为所述目标逻辑代码文件对应的目标组件的组件实例。
其中,组件逻辑可以包括组件的注册点等信息。原始组件的注册点可以指原始组件在结构树中的路径。将原始组件的组件逻辑替换为目标组件的组件逻辑,具体可以是用目标组件的路径替换掉原始组件的路径。
可选地,本实施例中,步骤“将与所述目标逻辑代码文件对应的原始组件的组件实例替换为所述目标逻辑代码文件对应的目标组件的组件实例”,可以包括:
从所述目标子程序的逻辑代码文件中获取所述原始组件对应的组件实例;
基于所述目标逻辑代码文件对应的目标组件的组件属性,构建所述目标组件对应的组件实例;
将所述原始组件对应的组件实例替换为所述目标组件的组件实例。
其中,组件实例可以是指的是某目录中的一个例子,在面向对象程序设计中,“类”在实例化之后叫做一个实例。具体地,组件实例是为了完成某一具体功能而创建的一套运行程序,组件实例能够根据传入的参数和组件构建内部逻辑运行,实现某一具体功能,这里所说的某一具体功能可以为业务网页界面功能。
具体地,可以先创建目标组件的实例对象,并将目标组件对应的构造选项中的各属性值直接赋值给新创建的实例对象,得到目标组件的组件实例。
可选地,本实施例中,步骤“基于所述目标逻辑代码文件对应的目标组件的组件属性,构建所述目标组件对应的组件实例”,可以包括:
根据所述目标逻辑代码文件对应的目标组件的属性和属性值之间的关联关系,构建所述目标组件对应的映射关系集合;
基于所述映射关系集合,构建所述目标组件对应的组件实例。
其中,映射关系集合具体可以是一个映射关系表,该映射关系表可以是一个二维数据表,两个维度分别是目标组件对应的配置项属性定义和配置属性值。
其中,可以根据该映射关系集合,通过数据绑定实现对所述目标组件对应的组件实例的构建,其中,数据绑定是指将一个用户界面元素(具体也即组件)的属性和属性值绑定到一个类型实例上的某个属性的方法。
在一具体实施例中,当确定了修改后的目标逻辑代码文件关联的目标页面后,可以调用基础库updateAppCode接口对该目标页面进行热更新,其具体过程如下:
1.基础库接收到updateAppCode调用,如果目标逻辑代码文件的参数路径PATH对应一个已加载的组件(也即上述实施例中所述的原始组件),那么可以进行以下热重载的操作:
a)重新使用registerElement(一种元素注册函数)注册一个新的目标组件,并用目标组件的注册点替换掉原有组件(或者说原始组件)的注册点;
b)通过深度优先搜索找到所有目标页面中原始组件的所有实例;
c)对原始组件的每个实例进行替换:
i.取出目标组件的所有属性和属性值,构成一个映射关系表;
ii.创建一个目标组件的实例对象,并使用setData(一种数据设置函数)设置上述映射关系表,得到目标组件的组件实例;
iii.使用replaceElement(一种元素替换函数)将原始组件的组件实例替换为目标组件的组件实例;
2.在基础库更新实例之后,目标页面基于基础库的组件数据重新加载,就可以在目标页面看到热更新的效果。
其中,深度优先搜索(Depth First Search,dfs)属于图算法的一种,是一个针对图和树的遍历算法;利用深度优先搜索算法可以产生目标图的相应拓扑排序表,利用拓扑排序表可以更方便地解决很多相关的图论问题,如最大路径问题等等。
其中,参数PATH具体可以是目标逻辑代码文件的修改路径信息。
105、对所述目标组件的组件信息进行编译处理,以更新展示所述目标页面,更新后的目标页面包括所述目标组件。
本申请提供的子程序更新方法可以提高子程序开发者开发子程序的速度,让子程序开发者在进行代码编辑调试时更加顺畅,提高开发效率。
在一具体实施例中,由于热重载是在开发者工具上操作的,所以需要在开发者工具侧新增热重载的逻辑,又由于不是所有开发者都需要热重载的功能,所以开发者工具提供了开关供开发者自行选择是否开启热重载。默认情况下是不开启热重载的,当开发者勾选“启用代码自动热重载”之后,开发者工具才会开启热重载的逻辑,当开发者编辑完逻辑代码文件之后,保存修改后的目标逻辑代码文件,此时就会触发开发者工具的热重载逻辑。如图1f所示,为热重载的整体流程。
其中,具体地,当开发者保存修改后的目标逻辑代码文件时,开发者工具接收到代码变化时会执行热更新的逻辑,如图1g所示为开发者工具进行热重载的逻辑,具体描述如下:
1.开发者工具判断当前修改的目标逻辑代码文件的文件类型,分3种情况处理:
a)若当前修改的目标逻辑代码文件为子程序的入口逻辑代码文件,即监测到app.js变化时,直接调用基础库应用重载接口进行应用重载;
b)若当前修改的目标逻辑代码文件为页面入口逻辑代码文件,也即监测到页面入口js变化,调用updateAppCode更新该目标逻辑代码文件对应的页面;
c)若当前修改的目标逻辑代码文件为非页面入口逻辑代码文件,也即监测到非页面入口js变化,分析出所有依赖该js文件(即目标逻辑代码文件)的页面,调用基础库updateAppCode接口更新所有依赖页面;
2.开发者工具调用基础库提供的updateAppCode(PATH,CONTENT)接口来进行代码热更新,携带的参数为PATH和CONTENT,PATH表示修改的目标逻辑代码文件的地址,CONTENT表示修改的目标逻辑代码文件的内容。
当开发者工具调用updateAppCode之后,此时的流程就走到了基础库的热更新逻辑,如果参数PATH对应一个已加载的组件(也即上述实施例中所述的原始组件)js,那么进行以下热重载的操作:
1.重新使用registerElement注册一个新的目标组件,并用目标组件的注册点替换掉原有组件的注册点;
2.找到所有页面中原有组件的所有实例;
3.对原始组件的每个实例进行替换:
a)取出目标组件的所有属性和属性值,构成一个映射关系表;
b)创建一个目标组件的实例对象,并使用setData设置上述映射关系表,得到目标组件的组件实例;
c)使用replaceElement将原始组件的组件实例替换为目标组件的组件实例;
在基础库更新实例之后,目标页面基于基础库的组件数据重新加载,就可以在目标页面看到热更新的效果。
其中,js可以指子程序开发框架的逻辑层使用JavaScript引擎为子程序提供开发者JavaScript代码的运行环境以及子程序的特有功能。
由上可知,本实施例可以接收在开发侧针对目标子程序的逻辑代码文件的修改更新操作;若修改后的目标逻辑代码文件不是子程序的入口逻辑代码文件,确定所述目标逻辑代码文件关联的目标页面;当所述目标页面中的原始组件当前处于已加载状态时,基于所述目标逻辑代码文件注册目标组件;将与所述目标逻辑代码文件对应的原始组件替换为所述目标逻辑代码文件对应的目标组件;对所述目标组件的组件信息进行编译处理,以更新展示所述目标页面,更新后的目标页面包括所述目标组件。本申请可以在子程序的逻辑代码文件修改后,通过重新注册目标组件,并用目标组件替换掉原始组件,来实现目标页面的热更新效果,这样可以降低更新耗时,提高开发效率。
根据前面实施例所描述的方法,以下将以该子程序更新装置具体集成在终端举例作进一步详细说明。
本申请实施例提供一种子程序更新方法,如图2所示,该子程序更新方法的具体流程可以如下:
201、终端接收在开发侧针对目标子程序的逻辑代码文件的修改更新操作。
本申请提供的子程序更新方法可以在子程序的逻辑代码文件变更之后,通过重新注册组件页面,用新组件替换掉原有组件,以此达到热更新的效果,这样更新耗时可以控制到很短,提高了子程序开发者的开发效率,并提高了开发体验。这里的热更新(也可以称为热重载)是指一种不需要重新启动子程序就可以对页面进行更新的更新方式。
具体地,本实施例中,逻辑代码文件中记载了目标子程序对应的各个页面的逻辑代码,逻辑代码可用于处理相应子程序页面中触发的事件,还可以用于进行包括数据处理在内的其它逻辑处理。逻辑代码文件可以是脚本文件,如JavaScript脚本文件。可选地,逻辑代码文件可以是后缀名为.js的文件。
202、终端判断修改后的目标逻辑代码文件是否为子程序的入口逻辑代码文件,若是,执行步骤203;若不是,执行步骤204。
其中,目标逻辑代码文件为目标子程序对应修改后的逻辑代码文件,它可以是js格式的文件,简称为js文件。具体地,目标子程序可以对应多个逻辑代码文件,目标逻辑代码文件可以指多个逻辑代码文件中修改了的逻辑代码文件。
其中,子程序的入口逻辑代码文件可以用于监测并处理子程序的生命周期函数、声明全局变量,还可以调用框架提供的丰富的API(Application Programming Interface,应用程序编程接口)。可选地,子程序的入口逻辑代码文件可以是后缀名为.js的文件,示例性地,子程序的入口逻辑代码文件为app.js,app.js是子程序的脚本代码,相当于程序的入口。app.js在子程序启动的时候会触发子程序声明周期的方法,若需要在子程序加载的时候执行登陆,读取信息等事件,可以在这里执行相关的操作。
203、终端对所述目标逻辑代码文件进行编译处理;基于编译结果,重新启动所述目标子程序,以通过重新启动后的目标子程序,展示所述目标逻辑代码文件对应的更新后页面,结束流程。
其中,若被修改的目标逻辑代码文件为子程序的入口逻辑代码文件(具体也即app.js文件),app.js文件是目标子程序的全局文件,在这种情况下,不能执行针对目标逻辑代码文件的热重载,只能对目标子程序修改后的逻辑代码文件进行编译处理,并通过重新启动目标子程序的方式将编译结果注入相应的页面。
204、终端确定所述目标逻辑代码文件关联的目标页面。
可选地,本实施例中,所述非子程序的入口逻辑代码文件包括页面入口逻辑代码文件和非页面入口逻辑代码文件;
步骤“若修改后的目标逻辑代码文件不是子程序的入口逻辑代码文件,确定所述目标逻辑代码文件关联的目标页面”,可以包括:
若修改后的目标逻辑代码文件为页面入口逻辑代码文件,将所述目标逻辑代码文件对应的页面确定为目标页面;
若修改后的目标逻辑代码文件为非页面入口逻辑代码文件,对所述目标逻辑代码文件进行页面依赖关系的分析,得到所述目标逻辑代码文件对应的依赖页面,将所述依赖页面确定为目标页面。
其中,页面入口逻辑代码文件和非页面入口逻辑代码文件不属于子程序的入口逻辑代码文件,二者可以视为目标子程序的局部配置文件。本实施例中,页面入口逻辑代码文件可以是某个子程序页面对应的逻辑代码文件,非页面入口逻辑代码文件可以是组件的入口逻辑代码文件,也可以是一些子程序页面依赖的逻辑代码文件。
具体地,目标子程序的每个页面都可以对应有逻辑代码文件,某个子程序页面对应的逻辑代码文件中可以记载处理该子程序页面中触发事件的逻辑代码等。可选地,逻辑代码文件是后缀名为.js的文件,示例性地,某个子程序页面的逻辑代码文件为page.js,page.js也即该子程序页面的页面入口逻辑代码文件。
205、当所述目标页面中的原始组件当前处于已加载状态时,终端基于所述目标逻辑代码文件注册目标组件。
其中,目标页面中的原始组件即目标子程序的逻辑代码文件修改前,目标页面中的组件。
其中,组件(Component)是对数据和方法的简单封装。具体地,组件可以是子程序页面的组成单元,具有视觉形态,组件还可以封装有用于处理针对该组件所触发事件的逻辑代码。
其中,目标页面中的原始组件处于已加载状态,具体可以是处于已加载并显示的状态。
本实施例中,若目标页面中的原始组件当前处于未加载状态,则不需要进行热重载。
其中,基于目标逻辑代码文件注册一个新的目标组件,具体可以是基于目标逻辑代码文件,定义目标组件的构造选项等。通过注册,可以获得目标组件对应的组件逻辑和组件属性等。
206、终端将与所述目标逻辑代码文件对应的原始组件替换为所述目标逻辑代码文件对应的目标组件。
具体地,可以是将与所述目标逻辑代码文件对应的原始组件的组件信息替换为所述目标逻辑代码文件对应的目标组件的组件信息。其中,与目标逻辑代码文件对应的原始组件是指目标逻辑代码文件修改前对应的组件。在一些实施例中,逻辑代码文件的变更涉及到多个组件的变更,则可以根据修改后的目标逻辑代码文件,注册多个目标组件,对于每个原始组件,可以确定其变更后对应的目标组件,再将该原始组件的组件信息替换为对应的目标组件的组件信息。
可选地,本实施例中,步骤“将与所述目标逻辑代码文件对应的原始组件替换为所述目标逻辑代码文件对应的目标组件”,可以包括:
将与所述目标逻辑代码文件对应的原始组件的组件逻辑替换为所述目标逻辑代码文件对应的目标组件的组件逻辑;
将与所述目标逻辑代码文件对应的原始组件的组件实例替换为所述目标逻辑代码文件对应的目标组件的组件实例。
其中,组件逻辑可以包括组件的注册点等信息。原始组件的注册点可以指原始组件在结构树中的路径。将原始组件的组件逻辑替换为目标组件的组件逻辑,具体可以是用目标组件的路径替换掉原始组件的路径。
可选地,本实施例中,步骤“将与所述目标逻辑代码文件对应的原始组件的组件实例替换为所述目标逻辑代码文件对应的目标组件的组件实例”,可以包括:
从所述目标子程序的逻辑代码文件中获取所述原始组件对应的组件实例;
基于所述目标逻辑代码文件对应的目标组件的组件属性,构建所述目标组件对应的组件实例;
将所述原始组件对应的组件实例替换为所述目标组件的组件实例。
其中,组件实例可以是指的是某目录中的一个例子,在面向对象程序设计中,“类”在实例化之后叫做一个实例。具体地,组件实例是为了完成某一具体功能而创建的一套运行程序,组件实例能够根据传入的参数和组件构建内部逻辑运行,实现某一具体功能,这里所说的某一具体功能可以为业务网页界面功能。
具体地,可以先创建目标组件的实例对象,并将目标组件对应的构造选项中的各属性值直接赋值给新创建的实例对象,得到目标组件的组件实例。
可选地,本实施例中,步骤“基于所述目标逻辑代码文件对应的目标组件的组件属性,构建所述目标组件对应的组件实例”,可以包括:
根据所述目标逻辑代码文件对应的目标组件的属性和属性值之间的关联关系,构建所述目标组件对应的映射关系集合;
基于所述映射关系集合,构建所述目标组件对应的组件实例。
其中,映射关系集合具体可以是一个映射关系表,该映射关系表可以是一个二维数据表,两个维度分别是目标组件对应的配置项属性定义和配置属性值。
其中,可以根据该映射关系集合,通过数据绑定实现对所述目标组件对应的组件实例的构建,其中,数据绑定是指将一个用户界面元素(具体也即组件)的属性和属性值绑定到一个类型实例上的某个属性的方法。
207、终端对所述目标组件的组件信息进行编译处理,以更新展示所述目标页面,更新后的目标页面包括所述目标组件。
本申请提供的子程序更新方法可以提高子程序开发者开发子程序的速度,让子程序开发者在进行代码编辑调试时更加顺畅,提高开发效率。
由上可知,本实施例可以通过终端接收在开发侧针对目标子程序的逻辑代码文件的修改更新操作;判断修改后的目标逻辑代码文件是否为子程序的入口逻辑代码文件,若是,对所述目标逻辑代码文件进行编译处理;基于编译结果,重新启动所述目标子程序,以通过重新启动后的目标子程序,展示所述目标逻辑代码文件对应的更新后页面,结束流程;若不是,确定所述目标逻辑代码文件关联的目标页面;当所述目标页面中的原始组件当前处于已加载状态时,终端基于所述目标逻辑代码文件注册目标组件;将与所述目标逻辑代码文件对应的原始组件替换为所述目标逻辑代码文件对应的目标组件;对所述目标组件的组件信息进行编译处理,以更新展示所述目标页面,更新后的目标页面包括所述目标组件。本申请可以在子程序的逻辑代码文件修改后,通过重新注册目标组件,并用目标组件替换掉原始组件,来实现目标页面的热更新效果,这样可以降低更新耗时,提高开发效率。
为了更好地实施以上方法,本申请实施例还提供一种子程序更新装置,如图3所示,该子程序更新装置可以包括接收单元301、确定单元302、注册单元303、替换单元304以及更新单元305,如下:
(1)接收单元301;
接收单元,用于接收在开发侧针对目标子程序的逻辑代码文件的修改更新操作。
(2)确定单元302;
确定单元,用于若修改后的目标逻辑代码文件不是子程序的入口逻辑代码文件,确定所述目标逻辑代码文件关联的目标页面。
可选的,在本申请的一些实施例中,所述非子程序的入口逻辑代码文件包括页面入口逻辑代码文件和非页面入口逻辑代码文件;
所述确定单元可以包括第一确定子单元和第二确定子单元,如下:
所述第一确定子单元,用于若修改后的目标逻辑代码文件为页面入口逻辑代码文件,将所述目标逻辑代码文件对应的页面确定为目标页面;
第二确定子单元,用于若修改后的目标逻辑代码文件为非页面入口逻辑代码文件,对所述目标逻辑代码文件进行页面依赖关系的分析,得到所述目标逻辑代码文件对应的依赖页面,将所述依赖页面确定为目标页面。
可选的,在本申请的一些实施例中,所述确定单元可以包括执行子单元和第三确定子单元,如下:
所述执行子单元,用于当所述修改更新操作携带有热重载的指令信息时,执行针对修改后的目标逻辑代码文件的热重载流程;
第三确定子单元,用于若所述目标逻辑代码文件不是子程序的入口逻辑代码文件,通过所述热重载流程确定所述目标逻辑代码文件关联的目标页面。
(3)注册单元303;
注册单元,用于当所述目标页面中的原始组件当前处于已加载状态时,基于所述目标逻辑代码文件注册目标组件。
(4)替换单元304;
替换单元,用于将与所述目标逻辑代码文件对应的原始组件替换为所述目标逻辑代码文件对应的目标组件。
可选的,在本申请的一些实施例中,所述替换单元可以包括第一替换子单元和第二替换子单元,如下:
所述第一替换子单元,用于将与所述目标逻辑代码文件对应的原始组件的组件逻辑替换为所述目标逻辑代码文件对应的目标组件的组件逻辑;
第二替换子单元,用于将与所述目标逻辑代码文件对应的原始组件的组件实例替换为所述目标逻辑代码文件对应的目标组件的组件实例。
可选的,在本申请的一些实施例中,所述第二替换子单元具体可以用于从所述目标子程序的逻辑代码文件中获取所述原始组件对应的组件实例;基于所述目标逻辑代码文件对应的目标组件的组件属性,构建所述目标组件对应的组件实例;将所述原始组件对应的组件实例替换为所述目标组件的组件实例。
可选的,在本申请的一些实施例中,步骤“基于所述目标逻辑代码文件对应的目标组件的组件属性,构建所述目标组件对应的组件实例”,可以包括:
根据所述目标逻辑代码文件对应的目标组件的属性和属性值之间的关联关系,构建所述目标组件对应的映射关系集合;
基于所述映射关系集合,构建所述目标组件对应的组件实例。
(5)更新单元305;
更新单元,用于对所述目标组件的组件信息进行编译处理,以更新展示所述目标页面,更新后的目标页面包括所述目标组件。
可选的,在本申请的一些实施例中,该子程序更新装置还可以包括编译单元和重新启动单元,如下:
所述编译单元,用于若修改后的目标逻辑代码文件为子程序的入口逻辑代码文件,对所述目标逻辑代码文件进行编译处理;
重新启动单元,用于基于编译结果,重新启动所述目标子程序,以通过重新启动后的目标子程序,展示所述目标逻辑代码文件对应的更新后页面。
由上可知,本实施例可以通过接收单元301接收在开发侧针对目标子程序的逻辑代码文件的修改更新操作;若修改后的目标逻辑代码文件不是子程序的入口逻辑代码文件,由确定单元302确定所述目标逻辑代码文件关联的目标页面;当所述目标页面中的原始组件当前处于已加载状态时,通过注册单元303基于所述目标逻辑代码文件注册目标组件;由替换单元304将与所述目标逻辑代码文件对应的原始组件替换为所述目标逻辑代码文件对应的目标组件;通过更新单元305对所述目标组件的组件信息进行编译处理,以更新展示所述目标页面,更新后的目标页面包括所述目标组件。本申请可以在子程序的逻辑代码文件修改后,通过重新注册目标组件,并用目标组件替换掉原始组件,来实现目标页面的热更新效果,这样可以降低更新耗时,提高开发效率。
本申请实施例还提供一种电子设备,如图4所示,其示出了本申请实施例所涉及的电子设备的结构示意图,该电子设备可以是终端或者服务器等,具体来讲:
该电子设备可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403和输入单元404等部件。本领域技术人员可以理解,图4中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器401是该电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行电子设备的各种功能和处理数据。可选的,处理器401可包括一个或多个处理核心;优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。
存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
电子设备还包括给各个部件供电的电源403,优选的,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该电子设备还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,该电子设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,电子设备中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:
接收在开发侧针对目标子程序的逻辑代码文件的修改更新操作;若修改后的目标逻辑代码文件不是子程序的入口逻辑代码文件,确定所述目标逻辑代码文件关联的目标页面;当所述目标页面中的原始组件当前处于已加载状态时,基于所述目标逻辑代码文件注册目标组件;将与所述目标逻辑代码文件对应的原始组件替换为所述目标逻辑代码文件对应的目标组件;对所述目标组件的组件信息进行编译处理,以更新展示所述目标页面,更新后的目标页面包括所述目标组件。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
由上可知,本实施例可以接收在开发侧针对目标子程序的逻辑代码文件的修改更新操作;若修改后的目标逻辑代码文件不是子程序的入口逻辑代码文件,确定所述目标逻辑代码文件关联的目标页面;当所述目标页面中的原始组件当前处于已加载状态时,基于所述目标逻辑代码文件注册目标组件;将与所述目标逻辑代码文件对应的原始组件替换为所述目标逻辑代码文件对应的目标组件;对所述目标组件的组件信息进行编译处理,以更新展示所述目标页面,更新后的目标页面包括所述目标组件。本申请可以在子程序的逻辑代码文件修改后,通过重新注册目标组件,并用目标组件替换掉原始组件,来实现目标页面的热更新效果,这样可以降低更新耗时,提高开发效率。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本申请实施例所提供的任一种子程序更新方法中的步骤。例如,该指令可以执行如下步骤:
接收在开发侧针对目标子程序的逻辑代码文件的修改更新操作;若修改后的目标逻辑代码文件不是子程序的入口逻辑代码文件,确定所述目标逻辑代码文件关联的目标页面;当所述目标页面中的原始组件当前处于已加载状态时,基于所述目标逻辑代码文件注册目标组件;将与所述目标逻辑代码文件对应的原始组件替换为所述目标逻辑代码文件对应的目标组件;对所述目标组件的组件信息进行编译处理,以更新展示所述目标页面,更新后的目标页面包括所述目标组件。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该计算机可读存储介质中所存储的指令,可以执行本申请实施例所提供的任一种子程序更新方法中的步骤,因此,可以实现本申请实施例所提供的任一种子程序更新方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述子程序更新方面的各种可选实现方式中提供的方法。
以上对本申请实施例所提供的一种子程序更新方法以及相关设备进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (11)
1.一种子程序更新方法,其特征在于,包括:
接收在开发侧针对目标子程序的逻辑代码文件的修改更新操作;
若修改后的目标逻辑代码文件不是子程序的入口逻辑代码文件,确定所述目标逻辑代码文件关联的目标页面;
当所述目标页面中的原始组件当前处于已加载状态时,基于所述目标逻辑代码文件注册目标组件;
将与所述目标逻辑代码文件对应的原始组件替换为所述目标逻辑代码文件对应的目标组件;
对所述目标组件的组件信息进行编译处理,以更新展示所述目标页面,更新后的目标页面包括所述目标组件。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若修改后的目标逻辑代码文件为子程序的入口逻辑代码文件,对所述目标逻辑代码文件进行编译处理;
基于编译结果,重新启动所述目标子程序,以通过重新启动后的目标子程序,展示所述目标逻辑代码文件对应的更新后页面。
3.根据权利要求1所述的方法,其特征在于,所述非子程序的入口逻辑代码文件包括页面入口逻辑代码文件和非页面入口逻辑代码文件;
所述若修改后的目标逻辑代码文件不是子程序的入口逻辑代码文件,确定所述目标逻辑代码文件关联的目标页面,包括:
若修改后的目标逻辑代码文件为页面入口逻辑代码文件,将所述目标逻辑代码文件对应的页面确定为目标页面;
若修改后的目标逻辑代码文件为非页面入口逻辑代码文件,对所述目标逻辑代码文件进行页面依赖关系的分析,得到所述目标逻辑代码文件对应的依赖页面,将所述依赖页面确定为目标页面。
4.根据权利要求1所述的方法,其特征在于,所述将与所述目标逻辑代码文件对应的原始组件替换为所述目标逻辑代码文件对应的目标组件,包括:
将与所述目标逻辑代码文件对应的原始组件的组件逻辑替换为所述目标逻辑代码文件对应的目标组件的组件逻辑;
将与所述目标逻辑代码文件对应的原始组件的组件实例替换为所述目标逻辑代码文件对应的目标组件的组件实例。
5.根据权利要求4所述的方法,其特征在于,所述将与所述目标逻辑代码文件对应的原始组件的组件实例替换为所述目标逻辑代码文件对应的目标组件的组件实例,包括:
从所述目标子程序的逻辑代码文件中获取所述原始组件对应的组件实例;
基于所述目标逻辑代码文件对应的目标组件的组件属性,构建所述目标组件对应的组件实例;
将所述原始组件对应的组件实例替换为所述目标组件的组件实例。
6.根据权利要求5所述的方法,其特征在于,所述基于所述目标逻辑代码文件对应的目标组件的组件属性,构建所述目标组件对应的组件实例,包括:
根据所述目标逻辑代码文件对应的目标组件的属性和属性值之间的关联关系,构建所述目标组件对应的映射关系集合;
基于所述映射关系集合,构建所述目标组件对应的组件实例。
7.根据权利要求1所述的方法,其特征在于,所述若修改后的目标逻辑代码文件不是子程序的入口逻辑代码文件,确定所述目标逻辑代码文件关联的目标页面,包括:
当所述修改更新操作携带有热重载的指令信息时,执行针对修改后的目标逻辑代码文件的热重载流程;
若所述目标逻辑代码文件不是子程序的入口逻辑代码文件,通过所述热重载流程确定所述目标逻辑代码文件关联的目标页面。
8.一种子程序更新装置,其特征在于,包括:
接收单元,用于接收在开发侧针对目标子程序的逻辑代码文件的修改更新操作;
确定单元,用于若修改后的目标逻辑代码文件不是子程序的入口逻辑代码文件,确定所述目标逻辑代码文件关联的目标页面;
注册单元,用于当所述目标页面中的原始组件当前处于已加载状态时,基于所述目标逻辑代码文件注册目标组件;
替换单元,用于将与所述目标逻辑代码文件对应的原始组件替换为所述目标逻辑代码文件对应的目标组件;
更新单元,用于对所述目标组件的组件信息进行编译处理,以更新展示所述目标页面,更新后的目标页面包括所述目标组件。
9.一种电子设备,其特征在于,包括存储器和处理器;所述存储器存储有应用程序,所述处理器用于运行所述存储器内的应用程序,以执行权利要求1至7任一项所述的子程序更新方法中的操作。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至7任一项所述的子程序更新方法中的步骤。
11.一种计算机程序产品,包括计算机程序或指令,其特征在于,该计算机程序或指令被处理器执行时实现权利要求1至7任一项所述的子程序更新方法中的步骤。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210553269.7A CN117130642A (zh) | 2022-05-20 | 2022-05-20 | 子程序更新方法以及相关设备 |
EP23806612.0A EP4455866A1 (en) | 2022-05-20 | 2023-03-27 | Subprogram updating method and apparatus, and electronic device, computer-readable storage medium and computer program product |
PCT/CN2023/084103 WO2023221654A1 (zh) | 2022-05-20 | 2023-03-27 | 子程序更新方法、装置、电子设备、计算机可读存储介质和计算机程序产品 |
US18/766,443 US20240362015A1 (en) | 2022-05-20 | 2024-07-08 | Subroutine update method and apparatus, electronic device, computer-readable storage medium, and computer program product |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210553269.7A CN117130642A (zh) | 2022-05-20 | 2022-05-20 | 子程序更新方法以及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117130642A true CN117130642A (zh) | 2023-11-28 |
Family
ID=88834564
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210553269.7A Pending CN117130642A (zh) | 2022-05-20 | 2022-05-20 | 子程序更新方法以及相关设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20240362015A1 (zh) |
EP (1) | EP4455866A1 (zh) |
CN (1) | CN117130642A (zh) |
WO (1) | WO2023221654A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111930398B (zh) * | 2020-07-24 | 2023-06-27 | 北京柠檬微趣科技股份有限公司 | 应用程序更新方法、装置、系统、介质及设备 |
CN112162767A (zh) * | 2020-09-23 | 2021-01-01 | 成都完美天智游科技有限公司 | 一种热更新方法、装置、设备及存储介质 |
CN114385162A (zh) * | 2020-10-16 | 2022-04-22 | 腾讯科技(深圳)有限公司 | 页面编辑方法、装置、设备及存储介质 |
CN114035829A (zh) * | 2021-12-17 | 2022-02-11 | 北京百度网讯科技有限公司 | 页面组件更新方法、装置、电子设备以及存储介质 |
-
2022
- 2022-05-20 CN CN202210553269.7A patent/CN117130642A/zh active Pending
-
2023
- 2023-03-27 WO PCT/CN2023/084103 patent/WO2023221654A1/zh unknown
- 2023-03-27 EP EP23806612.0A patent/EP4455866A1/en active Pending
-
2024
- 2024-07-08 US US18/766,443 patent/US20240362015A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4455866A1 (en) | 2024-10-30 |
US20240362015A1 (en) | 2024-10-31 |
WO2023221654A1 (zh) | 2023-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111124906B (zh) | 基于动态埋点的跟踪方法、编译方法、装置和电子设备 | |
US8533669B2 (en) | Analysis of dynamic elements in bounded time | |
CN111610978B (zh) | 一种小程序转换方法、装置、设备及存储介质 | |
US20100281463A1 (en) | XML based scripting framework, and methods of providing automated interactions with remote systems | |
CN110990019B (zh) | 一种Java类分析方法、装置、存储介质及电子设备 | |
CN111309335B (zh) | 插件应用的编译方法、装置及计算机可读存储介质 | |
CN111897570A (zh) | 一种基于Maven插件的多依赖项文件提取方法及装置 | |
CN112257135A (zh) | 一种基于多线程的模型加载方法、装置、存储介质及终端 | |
US20230229406A1 (en) | Page rendering method, apparatus, electronic device, computer-readable storage medium, and computer program product | |
CN111581115B (zh) | 文件处理方法、装置、存储介质、处理器及电子装置 | |
CN111880804A (zh) | 应用程序代码的处理方法及装置 | |
CN111176722A (zh) | 第三方库的文件版本检测方法、装置及存储介质 | |
CN112494940B (zh) | 用户界面的制作方法、装置、存储介质及计算机设备 | |
CN111581114B (zh) | 事件处理方法、装置、存储介质、处理器及电子装置 | |
CN117130642A (zh) | 子程序更新方法以及相关设备 | |
CN114816445A (zh) | 系统平台架构、函数发布方法及装置、平台及存储介质 | |
CN111581113A (zh) | 文件更新方法、装置、存储介质、处理器及电子装置 | |
CN111459547B (zh) | 一种函数调用链路的展示方法和装置 | |
CN110806891A (zh) | 嵌入式设备软件版本的生成方法及装置 | |
CN112426722B (zh) | 节点图的热更新方法、装置、存储介质及计算机设备 | |
CN113934959B (zh) | 一种程序预览方法、装置、计算机设备和存储介质 | |
CN114721709A (zh) | 程序包生成方法、装置、存储介质及计算机设备 | |
CN114356520A (zh) | 微应用的运行方法、装置、设备、存储介质及程序产品 | |
CN113535143A (zh) | 堆栈信息处理方法、装置、电子设备和存储介质 | |
CN111581112A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40098425 Country of ref document: HK |