CN118151933A - 小程序生成方法、装置、电子设备及计算机可读存储介质 - Google Patents

小程序生成方法、装置、电子设备及计算机可读存储介质 Download PDF

Info

Publication number
CN118151933A
CN118151933A CN202211505765.1A CN202211505765A CN118151933A CN 118151933 A CN118151933 A CN 118151933A CN 202211505765 A CN202211505765 A CN 202211505765A CN 118151933 A CN118151933 A CN 118151933A
Authority
CN
China
Prior art keywords
applet
file
module
compiling
page
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
Application number
CN202211505765.1A
Other languages
English (en)
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.)
Tianjin Hongen Perfect Future Education Technology Co ltd
Original Assignee
Tianjin Hongen Perfect Future Education Technology 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 Tianjin Hongen Perfect Future Education Technology Co ltd filed Critical Tianjin Hongen Perfect Future Education Technology Co ltd
Priority to CN202211505765.1A priority Critical patent/CN118151933A/zh
Publication of CN118151933A publication Critical patent/CN118151933A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本申请公开了一种小程序生成方法、装置、电子设备及计算机可读存储介质,涉及计算机技术领域,通过小程序生成工具将H5技术架构的代码转换为小程序技术架构的代码,无需重新开发,提高生成效率。所述方法包括:响应于小程序生成请求,确定待生成小程序的页面项目,获取页面项目的多个模块资源文件;确定小程序生成请求指示的小程序所属的目标平台,调用小程序生成工具按照目标平台指示的小程序代码架构对多个模块资源文件进行编译,得到多个初始模块文件;基于目标平台指定的文件名称设置方式对多个初始模块文件的文件名进行更新,得到多个目标模块文件;将多个目标模块文件输出,以使目标平台运行多个目标模块文件,得到页面项目的平台小程序。

Description

