CN114327446A - 一种小程序转换应用程序的处理方法及装置 - Google Patents
一种小程序转换应用程序的处理方法及装置 Download PDFInfo
- Publication number
- CN114327446A CN114327446A CN202210244154.XA CN202210244154A CN114327446A CN 114327446 A CN114327446 A CN 114327446A CN 202210244154 A CN202210244154 A CN 202210244154A CN 114327446 A CN114327446 A CN 114327446A
- Authority
- CN
- China
- Prior art keywords
- application program
- rendering
- page
- program
- global
- 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.)
- Granted
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种小程序转换应用程序的处理方法及装置,包括:获取小程序工程;对所述小程序工程进行编码,将编码后的配置信息转换为应用程序对应的目标数据包;利用目标框架对所述目标数据包进行渲染,得到应用程序对应的渲染界面,所述目标框架嵌入至所述应用程序,且具有双线程渲染模型,所述双线程渲染模型采用逻辑层和视图层分离的结构。本发明可以利用目标框架对小程序工程对应的目标数据包进行渲染,满足了小程序工程中双线程渲染模型的需求,无需采用H5架构,可以将小程序工程直接转换为对应的应用程序,解决了利用H5架构将小程序工程转换为应用程序式存在白屏、加载慢、渲染慢的问题。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种小程序转换应用程序的处理方法及装置。
背景技术
目前越来越多的移动应用产品会通过应用程序(Application,APP)在终端上进行展示,但是也会通过小程序的形态进行分发、获取流量。其中,小程序是一种能够实现某种业务功能,但并不需要下载安装即可使用的应用程序,小程序通常是以某个应用软件作为运行平台来实现;应用程序APP是基于电子设备对应的操作系统进行运行的。
通常即使生成同一业务场景的APP和小程序,也是APP有一套对应的代码,小程序有一套代码,这两套代码需要独立维护,这样就使得维护成本较高。若利用H5技术将小程序转换为APP,需要将小程序工程编译成H5页面再套用APP原生外壳,页面通过Webview加载H5页面来实现。这样会存在白屏、加载慢、渲染慢的问题。
发明内容
针对于上述问题,本发明提供一种小程序转换应用程序的处理方法及装置,解决了小程序转换为应用程序式存在白屏、加载慢、渲染慢的问题。
为了实现上述目的,本发明提供了如下技术方案:
一种小程序转换应用程序的处理方法,包括:
获取小程序工程;
对所述小程序工程进行编码,将编码后的配置信息转换为应用程序对应的目标数据包;
利用目标框架对所述目标数据包进行渲染,得到应用程序对应的渲染界面,所述目标框架嵌入至所述应用程序,且具有双线程渲染模型,所述双线程渲染模型采用逻辑层和视图层分离的结构。
可选地,所述对所述小程序工程进行编码,将编码后的配置信息转换为应用程序对应的目标数据包,包括:
对所述小程序工程进行编码,得到与所述小程序工程对应的编码后的配置信息;
基于所述编码后的配置信息,确定所述小程序工程对应的配置项;
将所述小程序工程对应的配置项转换为应用程序对应的配置项;
将所述应用程序对应的配置项以及关联配置信息,确定为所述应用程序对应的目标数据包。
可选地,将所述小程序工程对应的配置项转换为应用程序对应的配置项,包括:
获取所述小程序工程对应的全局配置项和页面配置项;
基于应用程序全局配置信息对所述全局配置项进行转换,并基于应用程序页面配置信息对所述页面配置项进行转换,获得应用程序对应的配置项。
可选地,所述方法还包括:
基于小程序工程对应的渲染特征,生成目标框架,包括:
获取与所述小程序工程对应的双线程渲染模型,所述双线程渲染模型加载的资源至少包括JS框架、超文本标记语言模板和业务代码;
基于小程序工程对应的双线程渲染模型,生成全局JS引擎,所述全局JS引擎对所述双线程渲染模型中的视图层和逻辑层的处理流程进行管理;
基于所述双线程渲染模型和所述全局JS引擎,生成目标框架。
可选地,所述利用目标框架对所述目标数据包进行渲染,得到应用程序对应的渲染界面,包括:
基于所述双线程渲染模型对所述目标数据包进行加载,得到与所述小程序工程对应的逻辑层和视图层;
基于所述全局JS引擎对所述逻辑层和视图层的处理流程进行管控,以获得利用逻辑层产生的渲染需求信息;
控制所述视图层基于所述渲染需求信息对所述目标数据包进行渲染,得到应用程序对应的渲染界面。
可选地,所述基于所述全局JS引擎对所述逻辑层和视图层的处理流程进行管控,包括:
对所述全局JS引擎进行初始化,并创建所述全局JS引擎上下文和环境变量;
通过所述全局JS引擎加载JS框架和业务代码;
响应于加载应用程序页面请求,基于小程序原生接口获取视图层对应的页面实例、业务代码的页面路径和页面的标识信息;
利用所述全局JS引擎根据所述页面路径和所述页面的标识信息生成文档对象模型树,并计算得到文件补丁;
利用所述原生接口将所述页面的标识信息和所述文件补丁发送给应用程序页面,以使得基于文件补丁更新得到目标文档对象模型树;
响应于关闭所述应用程序页面的请求,对所述页面实例进行回收,重置页面至初始状态,并加载超文本标记语言模板,关闭所述全局JS引擎,实现对视图层和逻辑层的处理流程的管控。
一种小程序转换应用程序的处理装置,包括:
获取单元,用于获取小程序工程;
转换单元,用于对所述小程序工程进行编码,将编码后的配置信息转换为应用程序对应的目标数据包;
渲染单元,用于利用目标框架对所述目标数据包进行渲染,得到应用程序对应的渲染界面,所述目标框架嵌入至所述应用程序,且具有双线程渲染模型,所述双线程渲染模型采用逻辑层和视图层分离的结构。
可选地,所述转换单元包括:
编码子单元,用于对所述小程序工程进行编码,得到与所述小程序工程对应的编码后的配置信息;
第一确定子单元,用于基于所述编码后的配置信息,确定所述小程序工程对应的配置项;
转换子单元,用于将所述小程序工程对应的配置项转换为应用程序对应的配置项;
第二确定子单元,用于将所述应用程序对应的配置项以及关联配置信息,确定为所述应用程序对应的目标数据包。
可选地,所述转换子单元具体用于:
获取所述小程序工程对应的全局配置项和页面配置项;
基于应用程序全局配置信息对所述全局配置项进行转换,并基于应用程序页面配置信息对所述页面配置项进行转换,获得应用程序对应的配置项。
可选地,所述装置还包括:
框架生成单元,用于基于小程序工程对应的渲染特征,生成目标框架,其中,所述框架生成单元包括:
第一获取子单元,用于获取与所述小程序工程对应的双线程渲染模型,所述双线程渲染模型加载的资源至少包括JS框架、超文本标记语言模板和业务代码;
第一生成子单元,用于基于小程序工程对应的双线程渲染模型,生成全局JS引擎,所述全局JS引擎对所述双线程渲染模型中的视图层和逻辑层的处理流程进行管理;
第二生成子单元,用于基于所述双线程渲染模型和所述全局JS引擎,生成目标框架。
可选地,所述渲染单元包括:
加载子单元,用于基于所述双线程渲染模型对所述目标数据包进行加载,得到与所述小程序工程对应的逻辑层和视图层;
管控子单元,用于基于所述全局JS引擎对所述逻辑层和视图层的处理流程进行管控,以获得利用逻辑层产生的渲染需求信息;
渲染子单元,用于控制所述视图层基于所述渲染需求信息对所述目标数据包进行渲染,得到应用程序对应的渲染界面。
可选地,所述管控子单元具体用于:
对所述全局JS引擎进行初始化,并创建所述全局JS引擎上下文和环境变量;
通过所述全局JS引擎加载JS框架和业务代码;
响应于加载应用程序页面请求,基于小程序原生接口获取视图层对应的页面实例、业务代码的页面路径和页面的标识信息;
利用所述全局JS引擎根据所述页面路径和所述页面的标识信息生成文档对象模型树,并计算得到文件补丁;
利用所述原生接口将所述页面的标识信息和所述文件补丁发送给应用程序页面,以使得基于文件补丁更新得到目标文档对象模型树;
响应于关闭所述应用程序页面的请求,对所述页面实例进行回收,重置页面至初始状态,并加载超文本标记语言模板,关闭所述全局JS引擎,实现对视图层和逻辑层的处理流程的管控。
一种存储介质,所述存储介质存储有可执行指令,所述指令被处理器执行时实现上中任意一项所述的小程序转换应用程序的处理方法。
一种电子设备,其特征在于,包括:
存储器,用于存储程序;
处理器,用于执行所述程序,所述程序具体用于实现如上中任意一项所述的小程序转换应用程序的处理方法。
相较于现有技术,本发明提供了一种小程序转换应用程序的处理方法及装置,包括:获取小程序工程;对所述小程序工程进行编码,将编码后的配置信息转换为应用程序对应的目标数据包;利用目标框架对所述目标数据包进行渲染,得到应用程序对应的渲染界面,所述目标框架嵌入至所述应用程序,且具有双线程渲染模型,所述双线程渲染模型采用逻辑层和视图层分离的结构。本发明可以利用目标框架对小程序工程对应的目标数据包进行渲染,满足了小程序工程中双线程渲染模型的需求,无需采用H5架构,可以将小程序工程直接转换为对应的应用程序,解决了利用H5架构将小程序工程转换为应用程序式存在白屏、加载慢、渲染慢的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种小程序转换应用程序的处理方法的流程示意图;
图2为本发明实施例提供的一种双线程渲染模型的结构示意图;
图3为本发明实施例提供的一种全局JS引擎管理机制的处理流程图;
图4为本发明实施例提供的一种小程序转换应用程序的处理装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述特定的顺序。此外术语“包括”和“具有”以及他们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有设定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。
本发明实施例提供了一种小程序转换应用程序的处理方法,在该方法中,小程序工程是转为小程序套壳APP(应用程序),APP中打开的页面是小程序页面,基于应用程序嵌入的目标框架能够支持小程序双线程渲染模型技术,实现了小程序工程直接转为小程序的APP,无需通过H5框架的转换,提高了页面渲染速度及渲染效果。
具体的,参见图1,为本发明实施例提供的一种小程序转换应用程序的处理方法的流程示意图,该方法可以包括以下步骤:
S101、获取小程序工程。
小程序工程是指小程序的源代码,小程序一般不能独立存在,都是应用在某个应用程序下,在社交应用、地图应用等应用程序都可以调用小程序。应用程序(APP)是指安装在智能设备上的软件,完善原始系统的不足和个性化,应用程序的运行需要有相应的操作系统进行支持,操作系统可以包括IOS、Android(安卓)系统、塞班平台和微软平台。
S102、对所述小程序工程进行编码,将编码后的配置信息转换为应用程序对应的目标数据包。
通过编译阶段读取小程序工程中的代码信息,并基于对其进行的编码处理,获得编码后的配置信息,从而可以通过编码后的配置信息获得对应的配置项,并基于APP转换模板中对应的配置项的转换条件,对配置相关进行转换得到与APP对应的配置项,从而生成特定的数据包,记为目标数据包。需要说明的是,在本发明实施例中生成的目标数据包是不经过H5工程转换得到的数据包,而是仅采用配置转换模板生成的数据包。配置转换模板中记载有小程序工程到APP的相关配置信息或配置项的转换条件。
在一种可能的实现方式中,所述对所述小程序工程进行编码,将编码后的配置信息转换为应用程序对应的目标数据包,包括:对所述小程序工程进行编码,得到与所述小程序工程对应的编码后的配置信息;基于所述编码后的配置信息,确定所述小程序工程对应的配置项;将所述小程序工程对应的配置项转换为应用程序对应的配置项;将所述应用程序对应的配置项以及关联配置信息,确定为所述应用程序对应的目标数据包。
其中,所述将所述小程序工程对应的配置项转换为应用程序对应的配置项,包括:获取所述小程序工程对应的全局配置项和页面配置项;基于应用程序全局配置信息对所述全局配置项进行转换,并基于应用程序页面配置信息对所述页面配置项进行转换,获得应用程序对应的配置项。
全局配置信息可以包括整个应用程序的结构,例如包括界面上的浮动按钮、悬浮按钮等与页面内容无关的信息。页面配置信息可以包括某个页面内部布局的信息,如,页面上的点击按钮、跳转链接、点击动作的类别等。
具体的,小程序工程中定义的APP专有属性转换成APP专有配置,如应用包名、启动背景图、引导图等,全局配置(APP.json)中声明的配置信息转换对应的APP全局配置信息(包含首页Tab配置、全局导航栏配置、全局样式等),基于页面配置([page].json)中声明的配置信息转对应的APP中页面配置信息(包含每个页面的导航栏配置、样式等),保证小程序的配置效果在APP中也能展示一致。
S103、利用目标框架对所述目标数据包进行渲染,得到应用程序对应的渲染界面。
其中,目标框架是指能够对目标数据包进行识别和渲染的框架,其嵌入至应用程序,具有双线程渲染模型,双线程渲染模型采用逻辑层和视图层分离的结构,由于小程序工程采用了双线程渲染模型为了能够使得小程序工程转换为应用程序,目标框架也具有双线程渲染模型,使得其无需通过其他框架或者工程对小程序工程进行处理。
在本发明实施例中还提供了一种生成目标框架的方法,该方法是基于小程序工程对应的渲染特征,生成目标框架。具体可以包括以下步骤:
获取与所述小程序工程对应的双线程渲染模型,所述双线程渲染模型加载的资源至少包括JS框架、超文本标记语言模板和业务代码;
基于小程序工程对应的双线程渲染模型,生成全局JS引擎,所述全局JS引擎对所述双线程渲染模型中的视图层和逻辑层的处理流程进行管理;
基于所述双线程渲染模型和所述全局JS引擎,生成目标框架。
小程序工程对应的渲染特征是指其利用的渲染模型,相关渲染参数以及渲染环境等参数。在获得了小程序工程对应的渲染特征后,可以基于该渲染特征生成能够将小程序工程渲染的过程转换为APP渲染的过程。例如,通常小程序工程渲染采用了双线程渲染模型,则可以基于双线程渲染模型构建目标框架,使得能够基于目标框架对目标数据包进行识别和渲染。为了能够保证双线程渲染模型的执行,需要生成对应的全局JS引擎,使得全局JS引擎对所述双线程渲染模型中的视图层和逻辑层的处理流程进行管理,因此,目标框架中还包括了全局JS引擎。
在一种实施方式中,所述利用目标框架对所述目标数据包进行渲染,得到应用程序对应的渲染界面,包括:基于所述双线程渲染模型对所述目标数据包进行加载,得到与所述小程序工程对应的逻辑层和视图层;基于所述全局JS引擎对所述逻辑层和视图层的处理流程进行管控,以获得利用逻辑层产生的渲染需求信息;控制所述视图层基于所述渲染需求信息对所述目标数据包进行渲染,得到应用程序对应的渲染界面。
参见图2,为本发明实施例提供的一种双线程渲染模型的结构示意图。双线程渲染模型采用逻辑层和视图层分离的结构,逻辑层用于对配置逻辑的处理,视图层用于对渲染信息的处理。具体的,逻辑层主要通过JS引擎运行JS脚本(xxx.js),运行在JS线程上,只完成逻辑处理。视图层由WebView渲染,运行在UI线程上,视图层主要运行wxxml、wxcss等,用于渲染页面。逻辑层和视图层之间通过Native(原生接口)桥接进行通信。
对应的,双线程渲染模型加载的资源至少包括:JS框架(JS Framework)、超文本标记语言模板(模板HTML)和业务代码(JS Bundle)。
在本发明实施例中可以采用小程序的双线程渲染模型对配置项进行处理,实现了支持展示小程序页面的功能逻辑,支持页面展示小程序页面,并且可以将逻辑层和视图层的处理流程,实现逻辑和渲染的分开处理,互不影响。提升了渲染效果和效率。
具体的,JS全称为JavaScript,是一种动态执行类型的编程语言,是一种具有函数优先的轻量级,解释型或即时编译型的高级编程语言。JS Framework为类RN框架JS侧的框架,用于为业务处理通用的逻辑。JS引擎是执行JS代码的引擎,JavaScript引擎是一个专门处理JavaScript脚本的虚拟机。
其中,JS Framework和模板HTML属于框架代码,所有应用共用一份相同的JSFramework和模版HTML,JS Bundle属于业务代码,经脚手架工具编译生成,每个应用都有一份不同的JS Bundle。JS Framework主要包含页面虚拟DOM树的管理、JS引擎与Native之间的通信等功能,模版HTML主要包含WebView事件响应、WebView与Native之间的通信等功能。
在本发明的另一实施例中,为了能够保证小程序到应用程序的快速转换,以及能够利用小程序的双线程渲染模型,可以基于全局JS引擎对所述双线程渲染模型中的视图层和逻辑层的处理流程进行管理。JS引擎是执行JS代码的引擎,通常一个JS引擎只能加载一份BundleJS。App小程序化需要实现App内所有的webview页面(可能存在多份BundleJS)共用一个全局JS引擎,那么全局JS引擎必须具备同时管理多份BundleJS的能力。Instance(页面实例)在导入BundleJS时额外提供instance Id(页面实例标识信息)给JS引擎,JS引擎会以instanceId为key、以BundleJS为value将BundleJS存储在内存中。当Instance发送事件给JS引擎时额外将instanceId作为参数传递给JS引擎,JS引擎根据instanceId找到对应的BundleJS并生成patch发送回页面实例(Instance)。
其中,在一种实现方式中,
所述基于所述全局JS引擎对所述逻辑层和视图层的处理流程进行管控,包括:
对所述全局JS引擎进行初始化,并创建所述全局JS引擎上下文和环境变量;
通过所述全局JS引擎加载JS框架和业务代码;
响应于加载应用程序页面请求,基于小程序原生接口获取视图层对应的页面实例、业务代码的页面路径和页面的标识信息;
利用所述全局JS引擎根据所述页面路径和所述页面的标识信息生成文档对象模型树,并计算得到文件补丁;
利用所述原生接口将所述页面的标识信息和所述文件补丁发送给应用程序页面,以使得基于文件补丁更新得到目标文档对象模型树;
响应于关闭所述应用程序页面的请求,对所述页面实例进行回收,重置页面至初始状态,并加载超文本标记语言模板,关闭所述全局JS引擎,实现对视图层和逻辑层的处理流程的管控。
具体的,参见图3,为本发明实施例提供的一种全局JS引擎管理机制的处理流程图。对应的,流程解释如下:
步骤1、用户打开应用。
步骤2、Native初始化JS引擎,创建JS上下文,准备环境变量等。
步骤3、JS引擎加载JS Framework。
步骤4、JS引擎加载JS Bundle。
步骤5、初始化WebView缓存池。
步骤6、WebView缓存池创建WebView实例,直到达到规定的上限N。
步骤7、WebView加载模版HTML,加载完成后标记为可用。
步骤8、用户打开页面。
步骤9、Native从WebView缓存池中取一个可用的WebView实例。
步骤10、Native发送路由指令给JS引擎,指令包含JS Bundle中的页面路径和WebView的唯一标识。
步骤11、JS引擎根据页面路径和WebView的唯一标识生成页面虚拟DOM(文档对象模型)树,并计算diff生成patch。
步骤12、Native根据WebView的唯一标识找到对应的WebView实例,将patch转发给该WebView。
步骤13、WebView根据patch更新页面真实DOM。
步骤14、用户关闭页面。
步骤15、Native根据WebView的唯一标识找到对应的WebView实例,将该WebView交给WebView缓存池回收。
步骤16、WebView缓存池重置WebView使其恢复初始状态。
步骤17、WebView重新加载模版HTML,加载完成后标记为可用。
步骤18、Native发送关闭指令给JS引擎,指令包含WebView的唯一标识。
步骤19、JS引擎根据WebView的唯一标识找到对应的页面虚拟DOM树并销毁。
通过创建一个原生实例(Instance)时全局维护一个JS引擎,最后一个原生Instance被销毁时销毁全局JS引擎。原生Instance导入BundleJS时通过JSFramework提供的createInstance(创建对象的函数)(BundleJS, instanceID)方法进行导入。原生Instance销毁时通过JSFramework提供的destoryInstance(instanceID)销毁JSC引擎中的BundleJS。原生Instance发送事件给JSFramework时额外传递参数InstanceID供JSFramework找到对应的BundleJS。
在本发明实施例中通过应用配置转化流程,将小程序源码功能配置编译成APP应用可识别的应用配置,如应用图标logo、启动图片、首页Tab菜单栏、页面属性等。并且还支持加载程序页面,应用框架的页面容器添加支持展示小程序页面的功能逻辑,支持页面展示小程序页面。新增页面全局JS引擎管理机制,用于同一管理webview实例和JS渲染线程。
现有技术中,小程序工程转App都是通过小程序工程转H5套壳App,App中打开的页面是H5页面,在页面渲染时逻辑的执行和视图的渲染都在同一个线程中,从而加载渲染页面缓慢。而本方案中,小程序工程是转为小程序套壳App,App中打开的页面是小程序页面,有双线程渲染(逻辑层和视图层线程分离)等技术,比H5页面流畅很多,小程序各个页面的切换、跳转等体验可以媲美原生App,有着同样的柔丝般顺滑的效果。因此,与现有技术方案相比,本方案实现了小程序工程直接转为基于小程序的App,提高了页面渲染速度。该小程序技术方案适用于整体业务场景不复杂的中小型移动业务场景,可以将微信小程序工程转换成Android、iOS的App,App中还是使用小程序的双线程渲染技术。
在本发明的另一实施例中,还提供了一种小程序转换应用程序的处理装置,参见图4,该装置可以包括:
获取单元401,用于获取小程序工程;
转换单元402,用于对所述小程序工程进行编码,将编码后的配置信息转换为应用程序对应的目标数据包;
渲染单元403,用于利用目标框架对所述目标数据包进行渲染,得到应用程序对应的渲染界面,所述目标框架嵌入至所述应用程序,且具有双线程渲染模型,所述双线程渲染模型采用逻辑层和视图层分离的结构。
可选地,所述转换单元包括:
编码子单元,用于对所述小程序工程进行编码,得到与所述小程序工程对应的编码后的配置信息;
第一确定子单元,用于基于所述编码后的配置信息,确定所述小程序工程对应的配置项;
转换子单元,用于将所述小程序工程对应的配置项转换为应用程序对应的配置项;
第二确定子单元,用于将所述应用程序对应的配置项以及关联配置信息,确定为所述应用程序对应的目标数据包。
可选地,所述转换子单元具体用于:
获取所述小程序工程对应的全局配置项和页面配置项;
基于应用程序全局配置信息对所述全局配置项进行转换,并基于应用程序页面配置信息对所述页面配置项进行转换,获得应用程序对应的配置项。
可选地,所述装置还包括:
框架生成单元,用于基于小程序工程对应的渲染特征,生成目标框架,其中,所述框架生成单元包括:
第一获取子单元,用于获取与所述小程序工程对应的双线程渲染模型,所述双线程渲染模型加载的资源至少包括JS框架、超文本标记语言模板和业务代码;
第一生成子单元,用于基于小程序工程对应的双线程渲染模型,生成全局JS引擎,所述全局JS引擎对所述双线程渲染模型中的视图层和逻辑层的处理流程进行管理;
第二生成子单元,用于基于所述双线程渲染模型和所述全局JS引擎,生成目标框架。
可选地,所述渲染单元包括:
加载子单元,用于基于所述双线程渲染模型对所述目标数据包进行加载,得到与所述小程序工程对应的逻辑层和视图层;
管控子单元,用于基于所述全局JS引擎对所述逻辑层和视图层的处理流程进行管控,以获得利用逻辑层产生的渲染需求信息;
渲染子单元,用于控制所述视图层基于所述渲染需求信息对所述目标数据包进行渲染,得到应用程序对应的渲染界面。
可选地,所述管控子单元具体用于:
对所述全局JS引擎进行初始化,并创建所述全局JS引擎上下文和环境变量;
通过所述全局JS引擎加载JS框架和业务代码;
响应于加载应用程序页面请求,基于小程序原生接口获取视图层对应的页面实例、业务代码的页面路径和页面的标识信息;
利用所述全局JS引擎根据所述页面路径和所述页面的标识信息生成文档对象模型树,并计算得到文件补丁;
利用所述原生接口将所述页面的标识信息和所述文件补丁发送给应用程序页面,以使得基于文件补丁更新得到目标文档对象模型树;
响应于关闭所述应用程序页面的请求,对所述页面实例进行回收,重置页面至初始状态,并加载超文本标记语言模板,关闭所述全局JS引擎,实现对视图层和逻辑层的处理流程的管控。
本发明实施例提供了一种小程序转换应用程序的处理装置,包括:获取单元获取小程序工程;转换单元对所述小程序工程进行编码,将编码后的配置信息转换为应用程序对应的目标数据包;渲染单元利用目标框架对所述目标数据包进行渲染,得到应用程序对应的渲染界面,所述目标框架嵌入至所述应用程序,且具有双线程渲染模型,所述双线程渲染模型采用逻辑层和视图层分离的结构。本发明可以利用目标框架对小程序工程对应的目标数据包进行渲染,满足了小程序工程中双线程渲染模型的需求,无需采用H5架构,可以将小程序工程直接转换为对应的应用程序,解决了利用H5架构将小程序工程转换为应用程序式存在白屏、加载慢、渲染慢的问题。
基于前述实施例,本申请的实施例提供一种计算机可读存储介质,计算机可读存储介质存储有一个或者多个程序,该一个或者多个程序可被一个或者多个处理器执行,以实现如上任一项的一种小程序转换应用程序的处理方法的步骤。
本发明实施例还提供了一种电子设备,包括:
存储器,用于存储程序;
处理器,用于执行所述程序,所述程序具体用于实现如上中任意一项所述的小程序转换应用程序的处理方法。
需要说明的是,上述处理器或CPU可以为特定用途集成电路(ApplicationSpecific Integrated Circuit,ASIC)、数字信号处理器(Digital Signal Processor,DSP)、数字信号处理装置(Digital Signal Processing Device,DSPD)、可编程逻辑装置(Programmable Logic Device,PLD)、现场可编程门阵列(Field Programmable GateArray,FPGA)、中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器中的至少一种。可以理解地,实现上述处理器功能的电子器件还可以为其它,本申请实施例不作具体限定。
需要说明的是,上述计算机存储介质/存储器可以是只读存储器(Read OnlyMemory,ROM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性随机存取存储器(Ferromagnetic Random Access Memory,FRAM)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(Compact Disc Read-Only Memory,CD-ROM)等存储器;也可以是包括上述存储器之一或任意组合的各种终端,如移动电话、计算机、平板设备、个人数字助理等。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理模块中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
本申请所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种小程序转换应用程序的处理方法,其特征在于,包括:
获取小程序工程;
对所述小程序工程进行编码,将编码后的配置信息转换为应用程序对应的目标数据包;
利用目标框架对所述目标数据包进行渲染,得到应用程序对应的渲染界面,所述目标框架嵌入至所述应用程序,且具有双线程渲染模型,所述双线程渲染模型采用逻辑层和视图层分离的结构。
2.根据权利要求1所述的方法,其特征在于,所述对所述小程序工程进行编码,将编码后的配置信息转换为应用程序对应的目标数据包,包括:
对所述小程序工程进行编码,得到与所述小程序工程对应的编码后的配置信息;
基于所述编码后的配置信息,确定所述小程序工程对应的配置项;
将所述小程序工程对应的配置项转换为应用程序对应的配置项;
将所述应用程序对应的配置项以及关联配置信息,确定为所述应用程序对应的目标数据包。
3.根据权利要求2所述的方法,其特征在于,将所述小程序工程对应的配置项转换为应用程序对应的配置项,包括:
获取所述小程序工程对应的全局配置项和页面配置项;
基于应用程序全局配置信息对所述全局配置项进行转换,并基于应用程序页面配置信息对所述页面配置项进行转换,获得应用程序对应的配置项。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
基于小程序工程对应的渲染特征,生成目标框架,包括:
获取与所述小程序工程对应的双线程渲染模型,所述双线程渲染模型加载的资源至少包括JS框架、超文本标记语言模板和业务代码;
基于小程序工程对应的双线程渲染模型,生成全局JS引擎,所述全局JS引擎对所述双线程渲染模型中的视图层和逻辑层的处理流程进行管理;
基于所述双线程渲染模型和所述全局JS引擎,生成目标框架。
5.根据权利要求4所述的方法,其特征在于,所述利用目标框架对所述目标数据包进行渲染,得到应用程序对应的渲染界面,包括:
基于所述双线程渲染模型对所述目标数据包进行加载,得到与所述小程序工程对应的逻辑层和视图层;
基于所述全局JS引擎对所述逻辑层和视图层的处理流程进行管控,以获得利用逻辑层产生的渲染需求信息;
控制所述视图层基于所述渲染需求信息对所述目标数据包进行渲染,得到应用程序对应的渲染界面。
6.根据权利要求5所述的方法,其特征在于,所述基于所述全局JS引擎对所述逻辑层和视图层的处理流程进行管控,包括:
对所述全局JS引擎进行初始化,并创建所述全局JS引擎上下文和环境变量;
通过所述全局JS引擎加载JS框架和业务代码;
响应于加载应用程序页面请求,基于小程序原生接口获取视图层对应的页面实例、业务代码的页面路径和页面的标识信息;
利用所述全局JS引擎根据所述页面路径和所述页面的标识信息生成文档对象模型树,并计算得到文件补丁;
利用所述原生接口将所述页面的标识信息和所述文件补丁发送给应用程序页面,以使得基于文件补丁更新得到目标文档对象模型树;
响应于关闭所述应用程序页面的请求,对所述页面实例进行回收,重置页面至初始状态,并加载超文本标记语言模板,关闭所述全局JS引擎,实现对视图层和逻辑层的处理流程的管控。
7.一种小程序转换应用程序的处理装置,其特征在于,包括:
获取单元,用于获取小程序工程;
转换单元,用于对所述小程序工程进行编码,将编码后的配置信息转换为应用程序对应的目标数据包;
渲染单元,用于利用目标框架对所述目标数据包进行渲染,得到应用程序对应的渲染界面,所述目标框架嵌入至所述应用程序,且具有双线程渲染模型,所述双线程渲染模型采用逻辑层和视图层分离的结构。
8.根据权利要求7所述的装置,其特征在于,所述转换单元包括:
编码子单元,用于对所述小程序工程进行编码,得到与所述小程序工程对应的编码后的配置信息;
第一确定子单元,用于基于所述编码后的配置信息,确定所述小程序工程对应的配置项;
转换子单元,用于将所述小程序工程对应的配置项转换为应用程序对应的配置项;
第二确定子单元,用于将所述应用程序对应的配置项以及关联配置信息,确定为所述应用程序对应的目标数据包。
9.一种存储介质,其特征在于,所述存储介质存储有可执行指令,所述指令被处理器执行时实现如权利要求1-6中任意一项所述的小程序转换应用程序的处理方法。
10.一种电子设备,其特征在于,包括:
存储器,用于存储程序;
处理器,用于执行所述程序,所述程序具体用于实现如权利要求1-6中任意一项所述的小程序转换应用程序的处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210244154.XA CN114327446B (zh) | 2022-03-14 | 2022-03-14 | 一种小程序转换应用程序的处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210244154.XA CN114327446B (zh) | 2022-03-14 | 2022-03-14 | 一种小程序转换应用程序的处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114327446A true CN114327446A (zh) | 2022-04-12 |
CN114327446B CN114327446B (zh) | 2022-06-07 |
Family
ID=81033528
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210244154.XA Active CN114327446B (zh) | 2022-03-14 | 2022-03-14 | 一种小程序转换应用程序的处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114327446B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116700694A (zh) * | 2023-08-07 | 2023-09-05 | 深圳凡泰极客科技有限责任公司 | 小程序引擎 |
WO2023245369A1 (zh) * | 2022-06-20 | 2023-12-28 | 北京小米移动软件有限公司 | 应用启动方法、装置、电子设备以及存储介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9239713B1 (en) * | 2013-03-06 | 2016-01-19 | MobileForce Software, Inc. | Platform independent rendering for native mobile applications |
US20180137597A1 (en) * | 2016-11-11 | 2018-05-17 | Facebook, Inc. | Systems and methods for providing reduced complexity rendering of user interface elements |
US20180210715A1 (en) * | 2017-01-25 | 2018-07-26 | Wal-Mart Stores, Inc. | Systems, method, and non-transitory computer-readable storage media for generating code for displaying a webpage |
CN108846087A (zh) * | 2018-06-12 | 2018-11-20 | 恒生电子股份有限公司 | 一种页面渲染方法、装置、终端及服务器 |
US20200057660A1 (en) * | 2017-03-08 | 2020-02-20 | Alibaba Group Holding Limited | Method and system for rendering user interfaces |
CN111008019A (zh) * | 2019-12-06 | 2020-04-14 | 北京百度网讯科技有限公司 | 小程序的Web化运行方法、装置、设备及介质 |
CN111580879A (zh) * | 2020-04-30 | 2020-08-25 | 北京字节跳动网络技术有限公司 | 小程序的运行方法、装置、电子设备及计算机存储介质 |
CN112540806A (zh) * | 2020-12-25 | 2021-03-23 | 北京百度网讯科技有限公司 | 一种小程序页面渲染方法、装置、电子设备及存储介质 |
CN113181657A (zh) * | 2021-04-30 | 2021-07-30 | 北京读我网络技术有限公司 | 一种跨平台渲染方法及装置 |
US20210349700A1 (en) * | 2019-07-15 | 2021-11-11 | Tencent Technology (Shenzhen) Company Limited | Mini program data binding method and apparatus, device, and storage medium |
CN114035865A (zh) * | 2021-11-11 | 2022-02-11 | 北京百度网讯科技有限公司 | 启动小程序的方法、装置、设备以及存储介质 |
CN114168875A (zh) * | 2021-12-15 | 2022-03-11 | 北京字节跳动网络技术有限公司 | 一种页面程序的生成方法、装置、计算机设备及存储介质 |
-
2022
- 2022-03-14 CN CN202210244154.XA patent/CN114327446B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9239713B1 (en) * | 2013-03-06 | 2016-01-19 | MobileForce Software, Inc. | Platform independent rendering for native mobile applications |
US20180137597A1 (en) * | 2016-11-11 | 2018-05-17 | Facebook, Inc. | Systems and methods for providing reduced complexity rendering of user interface elements |
US20180210715A1 (en) * | 2017-01-25 | 2018-07-26 | Wal-Mart Stores, Inc. | Systems, method, and non-transitory computer-readable storage media for generating code for displaying a webpage |
US20200057660A1 (en) * | 2017-03-08 | 2020-02-20 | Alibaba Group Holding Limited | Method and system for rendering user interfaces |
CN108846087A (zh) * | 2018-06-12 | 2018-11-20 | 恒生电子股份有限公司 | 一种页面渲染方法、装置、终端及服务器 |
US20210349700A1 (en) * | 2019-07-15 | 2021-11-11 | Tencent Technology (Shenzhen) Company Limited | Mini program data binding method and apparatus, device, and storage medium |
CN111008019A (zh) * | 2019-12-06 | 2020-04-14 | 北京百度网讯科技有限公司 | 小程序的Web化运行方法、装置、设备及介质 |
CN111580879A (zh) * | 2020-04-30 | 2020-08-25 | 北京字节跳动网络技术有限公司 | 小程序的运行方法、装置、电子设备及计算机存储介质 |
CN112540806A (zh) * | 2020-12-25 | 2021-03-23 | 北京百度网讯科技有限公司 | 一种小程序页面渲染方法、装置、电子设备及存储介质 |
CN113181657A (zh) * | 2021-04-30 | 2021-07-30 | 北京读我网络技术有限公司 | 一种跨平台渲染方法及装置 |
CN114035865A (zh) * | 2021-11-11 | 2022-02-11 | 北京百度网讯科技有限公司 | 启动小程序的方法、装置、设备以及存储介质 |
CN114168875A (zh) * | 2021-12-15 | 2022-03-11 | 北京字节跳动网络技术有限公司 | 一种页面程序的生成方法、装置、计算机设备及存储介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023245369A1 (zh) * | 2022-06-20 | 2023-12-28 | 北京小米移动软件有限公司 | 应用启动方法、装置、电子设备以及存储介质 |
CN116700694A (zh) * | 2023-08-07 | 2023-09-05 | 深圳凡泰极客科技有限责任公司 | 小程序引擎 |
CN116700694B (zh) * | 2023-08-07 | 2024-01-26 | 深圳凡泰极客科技有限责任公司 | 小程序引擎 |
Also Published As
Publication number | Publication date |
---|---|
CN114327446B (zh) | 2022-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114327446B (zh) | 一种小程序转换应用程序的处理方法及装置 | |
CN110764791B (zh) | 小程序的渠道适配方法、装置及电子设备 | |
CN108830720B (zh) | 智能合约运行方法、装置、系统和计算机可读存储介质 | |
CN110020323B (zh) | 混合应用的页面切换方法、系统、计算机设备及存储介质 | |
CN111639287A (zh) | 一种页面处理方法、装置、终端设备及可读存储介质 | |
CN111026396A (zh) | 页面渲染方法、装置、电子设备及存储介质 | |
CN114064024B (zh) | 微应用的开发方法、装置、设备、存储介质及程序产品 | |
US20180081658A1 (en) | Method and apparatus for firmware virtualization | |
CN110134378A (zh) | 应用程序创建方法及装置、计算机设备及存储介质 | |
US10121263B2 (en) | Methods and devices for image loading and methods and devices for video playback | |
CN107133064B (zh) | 原生应用的页面热更新方法及装置 | |
CN104407863A (zh) | 抽象控件模型编程装置和方法 | |
CN110580174B (zh) | 应用组件生成方法、服务器及终端 | |
US20230229406A1 (en) | Page rendering method, apparatus, electronic device, computer-readable storage medium, and computer program product | |
CN110297624B (zh) | 基于electron框架的Widget系统的实现方法及采用该系统的电视机 | |
EP3151518A1 (en) | Information processing device, information processing method, and information processing program | |
CN104699503A (zh) | 一种替换安卓系统中函数的执行逻辑的方法及装置 | |
CN113918195A (zh) | 应用界面更新方法、装置、电子设备及可读存储介质 | |
CN108804120B (zh) | 一种页面构建方法、装置、设备及存储介质 | |
CN108319474B (zh) | 一种页面信息生成方法、装置和设备 | |
CN115131470A (zh) | 一种图文素材合成方法、装置、电子设备和存储介质 | |
CN113181657A (zh) | 一种跨平台渲染方法及装置 | |
CN113342447A (zh) | 基于Flutter的页面生成方法、装置、设备及存储介质 | |
CN111723314B (zh) | 网页展示方法、装置、电子设备及计算机可读存储介质 | |
CN104102536A (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 | ||
CB03 | Change of inventor or designer information | ||
CB03 | Change of inventor or designer information |
Inventor after: Zhang Hang Inventor after: Si Xin Inventor after: Gu Jianglai Inventor after: Zhu Chaoran Inventor after: Zhu Mengyu Inventor before: Zhang Hang Inventor before: Si Xin Inventor before: Gu Jianglai Inventor before: Zhu Chaoran Inventor before: Zhu Mengyu |