一种小程序处理方法、装置及电子设备与流程

文档序号:34451436发布日期:2023-06-13 15:29阅读:44来源:国知局
一种小程序处理方法、装置及电子设备与流程

本技术涉及计算机,具体涉及小程序处理方法、装置、电子设备及存储介质。


背景技术:

1、小程序为免安装的即获得即使用的应用,由于其便捷性逐渐得到了广泛应用。目前,越来越多的企业开发投放于不同平台的小程序,以充分吸引流量。提供同一功能的小程序可能以不同小程序形态挂载于不同平台,这对同一功能的小程序的迭代及维护提出了更高要求。

2、现有技术中,针对不同平台按照对应各平台的小程序形态各自维护一套源代码,针对各平台对应的源代码生成对应形态的产物,该产物用于提供给对应平台生成小程序,存在如下缺陷:需要维护同一功能的多套代码,不仅功能同步迭代周期很长,而且bug较多,迭代维护难度大,使得研发过程困难且研发成本较高。

3、因此,如何基于同一套源代码生成用于不同形态小程序的产物是需要解决的问题。

4、在所述背景技术部分公开的上述信息仅用于加强对本技术的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现思路

1、本技术实施例提供的小程序处理方法,解决了不同小程序形态的小程序迭代及维护难度大的问题。

2、本技术实施例提供一种小程序处理方法,包括:获取待生成目标产物的源代码;其中,所述目标产物用于实现目标小程序功能;将所述源代码对应的小程序形态作为源形态,将所述目标产物对应的小程序形态作为目标形态,确定所述源形态与所述目标形态之间的形态差异;基于所述形态差异对所述源代码进行适配性编译,生成所述目标产物。

3、可选的,所述源形态包括以下小程序形态之一:独立小程序、小程序插件、小程序分包;所述目标形态为不同于所述源形态的小程序形态。

4、可选的,所述基于所述形态差异对所述源代码进行适配性编译,生成所述目标产物,包括:响应于所述形态差异包括第一差异,根据所述第一差异针对所述源代码注入用于适配所述目标形态的代码数据,基于所述注入生成所述目标产物;其中,所述第一差异包括所述源形态与所述目标形态之间与小程序全局的应用实例相关的差异。

5、可选的,所述源形态为独立小程序;所述目标形态为小程序插件或小程序分包;所述源代码形态转换前包括第一全局逻辑代码、第一页面代码和/或第一组件代码;所述根据所述第一差异针对所述源代码注入用于适配所述目标形态的代码数据,基于所述注入生成所述目标产物,包括:针对所述源代码注入用于模拟应用实例生命周期以及模拟应用实例调用的应用实例差异抹平代码;基于所述应用实例差异抹平代码修改所述第一全局逻辑代码得到形态转换后第二全局逻辑代码;基于所述应用实例差异抹平代码修改所述第一页面代码和/或第一组件代码得到形态转换后第二页面代码和/或第二组件代码;根据所述应用实例差异抹平代码、所述第二全局逻辑代码、所述第二页面代码和/或第二组件代码得到对应所述源代码的修改后代码;编译所述修改后代码得到所述目标产物。

6、可选的,所述基于所述应用实例差异抹平代码修改所述第一全局逻辑代码得到形态转换后第二全局逻辑代码,包括:在所述第一全局逻辑代码中增加代码以获取所述应用实例差异抹平代码的导出数据;将所述第一全局逻辑代码中的监听小程序初始化修改为调用所述应用实例差异抹平代码所包括的模拟监听小程序初始化方法;其中,所述模拟监听小程序初始化方法为模拟应用实例生命周期中初始化生命周期所执行的方法;基于上述修改得到所述第二全局逻辑代码。

7、可选的,所述基于所述应用实例差异抹平代码修改所述第一页面代码和/或第一组件代码得到形态转换后第二页面代码和/或第二组件代码,包括:在所述第一页面代码和/或第一组件代码中增加引用所述第二全局逻辑代码以及增加用于获取所述应用实例差异抹平代码的导出数据的代码;在所述第一页面代码和/或第一组件代码中注入所述应用实例差异抹平代码包括的模拟应用实例调用方法,得到形态转换后的第二页面代码和/或第二组件代码。

8、可选的,所述应用实例差异抹平代码,包括:用于导出模拟应用实例调用方法的代码;用于实现所述模拟应用实例调用方法的代码;其中,所述模拟应用实例调用方法基于闭包和原型链实现数据隔离及共享;用于导出模拟监听小程序初始化方法;用于实现所述模拟监听小程序初始化方法的代码。

9、可选的,所述基于所述形态差异对所述源代码进行适配性编译,生成所述目标产物,包括:所述源代码形态转换前包括第一页面代码和/或第一组件代码;响应于所述形态差异包括第二差异,将所述源代码中的全局样式文件注入到所述第一页面代码和/或第一组件代码中得到形态转换后第二页面代码和/或第二组件代码,根据所述第二页面代码和/或第二组件代码得到对应所述源代码的修改后代码,编译所述修改后代码得到所述目标产物;其中,所述第二差异包括:当所述源形态为独立小程序、所述目标形态为小程序插件或小程序分包,所述源形态与所述目标形态之间与小程序全局样式相关的差异。

10、可选的,所述将所述源代码中的全局样式文件注入到所述第一页面代码和/或第一组件代码中,包括:在第一页面代码和/或第一组件代码的代码文件起始处,增加import语句注入所述全局样式文件。

11、可选的,所述基于所述形态差异对所述源代码进行适配性编译,生成所述目标产物,包括:响应于所述形态差异包括第三差异,,基于预先设定的生成所述目标产物需遵从的规范,在生成所述目标产物的编译过程中将独立小程序、小程序插件、小程序分包各形态产物的js依赖统一打包,将所述目标产物依赖的组件库提取到特定组件依赖文件夹;其中,所述第三差异,包括所述源形态与所述目标形态之间与npm组件库相关的差异。

12、可选的,所述在生成所述目标产物的编译过程中将独立小程序、小程序插件、小程序分包各形态产物的js依赖统一打包,将所述目标产物依赖的组件库提取到特定组件依赖文件夹,包括:基于入口配置进行依赖分析,根据依赖分析的结果进行组件编译以及js编译,编译后进行组件分组,根据组件分组结果进行组件提取,根据目标形态对小程序分包或独立小程序分别合并打包,将引用的组件替换为所述目标形态下对应的组件,输出所述目标产物。

13、可选的,所述预先设定的生成所述目标产物需遵从的规范,包括目录结构规范、多端组件库规范以及js依赖库规范至少之一。

14、可选的,所述基于所述形态差异对所述源代码进行适配性编译,生成所述目标产物,包括:响应于开发者触发执行指定编译类型的编译命令,从所述源代码中加载对应所述目标形态的入口配置文件;其中,所述编译类型基于所述目标形态指定,所述入口配置文件包括指定的编译类型。

15、可选的,所述源形态为独立小程序,所述目标形态为小程序分包;所述方法,还包括:响应于开发者输入的分包配置文件创建命令,在所述源代码对应的小程序项目的根目录下生成分包配置文件,所述分包配置文件为目标形态为小程序分包所对应的入口配置文件;将开发者输入的待编译为目标分包的特定页面标识,添加至所述分包配置文件所包括的页面配置信息,所述特定页面标识对应于所述源代码包括的特定页面代码,所述特定页面标识对应的特定页面的页面路径由目标分包的分包标识及其路径构成;获取所述目标分包的分包编译配置,将所述分包编译配置增加至应用所述小程序处理方法的开发框架或编译器的配置文件;所述基于所述注入生成所述目标产物,包括:根据所述入口配置文件以及所述开发框架或编译器的配置文件包括的分包编译配置,将所述特定页面代码编译为所述目标分包;其中,所述目标分包为所述目标产物,所述目标产物对应的文件夹存放至对应的宿主后可提供目标小程序功能。

16、可选的,还包括:基于所述目标产物实现的目标小程序运行时执行应用实例调用方法所获得的应用实例为对应的宿主和所述目标分包的混合产物;其中,所述宿主的属性和方法可以通过应用实例的宿主变量获取。