小程序生成方法、装置、电子设备及计算机可读存储介质
技术领域
本申请涉及计算机技术领域,特别是涉及一种小程序生成方法、装置、电子设备及计算机可读存储介质。
背景技术
随着计算机技术的不断发展,越来越多的移动服务通过小程序技术实现并借助小程序的生态快速裂变,各互联网厂商也推出了自己的小程序生态。小程序是一种能够实现某种业务功能但并不需要下载安装即可使用的应用程序,小程序通常是以某个应用软件作为运行平台来实现的。近年来,小程序逐渐普及,使得有很多H5(HyperText MarkupLanguage 5,构建页面的一种语言描述方式)项目需要开发成小程序项目,以便在应用软件上生成和H5项目功能一致的小程序供用户使用。
相关技术中,在将H5项目开发成小程序项目时,需要以小程序技术框架为基础对该H5项目进行开发,按照小程序的技术规范输出小程序所在的应用软件支持的代码,以便应用软件基于该代码成功生成并运行该H5项目的小程序。
在实现本申请的过程中,申请人发现相关技术至少存在以下问题:
为H5项目开发小程序项目时,需要按照提供小程序的厂商指定的技术规范重新开发小程序,实际上也就是重新创建H5的小程序,生成小程序后需要重新测试,且重新生成的H5代码与原H5项目的代码之间差异很大,资源体积也会相应变大,不仅涉及到大量的工作量,而且小程序的生成效率也不高。
发明内容
有鉴于此,本申请提供了一种小程序生成方法、装置、电子设备及计算机可读存储介质,主要目的在于解决目前生成小程序涉及到大量的工作量,而且小程序的生成效率也不高的问题。
依据本申请第一方面,提供了一种小程序生成方法,该方法包括:
响应于小程序生成请求,确定待生成小程序的页面项目,获取所述页面项目的多个模块资源文件;
确定所述小程序生成请求指示的小程序所属的目标平台,调用小程序生成工具按照所述目标平台指示的小程序代码架构对所述多个模块资源文件进行编译,得到多个初始模块文件;
基于所述目标平台指定的文件名称设置方式对所述多个初始模块文件的文件名进行更新,得到多个目标模块文件;
将所述多个目标模块文件输出,以使所述目标平台运行所述多个目标模块文件,得到所述页面项目的平台小程序。
可选地,所述响应于小程序生成请求,确定待生成小程序的页面项目,获取所述页面项目的多个模块资源文件之前,所述方法还包括:
获取所述多个模块资源文件中每个模块资源文件的文件扩展名,得到多个文件扩展名;
分别获取所述多个文件扩展名中每个文件扩展名对应的编译模块,得到多个编译模块,其中,文件扩展名对应的编译模块具备编译所述文件扩展名指示的模块资源文件的功能;
创建初始生成工具,获取所述初始生成工具的钩子程序,以及通过所述钩子程序将所述多个编译模块注册在所述初始生成工具中,得到所述小程序生成工具。
可选地,所述通过所述钩子程序将所述多个编译模块注册在所述初始生成工具中,包括:
对于所述多个编译模块中的每个编译模块,在所述初始生成工具中为所述编译模块设置编译路径;
查询所述编译模块的编译功能指示的文件扩展名,在所述初始生成工具中按照所述文件扩展名为所述编译模块绑定钩子程序;
在所述初始生成工具中对所述编译模块进行编译,为所述编译模块渲染编译模板,并为所述编译模块设置文件名称设置方式,完成所述编译模块的注册。
可选地,所述确定待生成小程序的页面项目,获取所述页面项目的多个模块资源文件,包括:
查询所述小程序生成请求指示的页面项目作为待生成小程序的页面项目,获取所述页面项目的页面源文件;
在所述页面源文件中提取模板文件、样式文件和脚本文件作为所述多个模块资源文件。
可选地,所述调用小程序生成工具按照所述目标平台指示的小程序代码架构对所述多个模块资源文件进行编译,得到多个初始模块文件,包括:
对于所述多个模块资源文件中的模板文件,在所述模板文件中获取多个页面标签,对所述多个页面标签进行标签转换;
在所述模板文件中确定多个待转换属性,基于所述小程序生成工具,为所述多个待转换属性中每个待转换属性关联编译程序,其中,所述多个待转换属性是所述模板文件中的事件绑定属性、数据绑定属性、自定义指令属性以及源文件资源属性,所述编译程序的代码架构是所述小程序代码架构且具备编译对应的待转换属性绑定的内容的功能;
在所述模板文件中获取多个待转换事件,查询所述多个待转换事件中每个待转换事件的事件类型,获取预设事件映射表,在所述多个待转换事件中确定事件类型未包括在所述预设事件映射表中的目标事件,以及在所述多个待转换事件中将所述目标事件删除,得到多个剩余待转换事件,在所述预设事件映射表中查询所述多个剩余待转换事件中每个剩余待转换时间的事件类型对应的小程序事件,基于所述小程序生成工具,将查询到的多个小程序事件与所述多个剩余待转换事件进行关联;
获取所述小程序代码架构指示的编译标准,基于所述小程序生成工具将所述编译标准对应的模板编译类添加至所述模板文件中,得到所述模板文件对应的初始模块文件。
可选地,所述对所述多个页面标签进行标签转换,得到多个小程序标签,包括:
根据所述多个页面标签中每个页面标签在所述模板文件中的上下文内容,在所述多个页面标签中确定至少一个自定义标签;
在所述多个页面标签中提取除所述至少一个自定义标签外的多个页面标签作为多个待转换标签,并获取预设标签映射表;
在所述预设标签映射表中确定所述多个待转换标签中每个待转换标签对应的小程序标签,以及在所述模板文件中将所述多个待转换标签转换为多个小程序标签。
可选地,所述调用小程序生成工具按照所述目标平台指示的小程序代码架构对所述多个模块资源文件进行编译,得到多个初始模块文件,包括:
对于所述多个模块资源文件中的样式文件,获取所述小程序代码架构对应的目标语法树;
基于所述小程序生成工具,通过所述目标语法树对所述样式文件进行编译处理,并对所述样式文件中的样式单位进行转换;
在转换后的所述样式文件中确定采用指定编码方式编译的多个资源,以及在转换后的所述样式文件中对所述多个资源进行合并,得到所述样式文件对应的初始模块文件。
可选地,所述调用小程序生成工具按照所述目标平台指示的小程序代码架构对所述多个模块资源文件进行编译,得到多个初始模块文件,包括:
对于所述多个模块资源文件中的脚本文件,在所述脚本文件中确定环境变量代码块,利用所述小程序生成工具,按照所述小程序代码架构指示的编译方式对所述环境变量代码块进行编译处理,其中,若所述环境变量代码块与所述目标平台的环境不匹配,则在所述脚本文件中将所述环境变量代码块删除;
在所述脚本文件中获取多个页面生命周期函数,并获取预设函数映射表,在所述预设函数映射表中确定所述多个页面生命周期函数中每个页面生命周期函数对应的小程序生命周期函数并建立函数映射关系,其中,当未在所述预设函数映射表中查询到一页面生命周期函数对应的小程序生命周期函数时,在所述脚本文件中将所述页面生命周期函数删除;
在所述脚本文件中获取方法类中定义的事件函数,将所述事件函数移动至所述脚本文件的根节点属性中,将移动后的所述事件函数进行包装处理,以及查询所述事件函数执行后的页面事件对象属性,获取预设事件映射表,在所述预设事件映射表中获取所述页面事件对象属性对应的小程序事件对象属性,以及建立属性映射关系。
可选地,所述基于所述目标平台指定的文件名称设置方式对所述多个初始模块文件的文件名进行更新,得到多个目标模块文件,包括:
对于所述多个初始模块文件中的每个初始模块文件,获取所述初始模块文件的文件类型,在所述目标平台指定的文件名称设置方式中查询所述文件类型对应的文件名后缀;
在所述初始模块文件的文件名后增加所述文件名后缀,得到更新后的文件名,以及将文件名更新后的所述初始模块文件作为所述目标模块文件。
依据本申请第二方面,提供了一种小程序生成装置,该装置包括:
获取模块,用于响应于小程序生成请求,确定待生成小程序的页面项目,获取所述页面项目的多个模块资源文件;
编译模块,用于确定所述小程序生成请求指示的小程序所属的目标平台,调用小程序生成工具按照所述目标平台指示的小程序代码架构对所述多个模块资源文件进行编译,得到多个初始模块文件;
更新模块,用于基于所述目标平台指定的文件名称设置方式对所述多个初始模块文件的文件名进行更新,得到多个目标模块文件;
输出模块,用于将所述多个目标模块文件输出,以使所述目标平台运行所述多个目标模块文件,得到所述页面项目的平台小程序。
可选地,创建模块,用于获取所述多个模块资源文件中每个模块资源文件的文件扩展名,得到多个文件扩展名;分别获取所述多个文件扩展名中每个文件扩展名对应的编译模块,得到多个编译模块,其中,文件扩展名对应的编译模块具备编译所述文件扩展名指示的模块资源文件的功能;创建初始生成工具,获取所述初始生成工具的钩子程序,以及通过所述钩子程序将所述多个编译模块注册在所述初始生成工具中,得到所述小程序生成工具。
可选地,所述创建模块,用于对于所述多个编译模块中的每个编译模块,在所述初始生成工具中为所述编译模块设置编译路径;查询所述编译模块的编译功能指示的文件扩展名,在所述初始生成工具中按照所述文件扩展名为所述编译模块绑定钩子程序;在所述初始生成工具中对所述编译模块进行编译,为所述编译模块渲染编译模板,并为所述编译模块设置文件名称设置方式,完成所述编译模块的注册。
可选地,所述获取模块,用于查询所述小程序生成请求指示的页面项目作为待生成小程序的页面项目,获取所述页面项目的页面源文件;在所述页面源文件中提取模板文件、样式文件和脚本文件作为所述多个模块资源文件。
可选地,所述编译模块,用于对于所述多个模块资源文件中的模板文件,在所述模板文件中获取多个页面标签,对所述多个页面标签进行标签转换;在所述模板文件中确定多个待转换属性,基于所述小程序生成工具,为所述多个待转换属性中每个待转换属性关联编译程序,其中,所述多个待转换属性是所述模板文件中的事件绑定属性、数据绑定属性、自定义指令属性以及源文件资源属性,所述编译程序的代码架构是所述小程序代码架构且具备编译对应的待转换属性绑定的内容的功能;在所述模板文件中获取多个待转换事件,查询所述多个待转换事件中每个待转换事件的事件类型,获取预设事件映射表,在所述多个待转换事件中确定事件类型未包括在所述预设事件映射表中的目标事件,以及在所述多个待转换事件中将所述目标事件删除,得到多个剩余待转换事件,在所述预设事件映射表中查询所述多个剩余待转换事件中每个剩余待转换时间的事件类型对应的小程序事件,基于所述小程序生成工具,将查询到的多个小程序事件与所述多个剩余待转换事件进行关联;获取所述小程序代码架构指示的编译标准,基于所述小程序生成工具将所述编译标准对应的模板编译类添加至所述模板文件中,得到所述模板文件对应的初始模块文件。
可选地,所述编译模块,用于根据所述多个页面标签中每个页面标签在所述模板文件中的上下文内容,在所述多个页面标签中确定至少一个自定义标签;在所述多个页面标签中提取除所述至少一个自定义标签外的多个页面标签作为多个待转换标签,并获取预设标签映射表;在所述预设标签映射表中确定所述多个待转换标签中每个待转换标签对应的小程序标签,以及在所述模板文件中将所述多个待转换标签转换为多个小程序标签。
可选地,所述编译模块,用于对于所述多个模块资源文件中的样式文件,获取所述小程序代码架构对应的目标语法树;基于所述小程序生成工具,通过所述目标语法树对所述样式文件进行编译处理,并对所述样式文件中的样式单位进行转换;在转换后的所述样式文件中确定采用指定编码方式编译的多个资源,以及在转换后的所述样式文件中对所述多个资源进行合并,得到所述样式文件对应的初始模块文件。
可选地,所述编译模块,用于对于所述多个模块资源文件中的脚本文件,在所述脚本文件中确定环境变量代码块,利用所述小程序生成工具,按照所述小程序代码架构指示的编译方式对所述环境变量代码块进行编译处理,其中,若所述环境变量代码块与所述目标平台的环境不匹配,则在所述脚本文件中将所述环境变量代码块删除;在所述脚本文件中获取多个页面生命周期函数,并获取预设函数映射表,在所述预设函数映射表中确定所述多个页面生命周期函数中每个页面生命周期函数对应的小程序生命周期函数并建立函数映射关系,其中,当未在所述预设函数映射表中查询到一页面生命周期函数对应的小程序生命周期函数时,在所述脚本文件中将所述页面生命周期函数删除;在所述脚本文件中获取方法类中定义的事件函数,将所述事件函数移动至所述脚本文件的根节点属性中,将移动后的所述事件函数进行包装处理,以及查询所述事件函数执行后的页面事件对象属性,获取预设事件映射表,在所述预设事件映射表中获取所述页面事件对象属性对应的小程序事件对象属性,以及建立属性映射关系。
可选地,所述更新模块,用于对于所述多个初始模块文件中的每个初始模块文件,获取所述初始模块文件的文件类型,在所述目标平台指定的文件名称设置方式中查询所述文件类型对应的文件名后缀;在所述初始模块文件的文件名后增加所述文件名后缀,得到更新后的文件名,以及将文件名更新后的所述初始模块文件作为所述目标模块文件。
依据本申请第三方面,提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面中任一项所述方法的步骤。
依据本申请第四方面,提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面中任一项所述方法的步骤。
借由上述技术方案,本申请提供的一种小程序生成方法、装置、电子设备及计算机可读存储介质,本申请响应于小程序生成请求,确定待生成小程序的页面项目,获取页面项目的多个模块资源文件,确定小程序生成请求指示的小程序所属的目标平台,调用小程序生成工具按照目标平台指示的小程序代码架构对多个模块资源文件进行编译,得到多个初始模块文件,基于目标平台指定的文件名称设置方式对多个初始模块文件的文件名进行更新,得到多个目标模块文件,并将多个目标模块文件输出,以使目标平台运行多个目标模块文件,得到页面项目的平台小程序,通过构建小程序生成工具将页面项目中H5技术架构的代码转换为小程序技术架构的代码,实现页面项目与小程序之间的直接转换,无需重新开发小程序,降低技术迁移和学习成本,减轻工作量,提高小程序的生成效率。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本申请实施例提供的一种小程序生成方法流程示意图;
图2示出了本申请实施例提供的另一种小程序生成方法流程示意图;
图3示出了本申请实施例提供的一种小程序生成方法流程示意图;
图4示出了本申请实施例提供的一种小程序生成装置的结构示意图;
图5示出了本申请实施例提供的一种计算机设备的装置结构示意图。
具体实施方式
下面将参照附图更详细地描述本申请的示例性实施例。虽然附图中显示了本申请的示例性实施例,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本申请,并且能够将本申请的范围完整的传达给本领域的技术人员。
本申请实施例提供了一种小程序生成方法,如图1所示,该方法包括:
101、响应于小程序生成请求,确定待生成小程序的页面项目,获取页面项目的多个模块资源文件。
当下越来越多的移动服务通过小程序技术实现并借助小程序生态快速裂变,各互联网厂商也推出了自己的小程序生态,因此也有很多H5项目需要开发成小程序项目,由于技术架构不同,即使相同的功能也需要重新开发小程序版本。H5与小程序都是通过浏览器或webview(网络视图)运行,底层的脚本语言都是javascript(一种直译式脚本语言),底层的样式语言都是css(Cascading Style Sheets,层叠样式表),在这个技术背景下H5应用与小程序应用的兼容或互转才得以实现。以微信小程序为例,微信小程序使用wxml(weixinmakeup Language,框架设计中的一套标签语言)语言、wxss(WeiXin Style Sheet,一套样式语言)语言、javascript语言等,其中wxml语言使用html语法结构但标签完全是自定义的小程序标签,wxss语言与css语言相同,仅后缀名不同,js语言一致,只是内置了微信上下文对象。其它类型的小程序与微信小程序技术架构类似,具体的API(Application ProgramInterface,应用程序接口)或属性或功能的支持上有些差异。目前在为H5项目生成小程序时,都是以小程序技术架构为基础进行开发,然后将其转换成不同平台的小程序以及H5,因此要开发跨平台的小程序需要先学习小程序,使用不同厂商的小程序转换工具还需要学习不同厂商定制的语法。具体地,一种方式是可以依赖Taro实现,Taro是一个开放式跨端跨框架解决方案,支持使用React/Vue/Nerv等框架来开发各类小程序或H5。组件标签多数与微信小程序自定义标签名一致,在调用小程序api时需要通过Taro上下文进行调用,目录结构则与小程序类似。另一种方式是依赖uni-app实现,uni-app与Taro方案类似,也是以小程序技术框架为基础设计,目录结构与小程序类似。
但是申请人认识到,在上述两个方式中主要存在两个问题,一是都以小程序技术架构为基础,在开发中实际上是以小程序技术进行项目开发,无法直接将原有H5项目转换成小程序项目,必须按小程序的技术规范开发才能实现转换成不同平台的小程序或H5,使用该技术输出的代码支持多个平台,而不是可以将原有的H5技术直接转换成不同平台代码。二是选择不同厂商的技术解决方案,当某个厂商的解决方案有严重问题或停止维护时,将现有技术解决方案迁移到其它厂商的解决方案,其迁移成本和风险都比较高,不同厂商的技术架构虽然类似,但实现细节还是有很多差异。而且,对于原有的H5项目迁移到不同厂商的技术架构上再进行开发,迁移成本较高,并且迁移之后生成的H5代码也需要重新测试,并且重新生成的H5代码与原H5代码还有很大差异,资源体积也略大。
因此,本申请提出了一种小程序生成方法,以现有H5技术为基础,不以小程序技术架构为基础,通过构建小程序生成工具将页面项目中H5技术架构的代码转换为小程序技术架构的代码,降低技术迁移和学习成本。其中,本申请的技术方案可以应用于具有小程序开发功能的小程序开发平台,小程序开发平台中构建有小程序生成工具,当开发人员在小程序开发平台中请求生成小程序时,小程序开发平台会接收到开发人员的小程序生成请求,确定待生成小程序的页面项目,并获取页面项目的多个模块资源文件。具体地,页面项目可以是H5页面项目,多个模块资源文件可以是H5页面项目的模板文件、样式文件和脚本文件,以便后续分别对这些模块资源文件进行编译,使编译后的模块资源文件的代码与小程序技术架构所匹配,进而直接得到该页面项目的小程序。
102、确定小程序生成请求指示的小程序所属的目标平台,调用小程序生成工具按照目标平台指示的小程序代码架构对多个模块资源文件进行编译,得到多个初始模块文件。
其中,开发人员在请求生成小程序时通常会指定在哪个平台生成页面项目的小程序,小程序开发平台需要按照其指定的平台的小程序代码架构对得到的多个模块资源文件进行编译,进而生成小程序。因此,小程序开发平台会确定小程序生成请求指示的小程序所属的目标平台,该目标平台也即开发人员指定的即将生成小程序的平台。接着,由于小程序开发平台中创建有用于对模块资源文件进行编译的小程序生成工具,因此,小程序开发平台调用小程序生成工具按照目标平台指示的小程序代码架构对多个模块资源文件进行编译,得到多个初始模块文件。
103、基于目标平台指定的文件名称设置方式对多个初始模块文件的文件名进行更新,得到多个目标模块文件。
其中,由于每个平台对程序的文件的命名方式都有一定的规定,因此,在本申请实施例中,小程序开发平台还会基于目标平台指定的文件名称设置方式对多个初始模块文件的文件名进行更新,得到多个目标模块文件,使得多个目标模块文件的文件名均满足目标平台指定的文件名。
104、将多个目标模块文件输出,以使目标平台运行多个目标模块文件,得到页面项目的平台小程序。
其中,生成多个目标模块文件,目标平台运行这些目标模块文件便可以实现在目标平台上为页面项目创建小程序,因此,小程序开发平台将多个目标模块文件输出,以使目标平台运行多个目标模块文件,得到页面项目的平台小程序。
本申请实施例提供的方法,响应于小程序生成请求,确定待生成小程序的页面项目,获取页面项目的多个模块资源文件,确定小程序生成请求指示的小程序所属的目标平台,调用小程序生成工具按照目标平台指示的小程序代码架构对多个模块资源文件进行编译,得到多个初始模块文件,基于目标平台指定的文件名称设置方式对多个初始模块文件的文件名进行更新,得到多个目标模块文件,并将多个目标模块文件输出,以使目标平台运行多个目标模块文件,得到页面项目的平台小程序,通过构建小程序生成工具将页面项目中H5技术架构的代码转换为小程序技术架构的代码,实现页面项目与小程序之间的直接转换,无需重新开发小程序,降低技术迁移和学习成本,减轻工作量,提高小程序的生成效率。
进一步的,作为上述实施例具体实施方式的细化和扩展,为了完整说明本实施例的具体实施过程,本申请实施例提供了另一种小程序生成方法,如图2所示,该方法包括:
201、构建小程序生成工具。
在本申请实施例中,为了实现页面项目向小程序的直接转换,本申请创建有小程序生成工具,并通过开发webpack loader(一个模块打包器的程序)将构建编译功能集成到小程序生成工具,在loader(程序)中通过小程序生成工具上下文获取构建工具钩子,通过钩子回调函数将模板编译、样式编译、脚本编译、核心编译等模块注册到小程序生成工具的loader中,以使小程序生成工具具备编译页面项目的模块资源文件的功能。其中,构建向程序生成工具的过程如下:
小程序生成工具中运行有辅助引导程序,辅助引导程序负责将不同的编译模块注入到小程序生成工具中。而由于不同文件扩展名的模块资源文件需要采用不同的编译模块进行编译,因此,小程序开发平台会获取多个模块资源文件中每个模块资源文件的文件扩展名,得到多个文件扩展名,并分别获取多个文件扩展名中每个文件扩展名对应的编译模块,得到多个编译模块,其中,文件扩展名对应的编译模块具备编译文件扩展名指示的模块资源文件的功能。接着,小程序开发平台创建初始生成工具,获取初始生成工具的钩子程序,以及通过钩子程序将多个编译模块注册在初始生成工具中,得到小程序生成工具。
其中,在通过钩子程序将多个编译模块注册在初始生成工具中时,对于多个编译模块中的每个编译模块,小程序开发平台会在初始生成工具中为编译模块设置编译路径,查询编译模块的编译功能指示的文件扩展名,在初始生成工具中按照文件扩展名为编译模块绑定钩子程序。随后,在初始生成工具中对编译模块进行编译,为编译模块渲染编译模板,并为编译模块设置文件名称设置方式,完成编译模块的注册。
需要说明的是,辅助引导程序不仅负责将不同的编译模块注入到小程序生成工具中,还能够通过小程序生成工具的上下文进行钩子事件绑定,在不同的生命周期函数中获取模块资源信息并记录,以及在小程序生成工具运行时能够根据不同的文件扩展名调用不同的编译模块。
202、响应于小程序生成请求,查询小程序生成请求指示的页面项目作为待生成小程序的页面项目,获取页面项目的页面源文件,在页面源文件中提取模板文件、样式文件和脚本文件作为多个模块资源文件。
在本申请实施例中,完成了小程序生成工具的构建后,便可以开始执行小程序的生成操作。其中,小程序生成平台中可以设置小程序开发入口,当检测到该小程序开发入口被触发时,确定接收到开发人员的小程序生成请求。响应于小程序生成请求,小程序开发平台会确定开发人员请求为哪个页面项目生成小程序,也即查询小程序生成请求指示的页面项目作为待生成小程序的页面项目,获取页面项目的页面源文件,在页面源文件中提取模板文件、样式文件和脚本文件作为多个模块资源文件,以便后续通过对这些模块资源文件的转换实现小程序的生成。
203、确定小程序生成请求指示的小程序所属的目标平台,调用小程序生成工具按照目标平台指示的小程序代码架构对多个模块资源文件进行编译,得到多个初始模块文件。
在本申请实施例中,开发人员在请求生成小程序时通常会指定在哪个平台生成页面项目的小程序,小程序开发平台需要按照其指定的平台的小程序代码架构对得到的多个模块资源文件进行编译,进而生成小程序。因此,小程序开发平台会确定小程序生成请求指示的小程序所属的目标平台,该目标平台也即开发人员指定的即将生成小程序的平台。接着,由于小程序开发平台中创建有用于对模块资源文件进行编译的小程序生成工具,因此,小程序开发平台调用小程序生成工具按照目标平台指示的小程序代码架构对多个模块资源文件进行编译,得到多个初始模块文件。其中,由上述步骤202中可知,初始模块文件包括模板文件、样式文件和脚本文件,模板文件、样式文件和脚本文件需要分别进行编译才能够得到代码与目标平台指示的小程序代码架构匹配的初始模块文件,因此,下面分别对模板文件、样式文件和脚本文件的编译过程进行描述:
一、模板文件。
模板文件也即templae文件,对模板文件进行编译时,需要通过html抽象语法树对模板文件进行编译处理,编译转换主要分为四部分:标签转换、属性转换、事件转换、平台差异化编译。
标签转换是通过定义预设标签映射表将标准的页面标签(也即html标签)与小程序标签做映射关系,对于自定义标签(比如自定义组件标签)则要保持不变,对于一个标签是否为自定义标签,需要结合标签在模板文件中上下文解析的结果进行标记确认。具体地,在进行标签转换时,需要先根据多个页面标签中每个页面标签在模板文件中的上下文内容,在多个页面标签中确定至少一个自定义标签,在多个页面标签中提取除至少一个自定义标签外的多个页面标签作为多个待转换标签,并获取预设标签映射表。随后,在预设标签映射表中确定多个待转换标签中每个待转换标签对应的小程序标签,以及在模板文件中将多个待转换标签转换为多个小程序标签,实现对模板文件中多个页面标签进行标签转换。
属性转换是模板文件中模板标签属性与小程序标签属性之间的转换,主要需要转换的是事件绑定属性、数据绑定属性、自定义指令属性以及源文件资源属性等,不同类型的指令需要有对应的编译转换处理程序。具体地,在进行属性转换时,需要在模板文件中确定多个待转换属性,基于小程序生成工具,为多个待转换属性中每个待转换属性关联编译程序,其中,多个待转换属性是模板文件中的事件绑定属性、数据绑定属性、自定义指令属性以及源文件资源属性,编译程序的代码架构是小程序代码架构且具备编译对应的待转换属性绑定的内容的功能。
事件转换是通过预设事件映射表进行模板文件中事件与小程序事件的转换,模板中的事件通过修饰符实现事件冒泡及捕获类型的定义,需要修饰符定义的事件类型与不同平台的小程序事件名进行关联,并移除掉不被支持的事件类型。具体地,在进行事件转换时,需要在模板文件中获取多个待转换事件,查询多个待转换事件中每个待转换事件的事件类型,获取预设事件映射表,在多个待转换事件中确定事件类型未包括在预设事件映射表中的目标事件,以及在多个待转换事件中将目标事件删除,得到多个剩余待转换事件。随后,在预设事件映射表中查询多个剩余待转换事件中每个剩余待转换时间的事件类型对应的小程序事件,基于小程序生成工具,将查询到的多个小程序事件与多个剩余待转换事件进行关联。
平台差异化编译是模板编译以微信小程序模板语法为标准,不同平台小程序继承该模板编译类,多数的模板语法相同,仅模板文件后缀名不同,个别平台事件绑定有所差异。因此,在进行平台差异化编译时,需要获取小程序代码架构指示的编译标准,基于小程序生成工具将编译标准对应的模板编译类添加至模板文件中。
这样,按照上述过程依次进行标签转换、属性转换、事件转换、平台差异化编译后,便可以得到模板文件对应的初始模块文件。
二、样式文件。
样式文件也即style文件,在对样式文件进行编译时,需要通过目标语法树对样式文件进行编译处理,对样式的单位进行转换,并且通过分析将指定编码方式资源进行选择器合并,解决重复指定编码方式图片资源产生的冗余体积。另外,对不同平台小程序样式编译进行继承扩展,基本上各平台小程序样式文件仅后缀名有所不同。因此,在对样式文件进行编译时,需要先获取小程序代码架构对应的目标语法树,具体可以是css语法树,基于小程序生成工具,通过目标语法树对样式文件进行编译处理,并对样式文件中的样式单位进行转换。随后,在转换后的样式文件中确定采用指定编码方式编译的多个资源,以及在转换后的样式文件中对多个资源进行合并,得到样式文件对应的初始模块文件,其中,指定编码方式可以是base64(一种编码方式),以便解决重复base64图片资源产生的冗余体积。
三、脚本文件。
脚本文件也即script文件,在对脚本文件进行编译时,需要通过js语法树进行编译处理,编译过程主要分为以下几部分:环境变量编译、模块依赖关系编译、模块导入导出编译、生命周期编译、事件绑定编译、配置模块编译等。在编译过程中借助于辅助程序分析当前脚本类型并进行标记,脚本文件分为三种类型:页面、入口、组件、普通模块。页面类型对应小程序中的pages(页面),入口对应小程序中的app.js。
环境变量编译是通过环境变量条件代码块的编译处理,在构建输出时,假设当前输出平台为微信小程序,对于环境变量条件不匹配微信平台时,该代码段将被剔除。因此,在进行环境变量编译时,需要先在脚本文件中确定环境变量代码块,利用小程序生成工具,按照小程序代码架构指示的编译方式对环境变量代码块进行编译处理,其中,若环境变量代码块与目标平台的环境不匹配,则在脚本文件中将环境变量代码块删除。
生命周期编译是将vue(用户界面的渐进式框架)中的生命周期函数与平台小程序生命周期函数进行映射,并剔除不被支持的生命周期函数。因此,在进行生命周期编译时,需要在脚本文件中获取多个页面生命周期函数,并获取预设函数映射表,在预设函数映射表中确定多个页面生命周期函数中每个页面生命周期函数对应的小程序生命周期函数并建立函数映射关系,其中,当未在预设函数映射表中查询到一页面生命周期函数对应的小程序生命周期函数时,在脚本文件中将页面生命周期函数删除。
事件绑定编译是将vue组件中的methods(方法)中定义的属性函数移动到组件根节点属性,并将事件函数进行包装处理,统一事件执行后的Events对象属性,根据不台平台小程序的Events(事件)对象进行属性映射。因此,在进行事件绑定编译时,需要在脚本文件中获取方法类中定义的事件函数,将事件函数移动至脚本文件的根节点属性中,将移动后的事件函数进行包装处理,以及查询事件函数执行后的页面事件对象属性,获取预设事件映射表,在预设事件映射表中获取页面事件对象属性对应的小程序事件对象属性,以及建立属性映射关系。
这样,通过上面三个内容便能够实现对模板文件、样式文件和脚本文件的编译,得到多个初始模块文件。
204、基于目标平台指定的文件名称设置方式对多个初始模块文件的文件名进行更新,得到多个目标模块文件。
在本申请实施例中,其中,由于每个平台对程序的文件的命名方式都有一定的规定,因此,在本申请实施例中,小程序开发平台还会基于目标平台指定的文件名称设置方式对多个初始模块文件的文件名进行更新,得到多个目标模块文件,使得多个目标模块文件的文件名均满足目标平台指定的文件名。
其中,对于多个初始模块文件中的每个初始模块文件,小程序开发平台会获取初始模块文件的文件类型,在目标平台指定的文件名称设置方式中查询文件类型对应的文件名后缀,在初始模块文件的文件名后增加文件名后缀,得到更新后的文件名,以及将文件名更新后的初始模块文件作为目标模块文件。具体地,模板文件对应的文件名后缀可以是“.vue”,脚本文件对应的文件名后缀可以是“.js”,样式文件对应的文件名后缀可以是“.less”。
205、将多个目标模块文件输出,以使目标平台运行多个目标模块文件,得到页面项目的平台小程序。
在本申请实施例中,得到多个目标模块文件后,小程序开发平台会将多个目标模块文件输出,以使目标平台运行多个目标模块文件,得到页面项目的平台小程序。其中,在输出多个目标模块时,可以采用列表的方式将多个目标模块文件进行罗列,形成模块列表并输出。
综上所述,本申请的技术方案总结如下:
如图3所示,小程序开发平台通过辅助引导程序将多个编译模块注册在小程序生成工具中,接着获取页面项目的模板文件、样式文件和脚本文件,分别对模板文件、样式文件和脚本文件进行编译,得到代码架构符合目标平台指示的小程序代码架构的多个初始模块文件,并按照目标平台指定的文件名称设置方式对多个初始模块文件的文件名进行更新,得到多个后缀符合目标平台要求的目标模块文件,以使目标平台运行多个目标模块文件,得到页面项目的平台小程序。
本申请实施例提供的方法,通过构建小程序生成工具将页面项目中H5技术架构的代码转换为小程序技术架构的代码,实现页面项目与小程序之间的直接转换,无需重新开发小程序,降低技术迁移和学习成本,减轻工作量,提高小程序的生成效率。
进一步地,作为图1所述方法的具体实现,本申请实施例提供了一种小程序生成装置,如图4所示,所述装置包括:获取模块401,编译模块402,更新模块403和输出模块404。
该获取模块401,用于响应于小程序生成请求,确定待生成小程序的页面项目,获取所述页面项目的多个模块资源文件;
该编译模块402,用于确定所述小程序生成请求指示的小程序所属的目标平台,调用小程序生成工具按照所述目标平台指示的小程序代码架构对所述多个模块资源文件进行编译,得到多个初始模块文件;
该更新模块403,用于基于所述目标平台指定的文件名称设置方式对所述多个初始模块文件的文件名进行更新,得到多个目标模块文件;
该输出模块404,用于将所述多个目标模块文件输出,以使所述目标平台运行所述多个目标模块文件,得到所述页面项目的平台小程序。
在具体的应用场景中,该装置还包括:创建模块。
创建模块,用于获取所述多个模块资源文件中每个模块资源文件的文件扩展名,得到多个文件扩展名;分别获取所述多个文件扩展名中每个文件扩展名对应的编译模块,得到多个编译模块,其中,文件扩展名对应的编译模块具备编译所述文件扩展名指示的模块资源文件的功能;创建初始生成工具,获取所述初始生成工具的钩子程序,以及通过所述钩子程序将所述多个编译模块注册在所述初始生成工具中,得到所述小程序生成工具。
在具体的应用场景中,该创建模块,用于对于所述多个编译模块中的每个编译模块,在所述初始生成工具中为所述编译模块设置编译路径;查询所述编译模块的编译功能指示的文件扩展名,在所述初始生成工具中按照所述文件扩展名为所述编译模块绑定钩子程序;在所述初始生成工具中对所述编译模块进行编译,为所述编译模块渲染编译模板,并为所述编译模块设置文件名称设置方式,完成所述编译模块的注册。
在具体的应用场景中,该获取模块,用于查询所述小程序生成请求指示的页面项目作为待生成小程序的页面项目,获取所述页面项目的页面源文件;在所述页面源文件中提取模板文件、样式文件和脚本文件作为所述多个模块资源文件。
在具体的应用场景中,该编译模块,用于对于所述多个模块资源文件中的模板文件,在所述模板文件中获取多个页面标签,对所述多个页面标签进行标签转换;在所述模板文件中确定多个待转换属性,基于所述小程序生成工具,为所述多个待转换属性中每个待转换属性关联编译程序,其中,所述多个待转换属性是所述模板文件中的事件绑定属性、数据绑定属性、自定义指令属性以及源文件资源属性,所述编译程序的代码架构是所述小程序代码架构且具备编译对应的待转换属性绑定的内容的功能;在所述模板文件中获取多个待转换事件,查询所述多个待转换事件中每个待转换事件的事件类型,获取预设事件映射表,在所述多个待转换事件中确定事件类型未包括在所述预设事件映射表中的目标事件,以及在所述多个待转换事件中将所述目标事件删除,得到多个剩余待转换事件,在所述预设事件映射表中查询所述多个剩余待转换事件中每个剩余待转换时间的事件类型对应的小程序事件,基于所述小程序生成工具,将查询到的多个小程序事件与所述多个剩余待转换事件进行关联;获取所述小程序代码架构指示的编译标准,基于所述小程序生成工具将所述编译标准对应的模板编译类添加至所述模板文件中,得到所述模板文件对应的初始模块文件。
在具体的应用场景中,该编译模块,用于根据所述多个页面标签中每个页面标签在所述模板文件中的上下文内容,在所述多个页面标签中确定至少一个自定义标签;在所述多个页面标签中提取除所述至少一个自定义标签外的多个页面标签作为多个待转换标签,并获取预设标签映射表;在所述预设标签映射表中确定所述多个待转换标签中每个待转换标签对应的小程序标签,以及在所述模板文件中将所述多个待转换标签转换为多个小程序标签。
在具体的应用场景中,该编译模块,用于对于所述多个模块资源文件中的样式文件,获取所述小程序代码架构对应的目标语法树;基于所述小程序生成工具,通过所述目标语法树对所述样式文件进行编译处理,并对所述样式文件中的样式单位进行转换;在转换后的所述样式文件中确定采用指定编码方式编译的多个资源,以及在转换后的所述样式文件中对所述多个资源进行合并,得到所述样式文件对应的初始模块文件。
在具体的应用场景中,该编译模块,用于对于所述多个模块资源文件中的脚本文件,在所述脚本文件中确定环境变量代码块,利用所述小程序生成工具,按照所述小程序代码架构指示的编译方式对所述环境变量代码块进行编译处理,其中,若所述环境变量代码块与所述目标平台的环境不匹配,则在所述脚本文件中将所述环境变量代码块删除;在所述脚本文件中获取多个页面生命周期函数,并获取预设函数映射表,在所述预设函数映射表中确定所述多个页面生命周期函数中每个页面生命周期函数对应的小程序生命周期函数并建立函数映射关系,其中,当未在所述预设函数映射表中查询到一页面生命周期函数对应的小程序生命周期函数时,在所述脚本文件中将所述页面生命周期函数删除;在所述脚本文件中获取方法类中定义的事件函数,将所述事件函数移动至所述脚本文件的根节点属性中,将移动后的所述事件函数进行包装处理,以及查询所述事件函数执行后的页面事件对象属性,获取预设事件映射表,在所述预设事件映射表中获取所述页面事件对象属性对应的小程序事件对象属性,以及建立属性映射关系。
在具体的应用场景中,该更新模块,用于对于所述多个初始模块文件中的每个初始模块文件,获取所述初始模块文件的文件类型,在所述目标平台指定的文件名称设置方式中查询所述文件类型对应的文件名后缀;在所述初始模块文件的文件名后增加所述文件名后缀,得到更新后的文件名,以及将文件名更新后的所述初始模块文件作为所述目标模块文件。
本申请实施例提供的装置,响应于小程序生成请求,确定待生成小程序的页面项目,获取页面项目的多个模块资源文件,确定小程序生成请求指示的小程序所属的目标平台,调用小程序生成工具按照目标平台指示的小程序代码架构对多个模块资源文件进行编译,得到多个初始模块文件,基于目标平台指定的文件名称设置方式对多个初始模块文件的文件名进行更新,得到多个目标模块文件,并将多个目标模块文件输出,以使目标平台运行多个目标模块文件,得到页面项目的平台小程序,通过构建小程序生成工具将页面项目中H5技术架构的代码转换为小程序技术架构的代码,实现页面项目与小程序之间的直接转换,无需重新开发小程序,降低技术迁移和学习成本,减轻工作量,提高小程序的生成效率。
需要说明的是,本申请实施例提供的一种小程序生成装置所涉及各功能单元的其他相应描述,可以参考图1、图2和图3中的对应描述,在此不再赘述。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
在示例性实施例中,参见图5,还提供了一种计算机设备,该计算机设备包括总线、处理器、存储器和通信接口,还可以包括输入输出接口和显示设备,其中,各个功能单元之间可以通过总线完成相互间的通信。该存储器存储有计算机程序,处理器,用于执行存储器上所存放的程序,执行上述实施例中的小程序生成方法。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述的小程序生成方法的步骤。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施场景所述的方法。
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本申请所必须的。
本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本申请序号仅仅为了描述,不代表实施场景的优劣。
以上公开的仅为本申请的几个具体实施场景,但是,本申请并非局限于此,任何本领域的技术人员能思之的变化都应落入本申请的保护范围。

