CN118051221A - 一种程序生成方法及相关设备 - Google Patents
一种程序生成方法及相关设备 Download PDFInfo
- Publication number
- CN118051221A CN118051221A CN202410205312.XA CN202410205312A CN118051221A CN 118051221 A CN118051221 A CN 118051221A CN 202410205312 A CN202410205312 A CN 202410205312A CN 118051221 A CN118051221 A CN 118051221A
- Authority
- CN
- China
- Prior art keywords
- type
- file
- component
- program
- platform
- 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 57
- 238000011161 development Methods 0.000 claims description 21
- 230000008859 change Effects 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 4
- 230000018109 developmental process Effects 0.000 description 36
- 230000006870 function Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 8
- 230000002093 peripheral effect Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 244000205754 Colocasia esculenta Species 0.000 description 4
- 235000006481 Colocasia esculenta Nutrition 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000004806 packaging method and process Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本公开提供一种程序生成方法及相关设备。该方法包括:获取目标组件,所述目标组件包括基于第一程序平台的第一类组件和基于第二程序平台的第二类组件;基于所述第一类组件生成第一类文件,以及基于所述第二类组件生成第二类文件;将所述第一类文件和第二类文件融合以生成目标程序。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种程序生成方法及相关设备。
背景技术
传统的程序开发往往需要用户具备深厚的程序专业知识,这增加了用户的入门门槛和学习成本。同时,由于需要手动编写大量代码,程序的开发过程往往耗时费力。虽然目前部分程序开发平台降低了开发门槛,但它们通常都限制了技术栈的选择,不同的程序开发平台有其特定的开发规范和接口,这增加了跨平台程序开发的复杂性,导致程序开发效率低。
发明内容
本公开提出一种程序生成方法及相关设备,以在一定程度上解决跨平台程序开发的复杂性高且开发效率低等技术问题。
本公开第一方面,提供了一种程序生成方法,包括:
获取目标组件,所述目标组件包括基于第一程序平台的第一类组件和基于第二程序平台的第二类组件;
基于所述第一类组件生成第一类文件,以及基于所述第二类组件生成第二类文件;
将所述第一类文件和第二类文件融合以生成目标程序。
本公开第二方面,提供了一种程序生成装置,包括:
获取模块,用于获取目标组件,所述目标组件包括基于第一程序平台的第一类组件和基于第二程序平台的第二类组件;
第一类文件模块,用于基于所述第一类组件生成第一类文件;
第二类文件模块,用于基于所述第二类组件生成第二类文件;
程序生成模块,用于将所述第一类文件和第二类文件融合以生成目标程序。
本公开第三方面,提供了一种电子设备,包括一个或者多个处理器、存储器;和一个或多个程序,其中所述一个或多个程序被存储在所述存储器中,并且被所述一个或多个处理器执行,所述程序包括用于执行根据第一方面所述的方法的指令。
本公开第四方面,提供了一种包含计算机程序的非易失性计算机可读存储介质,当所述计算机程序被一个或多个处理器执行时,使得所述处理器执行第一方面所述的方法。
本公开第五方面,提供了一种计算机程序产品,包括计算机程序指令,当所述计算机程序指令在计算机上执行时,使得计算机执行第一方面所述的方法。
从上面所述可以看出,本公开提供的一种程序生成方法及相关设备,通过获取基于不同程序平台的目标组件,并基于这些组件生成相应的第一类文件和第二类文件,再将两类文件融合以生成目标程序。能够实现高效、便捷地跨平台程序开发,提升程序开发速度和效率,简化了开发流程。
附图说明
为了更清楚地说明本公开或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例的程序生成架构的示意图。
图2为本公开实施例的示例性电子设备的硬件结构示意图。
图3为本公开实施例的程序生成方法的示意性流程图。
图4为本公开实施例的程序生成方法的示意图。
图5为本公开实施例的目标程序更新的示意图。
图6为本公开实施例的程序生成装置的示意图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
需要说明的是,除非另外定义,本公开实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
可以理解的是,在使用本公开各实施例公开的技术方案之前,均应当依据相关法律法规通过恰当的方式对本公开所涉及个人信息的类型、使用范围、使用场景等告知用户并获得用户的授权。
例如,在响应于接收到用户的主动请求时,向用户发送提示信息,以明确地提示用户,其请求执行的操作将需要获取和使用到用户的个人信息。从而,使得用户可以根据提示信息来自主地选择是否向执行本公开技术方案的操作的电子设备、应用程序、服务器或存储介质等软件或硬件提供个人信息。
作为一种可选的但非限定性的实现方式,响应于接收到用户的主动请求,向用户发送提示信息的方式例如可以是弹窗的方式,弹窗中可以以文字的方式呈现提示信息。此外,弹窗中还可以承载供用户选择“同意”或者“不同意”向电子设备提供个人信息的选择控件。
可以理解的是,上述通知和获取用户授权过程仅是示意性的,不对本公开的实现方式构成限定,其它满足相关法律法规的方式也可应用于本公开的实现方式中。
图1示出了本公开实施例的程序生成架构的示意图。参考图1,该程序生成架构100可以包括服务器110、终端120以及提供通信链路的网络130。服务器110和终端120之间可通过有线或无线的网络130连接。其中,服务器110可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、安全服务、CDN等基础云计算服务的云服务器。
终端120可以是硬件或软件实现。例如,终端120为硬件实现时,可以是具有显示屏并且支持页面显示的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、膝上型便携计算机和台式计算机等等。终端120设备为软件实现时,可以安装在上述所列举的电子设备中;其可以实现成多个软件或软件模块(例如用来提供分布式服务的软件或软件模块),也可以实现成单个软件或软件模块,在此不做具体限定。
需要说明的是,本申请实施例所提供的程序生成方法可以由终端120来执行,也可以由服务器110来执行。应了解,图1中的终端、网络和服务器的数目仅为示意,并不旨在对其进行限制。根据实现需要,可以具有任意数目的终端、网络和服务器。
图2示出了本公开实施例所提供的示例性电子设备200的硬件结构示意图。如图2所示,电子设备200可以包括:处理器202、存储器204、网络模块206、外围接口208和总线210。其中,处理器202、存储器204、网络模块206和外围接口208通过总线210实现彼此之间在电子设备200的内部的通信连接。
处理器202可以是中央处理器(Central Processing Unit,CPU)、程序生成器、神经网络处理器(NPU)、微控制器(MCU)、可编程逻辑器件、数字信号处理器(DSP)、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路。处理器202可以用于执行与本公开描述的技术相关的功能。在一些实施例中,处理器202还可以包括集成为单一逻辑组件的多个处理器。例如,如图2所示,处理器202可以包括多个处理器202a、202b和202c。
存储器204可以配置为存储数据(例如,指令、计算机代码等)。如图2所示,存储器204存储的数据可以包括程序指令(例如,用于实现本公开实施例的程序生成方法的程序指令)以及要处理的数据(例如,存储器可以存储其他模块的配置文件等)。处理器202也可以访问存储器204存储的程序指令和数据,并且执行程序指令以对要处理的数据进行操作。存储器204可以包括易失性存储装置或非易失性存储装置。在一些实施例中,存储器204可以包括随机访问存储器(RAM)、只读存储器(ROM)、光盘、磁盘、硬盘、固态硬盘(SSD)、闪存、存储棒等。
网络模块206可以配置为经由网络向电子设备200提供与其他外部设备的通信。该网络可以是能够传输和接收数据的任何有线或无线的网络。例如,该网络可以是有线网络、本地无线网络(例如,蓝牙、WiFi、近场通信(NFC)等)、蜂窝网络、因特网、或上述的组合。可以理解的是,网络的类型不限于上述具体示例。在一些实施例中,网络模块306可以包括任意数量的网络接口控制器(NIC)、射频模块、接收发器、调制解调器、路由器、网关、适配器、蜂窝网络芯片等的任意组合。
外围接口208可以配置为将电子设备200与一个或多个外围装置连接,以实现信息输入及输出。例如,外围装置可以包括键盘、鼠标、触摸板、触摸屏、麦克风、各类传感器等输入设备以及显示器、扬声器、振动器、指示灯等输出设备。
总线210可以被配置为在电子设备200的各个组件(例如处理器202、存储器204、网络模块206和外围接口208)之间传输信息,诸如内部总线(例如,处理器-存储器总线)、外部总线(USB端口、PCI-E总线)等。
需要说明的是,尽管上述电子设备200的架构仅示出了处理器202、存储器204、网络模块206、外围接口208和总线210,但是在具体实施过程中,该电子设备200的架构还可以包括实现正常执行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述电子设备200的架构中也可以仅包含实现本公开实施例方案所必需的组件,而不必包含图中所示的全部组件。
程序开发通常需要用户具备深厚的程序专业知识,例如程序开发框架、API接口调用等。这一过程往往费时费力,导致开发门槛较高。目前部分程序开发平台虽然简化了开发流程,但它们往往限制了程序的平台兼容性和功能,使得用户在开发、调试和打包程序组件时面临诸多不便,影响了开发效率。同时,由于不同程序平台间的技术限制,用户需要针对不同的平台进行适配和优化。这增加了开发工作量和复杂性,也影响了小程序的跨平台兼容性和用户体验。因此,如何提高程序的开发效率和跨平台兼容性等成为了亟需解决的技术问题。
鉴于此,本公开实施例提供了一种程序生成方法及相关设备。通过获取基于不同程序平台的目标组件,并基于这些组件生成相应的第一类文件和第二类文件,再将两类文件融合以生成目标程序。能够实现高效、便捷地跨平台程序开发,提升程序开发速度和效率,简化了开发流程。
参见图3,图3示出了根据本公开实施例的程序生成方法的示意性流程图。根据本公开实施例的程序生成方法可以部署于终端或服务器端。图3中,程序生成方法300可以进一步包括如下步骤。
在步骤S310,获取目标组件,所述目标组件包括基于第一程序平台的第一类组件和基于第二程序平台的第二类组件。
其中,目标组件可以是用户自定义的组件,这些组件可以基于不同的平台或框架,并用于构建应用程序或系统。第一程序平台和第二程序平台可以指两个不同的程序开发平台,例如第一程序平台可以是低代码平台,用户能够自定义组件而不需要编写大量代码;第二程序平台可以是无代码平台,能够通过可视化界面和预构建的模块来自定义组件,而无需编写任何代码。第一类组件可以指基于第一程序平台定义的组件,第二类组件可以指基于第二程序平台定义的组件。例如第一程序平台可以是低代码平台,则第一类组件可以是低代码组件;第二程序平台可以是无代码平台,则第二类组件可以是无代码组件。
在一些实施例中,获取目标组件,可以包括:基于遍历工具获取目标组件的入口文件。其中,遍历工具可以是fast-glob模块,该fast-glob模块是一个快速的、可定制的文件匹配库,可以用于匹配目录下符合特定模式的所有文件。使用fast-glob模块来收集目标组件的入口文件,该入口文件可以是每个组件的起始点,例如.js或.jsx文件。
参见图4,图4示出了根据本公开实施例的程序生成方法的示意图。图4中,目标组件可以包括基于第一程序平台410的第一类组件411、第一类组件412、第一类组件413、第一类组件414、……。例如,第一类组件411可以是用户自定义的组件A,第一类组件412可以是用户自定义的组件B,第一类组件413可以是事件C,第一类组件414可以是基于第一程序平台410的原生组件D。目标组件还可以包括基于第二程序平台420的第二类组件421、第二类组件422、第二类组件423、……。例如,第二类组件421、第二类组件422、第二类组件423可以分别是无代码组件1、无代码组件2、无代码组件3。
在步骤S320,基于所述第一类组件生成第一类文件,以及基于所述第二类组件生成第二类文件。
其中,第一类文件可以指对第一类组件进行解析得到的产物文件,第二类文件可以指对第二类组件进行解析得到的产物文件。
在一些实施例中,基于所述第一类组件生成第一类文件,包括:
解析所述第一类组件得到预设文件类型的所述第一类文件;其中,所述预设文件类型包括如下至少一种:组件文件、样式文件、事件文件或配置文件。
其中,第一类文件的类型与预设文件类型向对应。组件文件可以指关于组件的主执行逻辑的文件,例如JavaScript(JS)文件。样式文件可以指关于组件的样式的文件,例如CSS文件。事件文件可以指记录关于组件所发生的事件的文件,例如错误、警告、信息性消息或其他事件等,可以是JavaScript(JS)文件。配置文件可以指关于组件的配置信息的文件,例如config文件,配置文件可以包括环境变量等,并可以通过诸如环境变量等机制动态加载至程序中。如图4所示,第一类文件430可以包括如下至少一种:组件文件431、样式文件432、事件文件433或配置文件434。
具体地,可以使用前端工具来解析并打包第一类文件,如React。该前端工具可以将一个或多个第一类文件解析并打包成至少一个预设文件类型的输出文件,并且还可以进行代码压缩、代码分割等优化。例如,可以解析第一类组件411得到对应的配置文件,该配置文件指定如何处理该第一类组件411。再例如,还可以解析和打包第一类组件412得到样式文件以及第一类组件412特有的配置文件,可以使用mini-css-extract-plugin来从第一类组件412的JavaScript文件中提取CSS,并将其打包成一个单独的样式文件;还可以使用特定的解析器来将配置数据提取出来,并生成对应的配置文件。可以将打包后的第一类文件分布到适当的目录中,例如创建对应的文件夹,并将打包后的文件复制或移动到该文件夹中。
在一些实施例中,所述第一类组件与第一浏览器接口相关联;则解析所述第一类组件得到预设文件类型的所述第一类文件,包括:
调用运行环境中封装的与所述第一浏览器接口相同的第二浏览器接口,以解析所述第一类组件得到所述第一类文件。
其中,第一浏览器接口可以指第一类组件所需要调用的浏览器接口,第二浏览器接口可以指第一类组件所需要调用的浏览器接口的代理接口。因为用户在使用前端工具React开发第一类组件时,可能会直接或间接地调用第一浏览器接口,以调用诸如BOM(浏览器对象模型)或DOM(文档对象模型)等相关的浏览器功能,例如createElement、appendChild、removeChild等。然而,这些浏览器功能在程序运行环境中通常是不存在的。为了兼容多平台运行环境,可以将浏览器功能的调用代理到另一个实现中。具体地,可以在运行环境中封装一种或多种浏览器功能,并提供对应的第二浏览器接口,例如可以使用Taro Runtime中对各种浏览器功能的封装。Taro Runtime是多端统一开发框架Taro的核心部分,它封装了不同运行环境(如小程序、H5等)的底层能力,使得用户可以使用统一的代码库来构建多端应用。结合构建工具(如Webpack、Rollup等)的配置,可以实现在第一程序平台的低代码环境中调用浏览器功能。通过配置这些工具,可以将第一类组件对BOM/DOM的调用代理到Taro Runtime的实现中,从而实现在程序等非浏览器环境(例如低代码环境)中调用这些浏览器功能。通过这种方式,可以实现在多平台运行环境中使用React开发的组件,同时保证这些组件能够调用所需的浏览器功能。有助于提高应用的性能和用户体验,并使用户能够更加高效地进行跨平台程序开发。如图4所示,可以在将浏览器接口441-444封装为浏览器功能代理440,在对第一类组件进行解析和打包时,当第一类组件需要调用浏览器功能时,可以直接调用浏览器功能代理440中的浏览器接口441-444等。例如浏览器接口441-444可以分别对应window接口、document接口、navigate接口或Element接口。应了解,上述浏览器接口441-444仅为对浏览器功能代理440的示例性说明,并不旨在对浏览器功能代理440中的浏览器接口进行限定,浏览器功能代理440还可以包括更多或更少的浏览器接口,在此不做限制。
在一些实施例中,方法300还包括:
识别所述第一类组件所调用的关于所述第一程序平台的原生组件;
将所述原生组件合并至所述第一类文件。
其中,关于第一程序平台的原生组件可以指由第一程序平台直接提供的、原生的、未经过第三方或自定义封装的组件,例如文本框组件、按钮组件等。在第一类组件的开发过程中,可能会依赖第一程序平台提供的原生组件,为了确保第一类组件能够正确地使用原生组件,可以通过配置文件声明原生组件。在构建过程中,可以使用语法解析器来识别第一类组件中调用的第一程序平台的原生组件。一旦识别到第一程序平台的原生组件,构建工具可以将改原生组件直接打包到第一类文件中,如图4所示第一类文件430中的原生组件435。这样可以确保最终生成的目标程序在运行时能够正确地加载和使用第一程序平台的原生组件。为了避免不同的程序平台的原生组件和第一类组件的原生组件之间的冲突,可以对原生组件的名称进行唯一性处理。例如,可以通过对原生组件的名称添加前缀或后缀,以确保每个原生组件的名称在全局范围内是唯一的。这样,即使有多个同名的原生组件,也可以通过唯一性处理来区分它们,避免潜在的冲突和错误。此外,为了避免重复打包和资源浪费,构建工具还可以对原生组件进行优化。例如,如果多个第一类组件都依赖同一个原生组件,那么该原生组件可以仅打包一次,而不是每次都被单独打包。这样可以减少第一类文件的数据量,提高应用程序的加载速度和性能。可见,通过对原生组件的名称进行唯一性处理,并在构建过程中进行优化和资源管理,可以确保程序的正确运行和良好的用户体验。
在一些实施例中,基于所述第二类组件生成第二类文件,包括:
提取所述第一程序平台与所述第二程序平台的共用对象;其中,所述共用对象包括如下至少一种:底层运行环境、组件开发环境或所述第二程序平台的接口;
基于所述共用对象与所述第二类组件生成所述第二类文件。
其中,第一程序平台和第二程序平台采用相同的技术栈,可能存在部分功能是双方共用的,而这部分共用的内容在最终的目标程序中只需要存在一份,以减少目标程序的代码冗余。可以通过分析代码库、使用工具或比较第一程序平台和第二程序平台所提供的API来提取第一程序平台和第二程序平台的公共依赖的共用对象。例如,如图4所示,在构建工具的配置中,将底层运行环境451(例如Taro3基座)、组件开发环境452(例如React)以及第二程序平台(例如无代码平台)提供的API接口453提取为共用对象450,保证共用对象的唯一性。可以基于该共用对象450与第二类组件打包生成第二类文件460。
在步骤S330,将所述第一类文件和第二类文件融合以生成目标程序。
其中,第一类文件是基于第一程序平台得到,第二类文件是基于第二程序平台得到,将第一类文件和第二类文件两者融合生成跨平台的目标程序。用户可以采用第一程序平台(例如低代码平台)的前端技术栈React开发组件,采用第二程序平台(例如无代码平台)的命令行接口(Command-Line Interface,CLI)工具进行本地开发,例如代码的调试和构建。能够实现跨平台低代码程序的开发、调试和打包,提升程序开发速度和效率。
在一些实施例中,将所述第一类文件和第二类文件融合以生成目标程序,包括:
将所述第二程序平台的编译配置中与所述第一类文件相关联的部分设置为空文件;
将所述空文件替换为对应的所述第一类文件,以生成所述目标程序。
具体地,如图4所示,在将第一类文件430与第二类文件460合并以生成目标程序470的过程中,可以在第二程序平台(例如无代码平台)的编译配置中,将与第一类文件430相关的模块设置为外部依赖,该外部依赖可以包括组件文件481、样式文件482、事件文件483、配置文件484或原生文件485中的至少一个。可以将该外部依赖的默认值设置为空文件,当完成第一类组件的编译后,使用生成的第一类文件430中的组件文件431、样式文件432、事件文件433、配置文件434或原生文件435,替换掉第二程序平台的编译配置中对应类型的空文件,从而生成最终的目标程序包。
在一些实施例中,将所述空文件替换为对应的所述第一类文件,包括如下至少一项:
对于所述空文件的类型为组件文件和/或事件文件,基于JavaScript语言将所述空文件替换为所述第一类文件;
对于所述空文件的类型为样式文件,基于级联样式表将所述空文件替换为所述第一类文件;
对于所述空文件的类型为配置文件,基于JSON文件将所述空文件替换为所述第一类文件;
对于所述空文件的类型为原生组件,将所述空文件替换为所述第一类文件中的原生组件。
具体地,对于外部依赖中的组件文件481和事件文件483,均为脚本文件,可以通过JavaScript语言(例如ES6代码的require语句)的方式将第一类文件430中的组件文件431引入替换组件文件481,将第一类文件430中的事件文件433引入替换组件文件483。对于外部依赖中的样式文件482,可以基于级联样式表(例如CSS的@import语句)将第一类文件430中的样式文件432引入替换样式文件482。对于外部依赖中的配置文件484,可以基于JSON文件(例如JSON文件合并,引擎调用)将第一类文件430中的配置文件434引入替换配置文件484。对于外部依赖中的原生组件485,可以直接复制(例如程序标签引用)第一类文件430中的原生组件435以替换原生组件485。
在一些实施例中,方法300还可以包括:
响应于所述第一类文件变更,编译变更后的所述第一类文件得到第一类变更编译结果;
基于所述第一类变更编译结果更新所述目标程序。
其中,当第一类文件发生变更时,可以重新编译发生变更的部分,并重新调用代码合并策略,生成新的目标程序代码。参见图5,图5示出了根据本公开实施例的目标程序更新的示意图。图5中,可以检测第一类文件代码和配置的变更,例如设置一个检测机制,用于检测第一类文件代码和配置文件的变更,以便及时进行编译和更新。一旦检测到第一类文件代码或配置文件发生变更,可以自动重新编译发生变更的部分文件,以及重新调用代码合并策略。在生成新的小程序代码之后,用户可以在本地进行调试。这使得开发者能够实时查看代码变更的影响,并及时进行调整,确保程序的功能和性能满足预期。
可见,本公开实施例的程序生成方法,可以建立在以Taro3基座的无代码程序平台之上生成低代码程序,在该无代码平台上,用户可以通过可视化拖拽的形式搭建和发布无代码程序。对于该无代码平台未内置的组件,可以在本地使用低代码平台提供的CLI(command-line interface),通过编写低代码的方式,扩展无代码程序的能力,实现高效地基于Taro3的跨平台低代码程序生成以及本地调试,提高程序开发的效率,磨平不同程序平台之间的差异。
需要说明的是,本公开实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本公开实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本公开的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
基于同一技术构思,与上述任意实施例方法相对应的,本公开还提供了一种程序生成装置,参见图6,所述程序生成装置包括:
获取模块,用于获取目标组件,所述目标组件包括基于第一程序平台的第一类组件和基于第二程序平台的第二类组件;
第一类文件模块,用于基于所述第一类组件生成第一类文件;
第二类文件模块,用于基于所述第二类组件生成第二类文件;
程序生成模块,用于将所述第一类文件和第二类文件融合以生成目标程序。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本公开时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
上述实施例的装置用于实现前述任一实施例中相应的程序生成方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一技术构思,与上述任意实施例方法相对应的,本公开还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的程序生成方法。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的程序生成方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本公开实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本公开实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本公开实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本公开实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本公开实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本公开实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本公开实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (11)
1.一种程序生成方法,包括:
获取目标组件,所述目标组件包括基于第一程序平台的第一类组件和基于第二程序平台的第二类组件;
基于所述第一类组件生成第一类文件,以及基于所述第二类组件生成第二类文件;
将所述第一类文件和第二类文件融合以生成目标程序。
2.根据权利要求1的方法,其中,基于所述第一类组件生成第一类文件,包括:
解析所述第一类组件得到预设文件类型的所述第一类文件;其中,所述预设文件类型包括如下至少一种:组件文件、样式文件、事件文件或配置文件。
3.根据权利要求2的方法,其中,所述第一类组件与第一浏览器接口相关联;
则解析所述第一类组件得到预设文件类型的所述第一类文件,包括:
调用运行环境中与所述第一浏览器接口相同的第二浏览器接口,以解析所述第一类组件得到所述第一类文件。
4.根据权利要求2的方法,还包括:
识别所述第一类组件所调用的关于所述第一程序平台的原生组件;
将所述原生组件合并至所述第一类文件。
5.根据权利要求1的方法,其中,基于所述第二类组件生成第二类文件,包括:
提取所述第一程序平台与所述第二程序平台的共用对象;其中,所述共用对象包括如下至少一种:底层运行环境、组件开发环境或所述第二程序平台的接口;
基于所述共用对象与所述第二类组件生成所述第二类文件。
6.根据权利要求1的方法,其中,将所述第一类文件和第二类文件融合以生成目标程序,包括:
将所述第二程序平台的编译配置中与所述第一类文件相关联的部分设置为空文件;
将所述空文件替换为对应的所述第一类文件,以生成所述目标程序。
7.根据权利要求6的方法,将所述空文件替换为对应的所述第一类文件,包括如下至少一项:
对于所述空文件的类型为组件文件和/或事件文件,基于JavaScript语言将所述空文件替换为所述第一类文件;
对于所述空文件的类型为样式文件,基于级联样式表将所述空文件替换为所述第一类文件;
对于所述空文件的类型为配置文件,基于JSON文件将所述空文件替换为所述第一类文件;
对于所述空文件的类型为原生组件,将所述空文件替换为所述第一类文件中的原生组件。
8.根据权利要求1的方法,还包括:
响应于所述第一类文件变更,编译变更后的所述第一类文件得到第一类变更编译结果;
基于所述第一类变更编译结果更新所述目标程序。
9.一种程序生成装置,包括:
获取模块,用于获取目标组件,所述目标组件包括基于第一程序平台的第一类组件和基于第二程序平台的第二类组件;
第一类文件模块,用于基于所述第一类组件生成第一类文件;
第二类文件模块,用于基于所述第二类组件生成第二类文件;
程序生成模块,用于将所述第一类文件和第二类文件融合以生成目标程序。
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上执行的计算机程序,所述处理器执行所述程序时实现如权利要求1至8任意一项所述的方法。
11.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使计算机执行权利要求1至8任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410205312.XA CN118051221A (zh) | 2024-02-23 | 2024-02-23 | 一种程序生成方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410205312.XA CN118051221A (zh) | 2024-02-23 | 2024-02-23 | 一种程序生成方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118051221A true CN118051221A (zh) | 2024-05-17 |
Family
ID=91047999
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410205312.XA Pending CN118051221A (zh) | 2024-02-23 | 2024-02-23 | 一种程序生成方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118051221A (zh) |
-
2024
- 2024-02-23 CN CN202410205312.XA patent/CN118051221A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3605324B1 (en) | Application development method and tool, and storage medium thereof | |
JP6740373B2 (ja) | ページコンポーネント動的レイアウト | |
US8983935B2 (en) | Methods for utilizing a javascript emulator in a web content proxy server and devices thereof | |
WO2016177341A1 (zh) | 接口调用方法、装置及终端 | |
CN110580174B (zh) | 应用组件生成方法、服务器及终端 | |
CN110895471A (zh) | 安装包生成方法、装置、介质及电子设备 | |
CN111176629A (zh) | 一种应用开发的方法和装置 | |
CN111399840A (zh) | 一种模块开发方法及装置 | |
CN112087370A (zh) | 发布GitHub Issues的方法、系统、电子设备和计算机可读存储介质 | |
CN111159301A (zh) | 一种基于智能合约的数据创建方法、装置、设备及存储介质 | |
CN114579452A (zh) | 接口影响检测方法及相关设备 | |
CN112214250A (zh) | 一种应用程序组件的加载方法和装置 | |
US10606569B2 (en) | Declarative configuration elements | |
WO2021108362A1 (en) | Method and apparatus for data interaction | |
WO2023197851A1 (zh) | 异常组件的识别方法、装置、设备、存储介质及程序产品 | |
CN110580156A (zh) | 页面处理方法、装置及电子设备 | |
CN115809193A (zh) | 前端逆向异常数据健壮性检测方法、装置及存储介质 | |
CN110825622A (zh) | 软件测试方法、装置、设备和计算机可读介质 | |
CN118051221A (zh) | 一种程序生成方法及相关设备 | |
CN114911541A (zh) | 配置信息的处理方法、装置、电子设备及存储介质 | |
CN114115855A (zh) | 代码复用方法及装置、计算机可读存储介质、电子设备 | |
CN115525305A (zh) | 数据处理、应用启动方法、装置、计算机设备和存储介质 | |
CN112882698A (zh) | 开发环境的生成方法及装置、计算机存储介质及电子设备 | |
CN112068814A (zh) | 可执行文件的生成方法、装置、系统及介质 | |
CN117519691B (zh) | 应用程序处理方法、装置、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |