应用转换方法、装置及设备转让专利

申请号 : CN201710443627.8

文献号 : CN107239318B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 龚澄

申请人 : 腾讯科技(深圳)有限公司

摘要 :

一种应用转换方法、装置及设备。所述方法包括:获取子应用程序的文件,子应用程序是依赖母应用程序运行的应用程序;根据子应用程序的文件生成支持在Web端运行的可执行文件;根据可执行文件和支持在Web端运行的第二入口文件生成Web应用的文件,第二入口文件中引用可执行文件。在本发明实施例中,提供了一种将子应用程序的文件转换为Web应用的文件的技术方案,以使得与子应用程序具有相同功能的Web应用无需单独开发,从而节省了开发上述Web应用所需的人力和时间成本,提升开发效率,且使得具有相同功能的Web应用和子应用程序共用一套基础的源代码,提升代码复用率。

权利要求 :

1.一种应用转换方法,其特征在于,所述方法包括:

获取子应用程序的文件,所述子应用程序是依赖母应用程序运行的应用程序,所述子应用程序的文件包括:第一入口文件、全局配置文件、以及每一个页面的逻辑代码文件;

根据所述子应用程序的文件生成支持在网页Web端运行的可执行文件;

根据所述可执行文件和支持在Web端运行的第二入口文件,生成Web应用的文件,所述第二入口文件中引用所述可执行文件。

2.根据权利要求1所述的方法,其特征在于,所述可执行文件中包括支持在Web端执行的逻辑代码;

所述根据所述子应用程序的文件生成支持在网页Web端运行的可执行文件,包括:对于每一个页面,获取所述页面的逻辑代码文件中包含的多个逻辑代码模块,以及各个逻辑代码模块之间的调用关系;

将所述页面的各个逻辑代码模块按序添加至所述可执行文件中,并为所述页面的各个逻辑代码模块添加编号;

根据所述页面的各个逻辑代码模块之间的调用关系及编号,在所述可执行文件中添加所述页面的入口代码,所述页面的入口代码用于指示所述页面的各个逻辑代码模块之间的调用关系。

3.根据权利要求1所述的方法,其特征在于,所述子应用程序的文件还包括全局样式文件和每一个页面的样式文件,所述可执行文件中还包括支持在Web端识别的第二样式文件代码;

所述根据所述子应用程序的文件生成支持在网页Web端运行的可执行文件,包括:获取所述全局样式文件和各个页面的样式文件中包含的第一样式文件代码;

将所述第一样式文件代码中的尺寸单位由第一单位转换为第二单位,得到所述第二样式文件代码;其中,所述第一单位是指所述母应用程序识别的尺寸单位,所述第二单位是指在Web端识别的尺寸单位。

4.根据权利要求1所述的方法,其特征在于,所述子应用程序的文件还包括每一个页面的视图文件,所述可执行文件中还包括支持在Web端识别的第二视图文件代码;

所述根据所述子应用程序的文件生成支持在网页Web端运行的可执行文件,包括:获取各个页面的视图文件中包含的、且按照所述子应用程序的语法编写的第一视图文件代码;

将所述第一视图文件代码转换成按照Web端支持的语法编写的第二视图文件代码。

5.根据权利要求1至4任一项所述的方法,其特征在于,所述获取子应用程序的文件之后,还包括:对于所述子应用程序的文件中引用的用于实现第一功能的公共组件,从Web组件集中选取用于实现所述第一功能的Web组件,所述Web组件集中包括至少一个在Web端支持的组件;

将引用关系由用于实现所述第一功能的公共组件,更改为用于实现所述第一功能的Web组件。

6.根据权利要求1至4任一项所述的方法,其特征在于,所述获取子应用程序的文件之后,还包括:对于所述子应用程序的文件中引用的用于实现第二功能的公共接口,从Web接口集中选取用于实现所述第二功能的Web接口,所述Web接口集中包括至少一个在Web端支持的接口;

将引用关系由用于实现所述第二功能的公共接口,更改为用于实现所述第二功能的Web接口。

7.一种应用转换装置,其特征在于,所述装置包括:

文件获取模块,用于获取子应用程序的文件,所述子应用程序是依赖母应用程序运行的应用程序,所述子应用程序的文件包括:第一入口文件、全局配置文件、以及每一个页面的逻辑代码文件;

第一生成模块,用于根据所述子应用程序的文件生成支持在Web端运行的可执行文件;

第二生成模块,用于根据所述可执行文件和支持在Web端运行的第二入口文件生成Web应用的文件,所述第二入口文件中引用所述可执行文件。

8.根据权利要求7所述的装置,其特征在于,所述可执行文件中包括支持在Web端执行的逻辑代码;

所述第一生成模块,具体用于:

对于每一个页面,获取所述页面的逻辑代码文件中包含的多个逻辑代码模块,以及各个逻辑代码模块之间的调用关系;

将所述页面的各个逻辑代码模块按序添加至所述可执行文件中,并为所述页面的各个逻辑代码模块添加编号;

根据所述页面的各个逻辑代码模块之间的调用关系及编号,在所述可执行文件中添加所述页面的入口代码,所述页面的入口代码用于指示所述页面的各个逻辑代码模块之间的调用关系。

9.根据权利要求7所述的装置,其特征在于,所述子应用程序的文件还包括全局样式文件和每一个页面的样式文件,所述可执行文件中还包括支持在Web端识别的第二样式文件代码;

所述第一生成模块,具体用于:

获取所述全局样式文件和各个页面的样式文件中包含的第一样式文件代码;

将所述第一样式文件代码中的尺寸单位由第一单位转换为第二单位,得到所述第二样式文件代码;其中,所述第一单位是指在所述母应用程序识别的尺寸单位,所述第二单位是指在Web端识别的尺寸单位。

10.根据权利要求7所述的装置,其特征在于,所述子应用程序的文件还包括每一个页面的视图文件,所述可执行文件中还包括支持在Web端识别的第二视图文件代码;

所述第一生成模块,具体用于:

获取各个页面的视图文件中包含的、且按照所述子应用程序的语法编写的第一视图文件代码;

将所述第一视图文件代码转换成按照Web端支持的语法编写的第二视图文件代码。

11.根据权利要求7至10任一项所述的装置,其特征在于,所述装置还包括:组件选取模块,用于对于所述子应用程序的文件中引用的用于实现第一功能的公共组件,从Web组件集中选取用于实现所述第一功能的Web组件,所述Web组件集中包括至少一个在Web端支持的组件;

第一更改模块,用于将引用关系由用于实现所述第一功能的公共组件,更改为用于实现所述第一功能的Web组件。

12.根据权利要求7至10任一项所述的装置,其特征在于,所述装置还包括:接口选取模块,用于对于所述子应用程序的文件中引用的用于实现第二功能的公共接口,从Web接口集中选取用于实现所述第二功能的Web接口,所述Web接口集中包括至少一个在Web端支持的接口;

第二更改模块,用于将引用关系由用于实现所述第二功能的公共接口,更改为用于实现所述第二功能的Web接口。

13.一种应用转换设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集中的一种或多种,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由所述处理器加载并执行以实现如权利要求

1至6任一项所述的应用转换方法。

14.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集中的一种或多种,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由处理器加载并执行以实现如权利要求1至6任一项所述的应用转换方法。

说明书 :

应用转换方法、装置及设备

技术领域

[0001] 本发明实施例涉及计算机技术领域,特别涉及一种应用转换方法、装置及设备。

背景技术

[0002] 目前,有的应用程序(Application)依赖于其它应用程序运行,上述依赖其它应用程序运行的应用程序可以称之为“小程序(mini program)”。小程序不能独立运行,但无需下载安装即可使用。
[0003] 由于小程序的实现原理与Web(网页)应用的实现原理并不相同,因此对于某一项功能,如果既要开发用于实现该项功能的小程序,又要开发用于实现该项功能的Web应用,则需要开发人员编写两套独立的代码文件。其中一套代码文件为小程序版本的文件,其适于在小程序的运行平台上运行,另一套代码文件为Web版本的文件,其适于在Web端运行。
[0004] 因此,对于实现某一项功能的应用来说,分别编写两套独立的代码文件会导致代码复用率低,且开发过程消耗的人力和时间成本会增大。

发明内容