Claims (10)

1.一种小程序生成方法,其特征在于,包括:
响应于小程序生成请求,确定待生成小程序的页面项目,获取所述页面项目的多个模块资源文件;
确定所述小程序生成请求指示的小程序所属的目标平台,调用小程序生成工具按照所述目标平台指示的小程序代码架构对所述多个模块资源文件进行编译,得到多个初始模块文件;
基于所述目标平台指定的文件名称设置方式对所述多个初始模块文件的文件名进行更新,得到多个目标模块文件;
将所述多个目标模块文件输出,以使所述目标平台运行所述多个目标模块文件,得到所述页面项目的平台小程序。
2.根据权利要求1所述的方法,其特征在于,所述响应于小程序生成请求,确定待生成小程序的页面项目,获取所述页面项目的多个模块资源文件之前,所述方法还包括:
获取所述多个模块资源文件中每个模块资源文件的文件扩展名,得到多个文件扩展名;
分别获取所述多个文件扩展名中每个文件扩展名对应的编译模块,得到多个编译模块,其中,文件扩展名对应的编译模块具备编译所述文件扩展名指示的模块资源文件的功能;
创建初始生成工具,获取所述初始生成工具的钩子程序,以及通过所述钩子程序将所述多个编译模块注册在所述初始生成工具中,得到所述小程序生成工具。
3.根据权利要求2所述的方法,其特征在于,所述通过所述钩子程序将所述多个编译模块注册在所述初始生成工具中,包括:
对于所述多个编译模块中的每个编译模块,在所述初始生成工具中为所述编译模块设置编译路径;
查询所述编译模块的编译功能指示的文件扩展名,在所述初始生成工具中按照所述文件扩展名为所述编译模块绑定钩子程序;
在所述初始生成工具中对所述编译模块进行编译,为所述编译模块渲染编译模板,并为所述编译模块设置文件名称设置方式,完成所述编译模块的注册。
4.根据权利要求1所述的方法,其特征在于,所述确定待生成小程序的页面项目,获取所述页面项目的多个模块资源文件,包括:
查询所述小程序生成请求指示的页面项目作为待生成小程序的页面项目,获取所述页面项目的页面源文件;
在所述页面源文件中提取模板文件、样式文件和脚本文件作为所述多个模块资源文件。
5.根据权利要求1所述的方法,其特征在于,所述调用小程序生成工具按照所述目标平台指示的小程序代码架构对所述多个模块资源文件进行编译,得到多个初始模块文件,包括:
对于所述多个模块资源文件中的模板文件,在所述模板文件中获取多个页面标签,对所述多个页面标签进行标签转换;
在所述模板文件中确定多个待转换属性,基于所述小程序生成工具,为所述多个待转换属性中每个待转换属性关联编译程序,其中,所述多个待转换属性是所述模板文件中的事件绑定属性、数据绑定属性、自定义指令属性以及源文件资源属性,所述编译程序的代码架构是所述小程序代码架构且具备编译对应的待转换属性绑定的内容的功能;
在所述模板文件中获取多个待转换事件,查询所述多个待转换事件中每个待转换事件的事件类型,获取预设事件映射表,在所述多个待转换事件中确定事件类型未包括在所述预设事件映射表中的目标事件,以及在所述多个待转换事件中将所述目标事件删除,得到多个剩余待转换事件,在所述预设事件映射表中查询所述多个剩余待转换事件中每个剩余待转换时间的事件类型对应的小程序事件,基于所述小程序生成工具,将查询到的多个小程序事件与所述多个剩余待转换事件进行关联;
获取所述小程序代码架构指示的编译标准,基于所述小程序生成工具将所述编译标准对应的模板编译类添加至所述模板文件中,得到所述模板文件对应的初始模块文件。
6.根据权利要求5所述的方法,其特征在于,所述对所述多个页面标签进行标签转换,得到多个小程序标签,包括:
根据所述多个页面标签中每个页面标签在所述模板文件中的上下文内容,在所述多个页面标签中确定至少一个自定义标签;
在所述多个页面标签中提取除所述至少一个自定义标签外的多个页面标签作为多个待转换标签,并获取预设标签映射表;
在所述预设标签映射表中确定所述多个待转换标签中每个待转换标签对应的小程序标签,以及在所述模板文件中将所述多个待转换标签转换为多个小程序标签。
7.根据权利要求1所述的方法,其特征在于,所述调用小程序生成工具按照所述目标平台指示的小程序代码架构对所述多个模块资源文件进行编译,得到多个初始模块文件,包括:
对于所述多个模块资源文件中的样式文件,获取所述小程序代码架构对应的目标语法树;
基于所述小程序生成工具,通过所述目标语法树对所述样式文件进行编译处理,并对所述样式文件中的样式单位进行转换;
在转换后的所述样式文件中确定采用指定编码方式编译的多个资源,以及在转换后的所述样式文件中对所述多个资源进行合并,得到所述样式文件对应的初始模块文件。
8.根据权利要求1所述的方法,其特征在于,所述调用小程序生成工具按照所述目标平台指示的小程序代码架构对所述多个模块资源文件进行编译,得到多个初始模块文件,包括:
对于所述多个模块资源文件中的脚本文件,在所述脚本文件中确定环境变量代码块,利用所述小程序生成工具,按照所述小程序代码架构指示的编译方式对所述环境变量代码块进行编译处理,其中,若所述环境变量代码块与所述目标平台的环境不匹配,则在所述脚本文件中将所述环境变量代码块删除;
在所述脚本文件中获取多个页面生命周期函数,并获取预设函数映射表,在所述预设函数映射表中确定所述多个页面生命周期函数中每个页面生命周期函数对应的小程序生命周期函数并建立函数映射关系,其中,当未在所述预设函数映射表中查询到一页面生命周期函数对应的小程序生命周期函数时,在所述脚本文件中将所述页面生命周期函数删除;
在所述脚本文件中获取方法类中定义的事件函数,将所述事件函数移动至所述脚本文件的根节点属性中,将移动后的所述事件函数进行包装处理,以及查询所述事件函数执行后的页面事件对象属性,获取预设事件映射表,在所述预设事件映射表中获取所述页面事件对象属性对应的小程序事件对象属性,以及建立属性映射关系。
9.根据权利要求1所述的方法,其特征在于,所述基于所述目标平台指定的文件名称设置方式对所述多个初始模块文件的文件名进行更新,得到多个目标模块文件,包括:
对于所述多个初始模块文件中的每个初始模块文件,获取所述初始模块文件的文件类型,在所述目标平台指定的文件名称设置方式中查询所述文件类型对应的文件名后缀;
在所述初始模块文件的文件名后增加所述文件名后缀,得到更新后的文件名,以及将文件名更新后的所述初始模块文件作为所述目标模块文件。
10.一种小程序生成装置,其特征在于,包括:
获取模块,用于响应于小程序生成请求,确定待生成小程序的页面项目,获取所述页面项目的多个模块资源文件;
编译模块,用于确定所述小程序生成请求指示的小程序所属的目标平台,调用小程序生成工具按照所述目标平台指示的小程序代码架构对所述多个模块资源文件进行编译,得到多个初始模块文件;
更新模块,用于基于所述目标平台指定的文件名称设置方式对所述多个初始模块文件的文件名进行更新,得到多个目标模块文件;
输出模块,用于将所述多个目标模块文件输出,以使所述目标平台运行所述多个目标模块文件,得到所述页面项目的平台小程序。
CN202211505765.1A 2022-11-29 2022-11-29 小程序生成方法、装置、电子设备及计算机可读存储介质 Pending CN118151933A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211505765.1A CN118151933A (zh) 2022-11-29 2022-11-29 小程序生成方法、装置、电子设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211505765.1A CN118151933A (zh) 2022-11-29 2022-11-29 小程序生成方法、装置、电子设备及计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN118151933A true CN118151933A (zh) 2024-06-07