17、可选的,所述源形态为独立小程序,所述目标形态为小程序插件;所述方法,还包括:响应于开发者输入的插件配置文件创建命令,在所述源代码对应的小程序项目的根目录下生成插件配置文件,所述插件配置文件为目标形态为小程序插件所对应的入口配置文件;若所述源代码的全局配置文件中包括分包配置,则将所述全局配置文件中的分包配置的页面信息添加至所述插件配置文件的页面信息,添加的页面信息的页面路径由对应分包标识及该分包的路径构成;若确定所述源代码编译得到的目标插件包括开放页面,则将所述开放页面的信息添加至所述插件配置文件中的开放页面变量;获取所述目标插件的插件编译配置,将所述插件编译配置增加至应用所述小程序处理方法的开发框架或编译器的配置文件;所述插件编译配置至少包括:指定编译类型为插件;响应于所述编译命令,根据所述源形态与所述目标形态之间的第一差异对所述源代码执行注入得到对应的修改后代码,根据所述插件配置文件以及所述插件编译配置,将所述修改后代码编译为所述目标插件;其中,所述目标插件为所述目标产物。

18、可选的,还包括:在所述小程序项目的页面逻辑文件中通过调用应用实例调用方法的父类实现所述目标插件对外输出属性和方法。

19、可选的,所述源形态为小程序插件;所述目标形态为小程序分包;所述方法,还包括:响应于开发者输入的分包配置文件创建命令,在所述源代码对应的小程序项目的根目录下生成分包配置文件,所述分包配置文件为目标形态为小程序分包所对应的入口配置文件;将所述源代码包括的插件配置文件的信息转换为分包配置,添加至所述分包配置文件;获取分包编译配置,将所述分包编译配置添加至应用所述小程序处理方法的开发框架或编译器的配置文件;响应于所述编译命令,根据所述分包配置文件以及所述分包编译配置,将所述源代码编译为所述目标产物。

20、可选的,还包括:所述源形态为小程序插件或小程序分包;所述目标形态为独立小程序;所述基于所述形态差异对所述源代码进行适配性编译,生成所述目标产物,包括:获取开发者编写的小程序全局配置文件;接收开发者针对开发框架的特定配置文件修改,使得所述特定配置文件包含用于编译生成独立小程序的编译配置信息,其中,所述编译配置信息包含的编译类型为独立小程序;根据所述编写的小程序全局配置文件以及所述特定配置文件对所述源代码进行编译得到所述目标产物。

21、本技术还提供一种小程序处理装置,包括:源码获取单元,用于获取待生成目标产物的源代码;其中,所述目标产物用于实现目标小程序功能;形态差异单元,用于将所述源代码对应的小程序形态作为源形态,将所述目标产物对应的小程序形态作为目标形态,确定所述源形态与所述目标形态之间的形态差异;编译单元,用于基于所述形态差异对所述源代码进行适配性编译,生成所述目标产物。

22、本技术实施例还提供一种电子设备,包括:存储器,以及处理器;所述存储器用于存储计算机程序,所述计算机程序被所述处理器运行后,执行本技术实施例提供的所述方法。

23、本技术实施例还提供一种计算机存储介质,存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现本技术实施例提供的所述方法。

24、与现有技术相比,本技术具有以下优点:

25、本技术实施例提供的一种小程序处理方法、装置、电子设备及存储介质,通过获取待生成目标产物的源代码;其中,所述目标产物用于实现目标小程序功能;将所述源代码对应的小程序形态作为源形态,将所述目标产物对应的小程序形态作为目标形态,确定所述源形态与所述目标形态之间的形态差异;基于所述形态差异对所述源代码进行适配性编译,生成所述目标产物。通过基于形态差异对源代码进行适配性编译提供至少部分的不同形态之间的差异抹平能力,将所述源代码编译为不同形态(即不同小程序形态)的目标产物,各形态的目标产物可投放至对应渠道,从而支持不同形态转换,提供小程序形态一体化能力,降低迭代维护难度及成本。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1