[0005] 本发明实施例提供了一种应用转换方法、装置及设备,用以解决相关技术所存在的代码复用率低,且人力和时间成本大的问题。所述技术方案如下:
[0006] 第一方面,提供了一种应用转换方法,所述方法包括:
[0007] 获取子应用程序的文件,所述子应用程序是依赖母应用程序运行的应用程序,所述子应用程序的文件包括:第一入口文件、全局配置文件、以及每一个页面的逻辑代码文件;
[0008] 根据所述子应用程序的文件生成支持在Web端运行的可执行文件;
[0009] 根据所述可执行文件和支持在Web端运行的第二入口文件生成Web应用的文件,所述第二入口文件中引用所述可执行文件。
[0010] 第二方面,提供了一种应用转换装置,所述装置包括:
[0011] 文件获取模块,用于获取子应用程序的文件,所述子应用程序是依赖母应用程序的应用程序,所述子应用程序的文件包括:第一入口文件、全局配置文件、以及每一个页面的逻辑代码文件;
[0012] 第一生成模块,用于根据所述子应用程序的文件生成支持在Web端运行的可执行文件;
[0013] 第二生成模块,用于根据所述可执行文件和支持在Web端运行的第二入口文件生成Web应用的文件,所述第二入口文件中引用所述可执行文件。
[0014] 第三方面,提供了一种应用转换设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如第一方面所述的应用转换方法。
[0015] 第四方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如第一方面所述的应用转换方法。
[0016] 第五方面,提供了一种计算机程序产品,当该计算机程序产品被执行时,其用于执行上述第一方面所述的应用转换方法。
[0017] 本发明实施例提供的技术方案可以带来如下有益效果:
[0018] 通过提供一种将子应用程序的文件转换为Web应用的文件的技术方案,以使得与子应用程序具有相同功能的Web应用无需单独开发,从而节省了开发上述Web应用所需的人力和时间成本,提升开发效率,且使得具有相同功能的Web应用和子应用程序共用一套基础的源代码,提升代码复用率。

附图说明

[0019] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0020] 图1是本发明一个实施例提供的应用转换方法的流程图;
[0021] 图2是本发明一个实施例提供的语法架构的示意图;
[0022] 图3是本发明一个实施例提供的生成支持Web端运行的可执行文件的示意图;
[0023] 图4是本发明一个实施例提供的生成第二视图文件代码的示意图;
[0024] 图5A是本发明另一个实施例提供的应用转换方法的流程图;
[0025] 图5B是本发明另一个实施例提供的应用转换方法的流程图;
[0026] 图6是本发明一个实施例提供的多个公共接口的示意图;
[0027] 图7是本发明一个实施例提供的应用转换装置的框图;
[0028] 图8是本发明一个实施例提供的应用转换设备的结构方框图。

具体实施方式

[0029] 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
[0030] 对本发明实施例进行描述之前,先对本发明实施例涉及的相关名词进行介绍。
[0031] (1)子应用程序
[0032] 子应用程序是依赖母应用程序运行的应用程序。子应用程序具体可以是社交应用程序、文件管理应用程序、邮件应用程序或者游戏应用程序等。上述子应用程序可以称之为小程序。用户通过扫描子应用程序对应的二维码或者搜索子应用程序的名称,即可直接打开该子应用程序。子应用程序可以在母应用程序中被便捷地获取和传播。
[0033] 开发者在子应用程序开发工具内完成子应用程序的开发、调试、预览、上传代码等操作。上述子应用程序开发工具可以称为WePY。WePY是一个组件化开发框架,组件的所有业务与功能在组件本身实现,组件与组件之间彼此隔离。开发者将子应用程序的代码文件发布至服务器之后,上述母应用程序可以通过HTTP(HyperText Transfer Protocol,超文本传输协议)请求或者WebSocket请求从服务器请求获取子应用程序的文件,然后母应用程序通过加载上述文件显示子应用程序的页面。
[0034] (2)母应用程序
[0035] 母应用程序是用于承载子应用程序的应用程序,为子应用程序的实现提供环境。母应用程序是原生应用程序。原生应用程序是可直接运行于操作系统的应用程序。母应用程序可以是社交应用程序、专门支持子应用程序的专用应用程序、文件管理应用程序、邮件应用程序或者游戏应用程序等。社交应用程序包括即时通信应用、SNS(Social Network Service,社交网站)应用或者直播应用等。
[0036] (3)Web应用
[0037] Web应用是指一种可以通过Web访问的应用程序。其典型架构为浏览器/服务器架构。Web应用运行于服务器中,终端的浏览器通过HTTP请求即可从服务器获取Web应用所提供的功能。Web应用的开发框架包括React框架、Vue.js框架等。
[0038] 由于子应用程序和Web应用的开发框架并不相同,且两者的实现原理也并不相同,子应用程序是基于客户端/服务器架构实现的,而Web应用是基于浏览器/服务器架构实现的,因此子应用程序无法直接在Web端运行。
[0039] 在本发明实施例中,提供了一种将子应用程序的文件转换为Web应用的文件的技术方案,以使得应用的Web版本无需单独开发,从而节省了开发应用的Web版本所需的人力和时间成本,提升开发效率,且使得应用的Web应用的文件和子应用程序的文件共用一套基础的源代码,提升代码复用率。
[0040] 本发明实施例提供的方法,各步骤的执行主体为应用转换设备。可选地,应用转换设备可以是计算机,也可以是服务器等。
[0041] 请参考图1,其示出了本发明一个实施例提供的应用转换方法的流程图。该方法可以包括如下几个步骤。
[0042] 步骤101,获取子应用程序的文件。
[0043] 子应用程序是依赖母应用程序运行的应用程序。其中,子应用程序依赖母应用程序运行是指子应用程序不能直接运行于操作系统中,而是运行于母应用程序提供的环境中。也即,子应用程序不能独立运行,而必须依赖母应用程序运行。母应用程序获取子应用程序的逻辑代码文件,对上述逻辑代码文件进行解析,进而显示子应用程序的页面。
[0044] 子应用程序的文件包括:第一入口文件、全局配置文件以及每一个页面的逻辑代码文件。
[0045] 第一入口文件用于监听并处理子应用程序的生命周期函数,并声明全局变量。可选地,第一入口文件是后缀名为.js的文件,示例性地,第一入口文件为app.js。
[0046] 全局配置文件是对相应子应用程序整体进行配置的文件,具体可配置子应用程序页面配置文件的路径、子应用程序窗口表现形式以及子应用程序的网络超时阈值等子应用程序全局配置信息。可选地,全局配置文件是后缀名为.json的文件,示例性地,全局配置文件为app.json。
[0047] 全局样式文件包括页面整体样式数据。页面整体样式数据可以包括相应子应用程序页面的页面尺寸以及页面背景颜色等属性中的至少一种。每一个页面对应的内联样式支持使用style、class属性控制组件的样式。可选地,全局样式文件是后缀名为.wxss的文件,示例性地,全局样式文件为app.wxss。
[0048] 此外,每一个页面对应有逻辑代码文件。逻辑代码文件中记载了逻辑代码,逻辑代码可用于处理相应子应用程序页面中触发的事件,还可以用于进行包括数据处理在内的其它逻辑处理。逻辑代码文件可以是脚本文件,如JavaScript脚本文件。可选地,逻辑代码文件是后缀名为.js的文件,示例性地,逻辑代码文件为page.js。
[0049] 可选地,每一页面还对应有配置文件、样式文件和视图文件。
[0050] 配置文件用于对该页面进行配置的文件,例如对该页面的窗口表现进行配置。配置文件可以是源代码或者是将源代码编译后得到的文件。可选地,配置文件是后缀名为.json的文件,示例性地,配置文件为page.json。
[0051] 样式文件用于配置该页面的展现形式。样式文件包括该页面呈现的公共组件的组件样式数据。组件样式数据可以包括相应公共组件在所属子应用程序页面中的位置、尺寸、颜色、字体和字号等属性中的至少一种。关于公共组件的介绍,可以参见图5A提供的方法实施例。可选地,样式文件是后缀名为.wxss的文件,示例性地,样式文件为page.wxss。
[0052] 视图文件用于配置该页面中的公共组件的结构。可选地,视图文件是后缀名为.wxml的文件,示例性地,视图文件为page.wxml。
[0053] 步骤102,根据子应用程序的文件生成支持在Web端运行的可执行文件。
[0054] 支持在Web端运行的可执行文件包括支持在Web端执行的页面逻辑代码。可选地,支持在Web端运行的可执行文件为后缀名为.js的文件,示例性地,该可执行文件为all.js。
[0055] 在本发明实施例中,支持在Web端运行的可执行文件由子应用程序的文件转换得到,相比于相关技术,节省了开发与子应用程序具有相同功能的Web应用所需的人力和时间成本,提升开发效率,且使得具有相同功能的Web应用和子应用程序共用一套基础的源代码,提升代码复用率。
[0056] Web应用的可执行文件能直接实现对视图的操作,而子应用程序的文件通过数据绑定实现对视图的操作。其中,数据绑定是指将一个用户界面元素(控件)的属性绑定到一个类型实例上的某个属性的方法。因此在生成Web应用的可执行文件时,需要模拟数据绑定功能。
[0057] 本发明实施例中,通过引入视图层框架来模拟数据绑定。其中,上述视图层框架可以是Vue.js框架。Vue.js框架通过简单的应用程序编程接口(Application Programming Interface,API)提供高效的数据绑定和灵活的组件系统。由于WePY框架与Vue.js框架的语法及功能特性非常相似,因此,可以通过对WePY框架的简单封装,以使得采用WePY框架编写的子应用程序版本的文件也能兼容于Vue.js框架。
[0058] 结合参考图2,其示出了本发明一个示例性实施例示出的语法架构的示意图。采用WePY框架编写子应用程序的文件,上述子应用程序的文件支持在相关应用的服务器(如社交应用的开放平台服务器)端运行,此外,还通过对子应用程序的文件进行转换处理,得到兼容于Vue.js框架且与子应用程序具有相同功能的Web应用的文件,上述Web应用的文件支持在Web端运行。
[0059] 可选地,步骤102包括如下子步骤102a。
[0060] 步骤102a,根据子应用程序的文件中的各个页面的逻辑代码文件,生成支持在Web端执行的逻辑代码;
[0061] 上述支持在Web端执行的逻辑代码(以下称为“Web应用的逻辑代码”)用于实现目标应用的功能。Web应用的逻辑代码与子应用程序的逻辑代码的区别在于:子应用程序的逻辑代码支持require功能,而Web应用的逻辑代码并不支持require功能。其中,require功能是指各个逻辑代码模块之间能够调用的功能。
[0062] 将子应用程序的逻辑代码转化为Web应用的逻辑代码时,需要模拟require功能,以实现Web应用的各个逻辑代码模块之间的调用。可选地,Web应用的逻辑代码可通过如下步骤获取:对于每一个页面,获取页面的逻辑代码文件中包含的多个逻辑代码模块,以及各个逻辑代码模块之间的调用关系;将页面的各个逻辑代码模块按序添加至可执行文件中,并为页面的各个逻辑代码模块添加编号;根据页面的各个逻辑代码模块之间的调用关系及编号,在可执行文件中添加页面的入口代码。
[0063] 页面的入口代码用于指示页面的各个逻辑代码模块之间的调用关系。上述各个逻辑代码模块之间的调用关系可以称之为依赖关系,依赖关系可以直接从子应用程序的各个页面的逻辑代码文件中读取。
[0064] 可选地,将页面的各个逻辑代码模块按序添加至可执行文件中,是指将页面的各个逻辑代码模块以队列的形式添加至可执行文件中。当需要调用某个逻辑代码模块,只需从可执行文件中读取页面的入口代码,以获得该逻辑代码模块的编号,并根据编号从队列中调用上述逻辑代码模块。通过上述方式,在Web端模拟require功能。
[0065] 结合参考图3,其示出了本发明一个示例性实施例示出的生成支持在Web端运行的可执行文件的示意图。图3中的(a)部分体现了子应用程序的文件中某个页面的各个逻辑代码模块之间的依赖关系。其中,page.js依赖a.js和e.js,a.js依赖b.js,e.js依赖d.js和f.js,b.js依赖c.js,c.js依赖d.js。图3中的(b)部分是生成的Web端的逻辑代码。将页面的入口代码、a.js、b.js、c.js、d.js、e.js和f.js以队列的形式添加至可执行文件,其中,a.js、b.js、c.js、d.js、e.js和f.js的编号分别为1、2、3、4、5和6,并且页面的入口代码依赖a.js和e.js,a.js依赖b.js,e.js依赖d.js和f.js,b.js依赖c.js,c.js依赖d.js。
[0066] 可选地,若子应用程序的文件还包括全局样式文件和每一个页面的页面样式文件,则可执行文件中包括支持在Web端识别的第二样式文件代码。步骤102还可以包括如下步骤102b。
[0067] 步骤102b,根据子应用程序的文件中的全局样式文件和各个页面的样式文件,生成支持在Web端识别的第二样式文件代码;
[0068] 第二样式文件代码用于配置目标应用在Web端运行时各个页面的展现形式。Web应用的样式文件代码与子应用程序的样式文件代码的区别在于:采用的尺寸单位不同。因此,可通过对子应用程序的样式文件代码所采用的尺寸单位进行转换,进而得到Web应用的样式文件代码。可选地,第二样式文件代码可通过如下步骤获取:获取全局样式文件和各个页面的样式文件中包含的第一样式文件代码;将第一样式文件代码中的尺寸单位由第一单位转换为第二单位,得到第二样式文件代码。其中,第一单位是指母应用程序识别的尺寸单位,第二单位是指在Web端识别的尺寸单位。
[0069] 结合步骤101中的解释说明,母应用程序识别的尺寸单位为rpx。Web端识别的尺寸单位为px。可选地,第一单位和第二单位的换算关系采用如下方式得到:规定屏幕宽为750rpx,如在设备A上,屏幕宽度为375px,共有750个物理像素,则750rpx=375px=750物理像素,1rpx=0.5px=1物理像素。示例性地,在子应用程序中某一输入框长度为100rpx,经过换算后,在Web应用中该输入框长度为50px。
[0070] 可选地,子应用程序的文件还包括每一个页面的页面视图文件,则可执行文件中包括支持在Web端识别的第二视图文件代码。步骤102还可以包括如下步骤102c。
[0071] 步骤102c,根据子应用程序的文件中的各个页面的视图文件,生成支持在Web端识别的第二视图文件代码;
[0072] 第二视图文件代码用于描述目标应用运行于Web端时各个页面的公共组件的结构。Web应用的视图文件代码与子应用程序的视图文件代码的区别在于:编写视图文件代码所采取的语法不同。因此,可通过对子应用程序的文件中的视图代码文件所采取的编写语法进行转换,进而获得Web应用的视图文件代码。可选地,第二视图文件代码可通过如下步骤获取:获取各个页面的视图文件中包含的、且按照子应用程序的语法编写的第一视图文件代码;将第一视图文件代码转换成按照Web端支持的语法编写的第二视图文件代码。
[0073] 可选地,应用转换设备预先存储有子应用程序的语法与Web端支持的语法之间的映射关系,应用转换设备可以查找上述映射关系,进而实现第一视图文件代码与第二视图文件代码之间的转换。示例性地,第一视图文件代码中的“view”替换为“div”。结合参考图4,其示出了本发明一个示例性实施例示出的生成第二视图文件代码的示意图。其中,图4中的(a)部分是按照子应用程序的语法编写的第一视图文件代码,图4中的(b)部分是按照Web端支持的语法编写的第二视图文件代码。
[0074] 可选地,步骤102还包括如下步骤102d。
[0075] 步骤102d,将上述支持在Web端执行的逻辑代码、支持在Web端识别的第二样式文件代码、支持在Web端识别的第二视图文件代码中的第一项或者第一项与其它任意一项或多项的组合,添加至预设格式的文件中,生成支持在Web端运行的可执行文件。
[0076] 其中,预设格式的文件可以是js(JavaScript)格式的文件。
[0077] 步骤103,根据可执行文件和支持在Web应用运行的第二入口文件生成Web应用的文件,第二入口文件中引用可执行文件。
[0078] Web应用的文件是支持应用在Web端运行所需的全部文件。在本发明实施例中,子应用程序与Web应用具有相同的功能,也即,子应用程序的逻辑代码所实现的功能与Web应用的逻辑代码所实现的功能相同。例如,子应用程序和Web应用均具有为手机号码充值的功能,再例如,子应用程序的文件和Web应用的文件均具有在线选购电影票的功能。
[0079] Web应用的文件包括:支持在Web端运行的第二入口文件和可执行文件,且第二入口文件中引用可执行文件。Web应用的文件中的第二入口文件为后缀名为.html的文件。然而在步骤101中的解释说明提到,子应用程序的文件中的第一入口文件为后缀名为.js的文件。在本发明实施例中,将可执行文件的文件标识写入第二入口文件的模板文件,进而生成第二入口文件。其中,可执行文件的文件标识可以是文件名。
[0080] 综上所述,本发明实施例提供的方法,提供了一种将子应用程序的文件转换为Web应用的文件的技术方案,以使得与子应用程序具有相同功能的Web应用无需单独开发,从而节省了开发上述Web应用所需的人力和时间成本,提升开发效率,且使得实现相同功能的Web应用和子应用程序共用一套基础的源代码,提升代码复用率。
[0081] 母应用程序提供有公共组件库和应用程序编程接口库,该公共组件库包括丰富的公共组件,该应用程序编程接口库包括丰富的应用程序编程接口(可以称之为公共接口),供开发者在开发子应用程序时使用。然而,Web应用并不能够调用上述公共组件和公共接口。因此,在对子应用程序版本的文件进行转换之外,还需要对子应用程序的文件所引用的公共组件和公共接口进行转换。下面结合图5A和图5B,对公共组件和公共接口的转换方法进行详细描述。
[0082] 在基于图1所示实施例提供的可选实施例中,请参考图5A,该应用转换方法还包括如下的步骤。
[0083] 步骤501,对于子应用程序的文件中引用的用于实现第一功能的公共组件,从Web组件集中选取用于实现第一功能的Web组件。
[0084] 公共组件是可供不同的子应用程序共用的组件,具有视觉形态,是子应用程序页面的组成单元。公共组件还可以封装有用于处理针对该公共组件所触发事件的逻辑代码。不同的子应用程序共用公共组件,具体可以是同时或者在不同时刻调用相同的公共组件。
公共组件包括但不限于按钮(button)组件、进度条(progress)组件、文本(text)组件、表单(form)组件、滑动(slider)组件等等。
[0085] Web组件集中包括至少一个在Web端支持的组件。Web端并不存在组件,而母应用程序提供大量组件,以供开发者在开发子应用程序时使用。为克服上述问题,在本发明实施例中,采用Vue.js框架编写若干个用于实现不同功能的Web组件,上述Web组件也可称为Vue组件,并将其添加至WePY框架中,采用Vue组件模拟公共组件具备的功能,以使得与子应用程序具有相同功能的Web应用运行时能够引用Vue组件,进而实现公共组件具备的功能。
[0086] 步骤502,将引用关系由用于实现第一功能的公共组件,更改为用于实现第一功能的Web组件。
[0087] 若Web应用的文件中的引用关系还引用实现第一功能的公共组件,则Web应用运行时,其无法实现第一功能。因此,需要更改子应用程序的文件中的引用关系。
[0088] 综上所述,本发明实施例提供的方法,通过预先在子应用程序开发框架中添加Web组件,并修改子应用程序版本的文件中的引用关系,以支持Web应用运行时能实现公共组件具备的功能。在基于图1所示实施例提供的可选实施例中,请参考图5B,该应用转换方法还包括如下的步骤。
[0089] 步骤503,对于子应用程序的文件中引用的用于实现第二功能的公共接口,从Web接口集中选取用于实现第二功能的Web接口。
[0090] 公共接口是可供不同的子应用程序共用的接口。公共接口可用于进行网络操作、数据处理、媒体操作、操作终端硬件或者操作子应用程序页面等。页面逻辑代码文件中的页面逻辑代码中可记录事件类型和公共接口的对应关系,或者是事件类型、公共组件标识和公共接口的对应关系,从而可以根据页面逻辑代码文件中的页面逻辑代码记载的对应关系,在公共接口库中选择处理事件所需的公共。结合参考图6,其示出了本发明实施例示出的多种公共接口。
[0091] Web接口集中包括至少一个在Web端支持的接口。Web端并不存在接口,而母应用程序或操作系统提供大量公共接口,以供开发者在开发子应用程序时使用。为克服上述问题,在本发明实施例中,采用Web端支持的框架编写若干个用于实现不同功能的Web接口,并将其添加至WePY框架中,采用Web接口模拟公共接口具备的功能。
[0092] 需要说明的是,存在一部分公共接口是在Web端无法支持的,例如支付接口等。在本发明实施例中,只考虑Web端能支持的接口,对于Web端无法支持的接口,需要在开发过程中主动规避。
[0093] 步骤504,将引用关系由用于实现第二功能的公共接口,更改为用于实现第二功能的Web接口。
[0094] 若Web应用的文件中的引用关系还引用实现第二功能的公共接口,则Web应用运行时,其无法实现第二功能。因此,需要更改子应用程序的文件中的引用关系。
[0095] 综上所述,本发明实施例提供的方法,通过预先在子应用程序开发框架中添加Web接口,并修改子应用程序的文件中的引用关系,以支持Web应用运行时能实现公共接口具备的功能。
[0096] 下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。
[0097] 请参考图7,其示出了本发明一个实施例提供的应用转换装置的框图。该装置具有实现上述方法示例的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置可以包括:文件获取模块701、第一生成模块702和第二生成模块703。
[0098] 文件获取模块701,用于获取子应用程序的文件。
[0099] 所述子应用程序是依赖母应用程序运行的应用程序;所述子应用程序的文件包括:第一入口文件、全局配置文件、以及每一个页面的逻辑代码文件。
[0100] 第一生成模块702,用于根据所述子应用程序的文件生成支持在网页Web端运行的可执行文件。
[0101] 第二生成模块703,用于根据所述可执行文件和支持在Web端运行的第二入口文件生成Web应用的文件,所述第二入口文件中引用所述可执行文件。
[0102] 可选地,所述可执行文件中包括支持在Web端执行的逻辑代码;
[0103] 第一生成模块702具体用于:
[0104] 对于每一个页面,获取所述页面的逻辑代码文件中包含的多个逻辑代码模块,以及各个逻辑代码模块之间的调用关系;
[0105] 将所述页面的各个逻辑代码模块按序添加至所述可执行文件中,并为所述页面的各个逻辑代码模块添加编号;
[0106] 根据所述页面的各个逻辑代码模块之间的调用关系及编号,在所述可执行文件中添加所述页面的入口代码,所述页面的入口代码用于指示所述页面的各个逻辑代码模块之间的调用关系。
[0107] 可选地,所述子应用程序的文件还包括全局样式文件和每一个页面的样式文件,所述可执行文件中还包括支持在Web端识别的第二样式文件代码;
[0108] 第一生成模块702具体用于:
[0109] 获取所述全局样式文件和各个页面的样式文件中包含的第一样式文件代码;
[0110] 将所述第一样式文件代码中的尺寸单位由第一单位转换为第二单位,得到所述第二样式文件代码;其中,所述第一单位是指所述母应用程序识别的尺寸单位,所述第二单位是指在Web端识别的尺寸单位。
[0111] 可选地,所述子应用程序的文件还包括每一个页面的视图文件,所述可执行文件中还包括支持在Web端识别的第二视图文件代码;
[0112] 第一生成模块702具体用于:
[0113] 获取各个页面的视图文件中包含的、且按照所述子应用程序的语法编写的第一视图文件代码;
[0114] 将所述第一视图文件代码转换成按照Web端支持的语法编写的第二视图文件代码。
[0115] 可选地,所述装置还包括:组件选取模块和第一更改模块(图中未示出)。
[0116] 组件选取模块,用于对于所述子应用程序的文件中引用的用于实现第一功能的公共组件,从Web组件集中选取用于实现所述第一功能的Web组件,所述Web组件集中包括至少一个在Web端支持的组件。
[0117] 第一更改模块,用于将引用关系由用于实现所述第一功能的公共组件,更改为用于实现所述第一功能的Web组件。
[0118] 可选地,所述装置还包括:接口选取模块和第二更改模块(图中未示出)。
[0119] 接口选取模块,用于对于所述子应用程序的文件中引用的用于实现第二功能的公共接口,从Web接口集中选取用于实现所述第二功能的Web接口,所述Web接口集中包括至少一个在Web端支持的接口。
[0120] 第二更改模块,用于将引用关系由用于实现所述第二功能的公共接口,更改为用于实现所述第二功能的Web接口。
[0121] 综上所述,本发明实施例提供的方法,提供了一种将子应用程序的文件转换为Web应用的文件的技术方案,以使得与子应用程序具有相同功能的Web应用无需单独开发,从而节省了Web应用所需的人力和时间成本,提升开发效率,且使得Web应用和子应用程序共用一套基础的源代码,提升代码复用率。
[0122] 需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0123] 请参考图8,其示出了本发明一个实施例提供的应用转换设备800(以下简称“设备800”)的结构方框图。所述装置800包括中央处理单元(CPU)801、包括随机存取存储器(RAM)
802和只读存储器(ROM)803的系统存储器804,以及连接系统存储器804和中央处理单元801的系统总线805。所述装置800还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)806,和用于存储操作系统813、应用程序814和其他程序模块815的大容量存储设备807。
[0124] 所述基本输入/输出系统806包括有用于显示信息的显示器808和用于用户输入信息的诸如鼠标、键盘之类的输入设备809。其中所述显示器808和输入设备809都通过连接到系统总线805的输入输出控制器810连接到中央处理单元801。所述基本输入/输出系统806还可以包括输入输出控制器810以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器810还提供输出到显示屏、打印机或其他类型的输出设备。
[0125] 所述大容量存储设备807通过连接到系统总线805的大容量存储控制器(未示出)连接到中央处理单元801。所述大容量存储设备807及其相关联的计算机可读介质为装置800提供非易失性存储。也就是说,所述大容量存储设备807可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
[0126] 不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器804和大容量存储设备807可以统称为存储器。
[0127] 根据本发明的各种实施例,所述装置800还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即装置800可以通过连接在所述系统总线805上的网络接口单元811连接到网络812,或者说,也可以使用网络接口单元811来连接到其他类型的网络或远程计算机系统(未示出)。
[0128] 所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述应用转换方法。
[0129] 在示例性实施例中,还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由应用转换设备的处理器加载并执行以实现上述方法实施例中的各个步骤。可选地,上述计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
[0130] 在示例性实施例中,还提供了一种计算机程序产品,当该计算机程序产品被执行时,其用于实现上述方法实施例中的各个步骤的功能。
[0131] 应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本文中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。
[0132] 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0133] 以上所述仅为本发明的示例性实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。