Family

ID=91287266

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211505765.1A Pending CN118151933A (zh) 2022-11-29 2022-11-29 小程序生成方法、装置、电子设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN118151933A (zh)

Similar Documents

Publication Publication Date Title
CN108920133B (zh) 跨语言编程方法、装置、电子设备及存储介质
KR100661393B1 (ko) 웹 프로그래밍 환경을 응용한 웹사이트 관리 시스템 및방법
US9086931B2 (en) System for translating diverse programming languages
US9965259B2 (en) System for translating diverse programming languages
Bouillon et al. Retargeting web pages to other computing platforms with VAQUITA
CN116069325B (zh) 前端项目构建方法、装置、设备及计算机可读存储介质
CN113031932A (zh) 项目开发方法、装置、电子设备及存储介质
CA2538561C (en) System and method for conversion of web services applications into component based applications for devices
Serrano et al. Multitier programming in Hop
CN113360156B (zh) 一种ios编译方法及相关设备
Miravet et al. Framework for the declarative implementation of native mobile applications
Franky et al. Improving implementation of code generators: A regular-expression approach
Shute Advanced JavaScript: Speed up web development with the powerful features and benefits of JavaScript
CN117234529A (zh) 一种基于dsl解析资源生成api的方法
CN115857898B (zh) 一种应用系统构建和运行方法及装置
CN115794214B (zh) 应用模块元数据管理方法、设备、存储介质及装置
EP3611616A1 (en) Software code optimizer and method
CN114721647B (zh) 一种基于无代码应用开发的面向对象编程方法
CN118151933A (zh) 小程序生成方法、装置、电子设备及计算机可读存储介质
CN115390846A (zh) 编译构建方法、装置、电子设备和存储介质
Steffen DSL-driven integration of http services in dime
CN114706582A (zh) 程序运行时的图标处理方法及装置、电子设备、存储介质
Lee et al. Design and implementation of the WIPI-to-Android automatic mobile game converter for the contents compatibility in the heterogeneous mobile OS
Tesoriero et al. Transformation architecture for multi-layered webapp source code generation
Nogueira et al. Automatic generation of test cases and test purposes from natural language

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination