前端应用调用方法、设备、存储介质及程序产品与流程

文档序号:26278249发布日期:2021-08-13 19:34阅读:154来源:国知局
前端应用调用方法、设备、存储介质及程序产品与流程

本发明属于家用电器技术领域,具体涉及一种前端应用调用方法、设备、存储介质及程序产品。



背景技术:

目前业界主流的软件开发方法是前后端分离,后端服务可以采用微服务模式,而前端服务通常构建在一个项目中,这种方式后端服务可得到解耦,而前端服务还是耦合在一起的。

现有技术中,随着业务不断的发展,软件功能的不断丰富,前端将会越来越臃肿,开发、维护、部署的成本越来越大,复杂性越来越高、逐渐形成应用程序的技术债务、上线部署的频率降低、可靠性差、阻碍技术创新。



技术实现要素:

本发明提供一种前端应用调用方法、设备、存储介质及程序产品,以解决前端服务间的独立性,满足应用的调用需求,使用户按需构建应用程序。

本发明的第一方面是提供一种前端应用调用方法,应用于业务系统,所述业务系统包括子应用库以及至少一个主应用,所述子应用库包括多个相互隔离的子应用,每一子应用为一个前端应用,每一主应用为一个业务平台,所述方法应用于主应用所在设备,所述方法包括:

接收对所述子应用库中的任意目标子应用的调用指令;

根据所述调用指令获取目标子应用信息,根据所述目标子应用信息将目标子应用在所述主应用上进行注册,以将所述目标子应用挂载到所述主应用上;

根据所述目标子应用信息向所述目标子应用发送配置信息,以使所述目标子应用在所述主应用上显示对应页面。

可选的,所述根据所述调用指令获取目标子应用信息,根据所述目标子应用信息将目标子应用在所述主应用上进行注册,包括:

根据所述调用指令控制所述目标子应用运行所述目标子应用中的注册程序,接收所述目标子应用发送的所述目标子应用信息,所述目标子应用信息包括以下至少一项:目标子应用的名称、接口、容器、主入口路径、输入数据信息、部署地址、路由信息;

根据所述目标子应用信息在所述主应用上进行挂载。

可选的,所述目标子应用信息包括所述目标子应用的描述信息,所述描述信息包括目标子应用的功能和/或菜单;

所述根据所述目标子应用信息向所述目标子应用发送配置信息,以使所述目标子应用在所述主应用上显示对应页面,包括:

根据所述目标子应用的描述信息,向所述目标子应用发送配置信息;

获取所述目标子应用与所述配置信息对应的页面内容,并在所述主应用上对所述目标子应用的页面内容进行渲染。

可选的,所述目标子应用有至少两个;所述方法还包括:

接收该至少两个目标子应用中第一目标子应用与第二目标子应用之间相互调用指令;

由所述主应用根据所述相互调用指令,接收所述第一目标子应用的输出接口的输出参数,并将所述将输出参数输入至所述第二目标子应用的输入接口。

可选的,所述方法还包括:

接收用户对所述至少两个目标子应用的访问请求,并缓存对应的访问路径;

在接收到用户的回退指令后,根据所述访问路径依次回退。

可选的,所述方法还包括:

在所述主应用空闲时间,获取所述目标子应用的预加载内容,在所述主应用上对所述目标子应用的预加载内容预先进行渲染。

可选的,所述方法还包括:

接收所述目标子应用发送的更新指令,所述更新指令为所述目标子应用从当前所在设备迁移目标设备后向所述主应用发送的,所述更新指令中包括目标设备的部署地址和/或路由信息;

根据所述更新指令,控制所述主应用更新所述目标子应用信息。

可选的,所述方法还包括:

接收对所述目标子应用的卸载指令;

根据所述卸载指令,将所述目标子应用从所述主应用上卸载。

可选的,所述目标子应用信息包括生命周期钩子函数;所述方法还包括:

由所述主应用采用心跳方式调用所述生命周期钩子函数,获取所述目标子应用的状态,所述目标子应用的状态包括:未挂载、已挂载、或已卸载;

根据所述目标子应用的状态对所述目标子应用进行生命周期监控。

本发明的第二方面是提供一种前端应用调用装置,应用于业务系统,所述业务系统包括子应用库以及至少一个主应用,所述子应用库包括多个相互隔离的子应用,每一子应用为一个前端应用,每一主应用为一个业务平台,所述装置应用于主应用所在设备,所述装置包括:

通信模块,用于接收对所述子应用库中的任意目标子应用的调用指令;

处理模块,用于根据所述调用指令获取目标子应用信息,根据所述目标子应用信息将目标子应用在所述主应用上进行注册,以将所述目标子应用挂载到所述主应用上;

显示模块,用于根据所述目标子应用信息向所述目标子应用发送配置信息,以使所述目标子应用在所述主应用上显示对应页面。

可选的,所述处理模块在根据所述调用指令获取目标子应用信息,根据所述目标子应用信息将目标子应用在所述主应用上进行注册时,用于:

根据所述调用指令控制所述目标子应用运行所述目标子应用中的注册程序,接收所述目标子应用发送的所述目标子应用信息,所述目标子应用信息包括以下至少一项:目标子应用的名称、接口、容器、主入口路径、输入数据信息、部署地址、路由信息;

根据所述目标子应用信息在所述主应用上进行挂载。

可选的,所述目标子应用信息包括所述目标子应用的描述信息,所述描述信息包括目标子应用的功能和/或菜单;

所述显示模块在根据所述目标子应用信息向所述目标子应用发送配置信息,以使所述目标子应用在所述主应用上显示对应页面时,用于:

根据所述目标子应用的描述信息,向所述目标子应用发送配置信息;

获取所述目标子应用与所述配置信息对应的页面内容,并在所述主应用上对所述目标子应用的页面内容进行渲染。

可选的,所述目标子应用有至少两个;

所述通信模块还用于,接收该至少两个目标子应用中第一目标子应用与第二目标子应用之间相互调用指令;

所述处理模块还用于,由所述主应用根据所述相互调用指令,接收所述第一目标子应用的输出接口的输出参数,并将所述将输出参数输入至所述第二目标子应用的输入接口。

可选的,所述通信模块还用于,接收用户对所述至少两个目标子应用的访问请求,并缓存对应的访问路径;

所述处理模块还用于,在接收到用户的回退指令后,根据所述访问路径依次回退。

可选的,所述显示模块还用于,在所述主应用空闲时间,获取所述目标子应用的预加载内容,在所述主应用上对所述目标子应用的预加载内容预先进行渲染。

可选的,所述通信模块还用于,接收所述目标子应用发送的更新指令,所述更新指令为所述目标子应用从当前所在设备迁移目标设备后向所述主应用发送的,所述更新指令中包括目标设备的部署地址和/或路由信息;

所述处理模块还用于,根据所述更新指令,控制所述主应用更新所述目标子应用信息。

可选的,所述通信模块还用于,接收对所述目标子应用的卸载指令;

所述处理模块还用于,根据所述卸载指令,将所述目标子应用从所述主应用上卸载。

可选的,所述目标子应用信息包括生命周期钩子函数;

所述处理模块还用于,由所述主应用采用心跳方式调用所述生命周期钩子函数,获取所述目标子应用的状态,所述目标子应用的状态包括:未挂载、已挂载、或已卸载;根据所述目标子应用的状态对所述目标子应用进行生命周期监控。

本发明的第三方面是提供一种电子设备,包括:

存储器,用于存储计算机程序;

处理器,用于运行所述存储器中存储的计算机程序以实现如第一方面所述的方法。

本发明的第四方面是提供一种计算机可读存储介质,其上存储有计算机程序;

所述计算机程序被处理器执行时实现如第一方面所述的方法。

本发明的第五方面是提供一种计算机程序产品,包括计算机程序;

所述计算机程序被处理器执行时实现如第一方面所述的方法。

本发明提供的前端应用调用方法、设备、存储介质及程序产品,通过接收对所述子应用库中的任意目标子应用的调用指令;根据所述调用指令获取目标子应用信息,根据所述目标子应用信息将目标子应用在所述主应用上进行注册,以将所述目标子应用挂载到所述主应用上;根据所述目标子应用信息向所述目标子应用发送配置信息,以使所述目标子应用在所述主应用上显示对应页面。本实施例通过对前端服务拆分为子模块,各子应用可独立部署、独立开发、独立运行,并通过业务平台来实现按需求调用目标子应用,在前端软件研发过程中,可以明显提高软件研发效能,将前端开发过程化繁为简,开发人员只需要要关注自己的业务代码,和现有技术中前端未拆分子应用相比大大减少了复杂的开发环境、臃肿的代码逻辑带来的时间成本;并且,由于各子应用相互独立,一个子应用出现问题,不影响或者较小影响线上其他子应用的运行状态,可仅针对出问题的子应用进行修复并上线,可以做到对问题的及时响应,做到影响范围最小化;另外,子应用可根据主应用的配置信息进行对应内容的显示,不需要手工配置和显示对应页面。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1a为本发明一实施例提供的业务系统架构示意图;

图1b为本发明另一实施例提供的业务系统示意图;

图2为本发明一实施例提供的前端应用调用方法流程图;

图3为本发明另一实施例提供的前端应用调用方法流程图;

图4为本发明另一实施例提供的前端应用调用方法流程图;

图5为本发明另一实施例提供的前端应用调用方法流程图;

图6为本发明实施例提供的前端应用调用装置的结构图;

图7为本发明实施例提供的电子设备的结构图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

目前业界主流的软件开发方法是前后端分离,后端服务可以采用微服务模式,例如某一软件有产品、订单、用户三个模块,在微服务模式下,产品、订单、用户三个模块分别为一个独立的服务,每个服务能够单独运行和部署,后端服务可得到解耦。而前端服务通常构建在一个项目中,也即前端服务还是耦合在一起的。

现有技术中,随着业务不断的发展,软件功能的不断丰富,前端将会越来越臃肿,开发、维护、部署的成本越来越大,以下问题凸显:

复杂性高:整个项目包含的模块非常多、模块的边界模糊、依赖关系不清晰、代码质量参差不齐、混乱地堆砌在一起。可想而知整个项目非常复杂。每次修改代码都心惊胆战,甚至添加一个简单的功能,或者修改一个bug都会带来隐含的缺陷;

技术债务:随着时间推移、需求变更和人员更迭,会逐渐形成应用程序的技术债务,并且越积越多。已使用的系统设计或代码难以被修改,因为应用程序中的其他模块可能会以意料之外的方式使用它;

部署频率低:随着代码的增多,构建和部署的时间也会增加。在前端应用中,每次功能的变更或缺陷的修复都会导致需要重新部署整个应用。全量部署的方式耗时长、影响范围大、风险高,这使得项目上线部署的频率较低。而部署频率低又导致两次发布之间会有大量的功能变更和缺陷修复,出错率比较高;

可靠性差:某个应用bug,例如死循环、内存溢出等,可能会导致整个应用的崩溃;

阻碍技术创新:单个前端应用往往使用统一的技术平台或方案解决所有的问题,团队中的每个成员都必须使用相同的开发语言和框架,要想引入新框架或新技术平台会非常困难。

针对上述技术问题,本发明中将应用程序的前端服务进行解耦,将应用程序的前端服务拆分为子模块,提供一个子应用库,子应用库包括多个相互隔离的子应用,每一子应用为一个前端应用,每个子应用可独立部署、独立开发、独立运行,并通过一个业务平台来实现按需调用子应用,业务平台为主应用,可根据对所述子应用库中的任意目标子应用的调用指令,获取目标子应用信息,根据目标子应用信息将目标子应用在主应用上进行注册,以将目标子应用挂载到主应用上,根据目标子应用信息向目标子应用发送配置信息,以使目标子应用在主应用上显示对应页面,从而构建出所需的应用程序前端。

本发明提供的前端应用调用方法,适用于如图1a所示的业务系统架构,包括主应用和子应用库,其中每一个平台为一个主应用,可按照业务线划分平台,而多个子应用构成子应用库,子应用库中的每一子应用均可被不同的主应用调用,子应用库中每一子应用相互隔离,可以独立部署、独立开发、独立运行,可以根据需求将所需调用的子应用注册到主应用(不需要的模块可不进行注册),使得主应用挂载该子应用,子应用可根据主应用的配置信息显示不同的内容,核心模块是每个主应用的必须模块,可包括登录、注册、权限管理等功能;子应用之间通过暴露的钩子函数以及窗口(window)进行通信,子应用之间所需传输的数据通过主应用进行传输。

每个子应用可包括更多的组件和工具,以图1a中的子应用构成为例,其基于vue技术栈实现,包括各种组件和通用工具包模块,通用工具包模块作为单独模块,独立部署开发,提供一些通用性的组件和基础性工具类,包括统一风格后再次封装的一些第三方ui组件,以npm包的形式,作为依赖库引入工程;另外,页面级权限通过vuerouter控制,根据用户权限过滤路由表,从而去控制访问的页面;按钮级权限根据用户权限通过通用工具包模块提供的权限校验指令(自定义封装的指令)去控制。

下面结合具体实施例对前端应用调用过程进行详细解释和说明。

图2为本发明实施例提供的前端应用调用方法流程图。本实施例提供了一种前端应用调用方法,应用于业务系统,所述业务系统包括子应用库以及至少一个主应用,所述子应用库包括多个相互隔离的子应用,每一子应用为一个前端应用,每一主应用为一个业务平台,

在本实施例中,将应用程序的前端服务进行解耦,将应用程序的前端服务拆分为子模块,提供一个子应用库,子应用库包括多个相互隔离的子应用,每一子应用为一个前端应用,每个子应用可独立部署、独立开发、独立运行,每个子应用可部署在相同的服务器上也可在不同的服务器上,可以是与主应用同一网络中的任意服务器上;通过业务平台来实现按需调用子应用,可以调用一个或多个子应用,子应用可根据主应用的配置信息显示对应的内容,可选的,各子应用可显示在同一界面中共享window对象,但各子应用之间相互隔离,包括样式隔离、js隔离以及资源隔离等,每个子应用运行在自己的沙盒中,不会引发冲突。可选的,可基于vue脚手架进行子应用模块开发。

每个主应用为一个业务平台,为子应用提供底层支持,主应用可部署在服务器等电子设备上,主应用可以包括核心模块(也可称为基础模块),其包含登录、注册、权限管理等功能,子应用可以在主应用上注册后,将子应用挂载到主应用上,例如主应用可以url()(uniformresourcelocator,统一资源定位器)的方式挂载子应用,此外,主应用还会通过钩子函数把路由信息(如顶级路由信息)以及一些配置信息传递给子应用,子应用可根据配置信息显示相应的内容。可选的,业务系统可包括至少一个平台,也即包括至少一个主应用,每个平台按照产品线进行划分,至少一个主应用可调用同一个子应用库中的各子应用。其中,可选的,作为示例,以一个完整的业务系统可如图1b所示,包括一个主应用和多个子应用。

如图2所示,本实施例的前端应用调用方法应用于主应用所在设备,该设备可以为服务器或者其他电子设备,该方法具体步骤如下:

s201、接收对所述子应用库中的任意目标子应用的调用指令。

在本实施例中,可用户可以根据需求选择调用子应用库中的哪一个或哪些子应用(记为目标子应用),主应用所在设备可接收到用户对目标子应用的调用指令。

s202、根据所述调用指令获取目标子应用信息,根据所述目标子应用信息将目标子应用在所述主应用上进行注册,以将所述目标子应用挂载到所述主应用上。

在本实施例中,可以根据调用指令确定需要调用哪一个或者哪些目标子应用,然后可获取目标子应用信息,其中目标子应用信息可包括但不限于以下至少一项:目标子应用的名称、接口、容器、主入口路径、输入数据信息、部署地址、路由信息,可选的,还可包括目标子应用的描述信息,所述描述信息包括目标子应用的功能和/或菜单。

进一步的,可基于目标子应用信息将目标子应用在主应用上进行注册,从而实现将目标子应用挂载到主应用上。

在一种可选实施例中,可根据所述调用指令控制所述目标子应用运行所述目标子应用中的注册程序,接收所述目标子应用发送的所述目标子应用信息,所述目标子应用信息包括以下至少一项:目标子应用的名称、接口、容器、主入口路径、输入数据信息、部署地址、路由信息;进而根据所述目标子应用信息在所述主应用上进行挂载。

可选的,注册程序可如下:

通过控制目标子程序运行上述注册程序,可以将目标子应用信息发送给主应用程序,主应用程序进行注册,以对目标子应用进行挂载,具体可采用url的方式挂载目标子应用,当然也可采用其他方式挂载目标子应用,此处不再赘述。

s203、根据所述目标子应用信息向所述目标子应用发送配置信息,以使所述目标子应用在所述主应用上显示对应页面。

在本实施例中,完成目标子应用的挂载后,主应用根据目标子应用信息可向目标子应用发送配置信息,以配置目标子应用在主应用上显示怎样的界面。

可选的,所述目标子应用信息包括所述目标子应用的描述信息,所述描述信息包括目标子应用的功能和/或菜单;作为示例,描述信息可以通过menu.json文件来描述,例如menu.json文件具体可如下所示:

本实施例中,可通过menu.json文件记录完整的路由信息。

进一步的,如图3所示,所述根据所述目标子应用信息向所述目标子应用发送配置信息,以使所述目标子应用在所述主应用上显示对应页面,可包括:

s2031、根据所述目标子应用的描述信息,向所述目标子应用发送配置信息;

s2032、获取所述目标子应用与所述配置信息对应的页面内容,并在所述主应用上对所述目标子应用的页面内容进行渲染。

在本实施例中,由于目标子应用的描述信息记录了目标子应用的功能和/或菜单,进而在注册后可根据记录信息确定目标子应用需要显示的页面内容,然后在主应用上进行页面内容的渲染,实现对目标子应用的功能显示或菜单显示,不需要手工配置菜单,系统管理员只需在目标子系统注册成功后给相关用户角色分配对应菜单权限即可。

本实施例提供的前端应用调用方法,通过接收对所述子应用库中的任意目标子应用的调用指令;根据所述调用指令获取目标子应用信息,根据所述目标子应用信息将目标子应用在所述主应用上进行注册,以将所述目标子应用挂载到所述主应用上;根据所述目标子应用信息向所述目标子应用发送配置信息,以使所述目标子应用在所述主应用上显示对应页面。本实施例通过对前端服务拆分为子模块,各子应用可独立部署、独立开发、独立运行,并通过业务平台来实现按需求调用目标子应用,在前端软件研发过程中,可以明显提高软件研发效能,将前端开发过程化繁为简,开发人员只需要要关注自己的业务代码,和现有技术中前端未拆分子应用相比大大减少了复杂的开发环境、臃肿的代码逻辑带来的时间成本;并且,由于各子应用相互独立,一个子应用出现问题,不影响或者较小影响线上其他子应用的运行状态,可仅针对出问题的子应用进行修复并上线,可以做到对问题的及时响应,做到影响范围最小化;另外,子应用可根据主应用的配置信息进行对应内容的显示,不需要手工配置和显示对应页面。

作为上述实施例的进一步改进,所述目标子应用有至少两个;所述方法还包括:

接收该至少两个目标子应用中第一目标子应用与第二目标子应用之间相互调用指令;

由所述主应用根据所述相互调用指令,接收所述第一目标子应用的输出接口的输出参数,并将所述将输出参数输入至所述第二目标子应用的输入接口。

在本实施例中,可能存在需要调用至少两个目标子应用、并且至少两个子应用之间需要相互调用,以第二目标子应用需要调用第一目标子应用输出参数的情况为例,由于第一目标子应用和第二目标子应用相互独立,第一目标子应用和第二目标子应用分别运行在各自的沙盒中,第一目标子应用和第二目标子应用之间无法直接连接,需要借助主应用实现,也即通过主应用接收第一目标子程序的输出接口的输出参数,再由主应用将输出参数输入到第二目标子应用的输入接口,实现至少两个子应用之间的相互调用。

在上述任一实施例的基础上,所述方法还包括:

接收用户对所述至少两个目标子应用的访问请求,并缓存对应的访问路径;

在接收到用户的回退指令后,根据所述访问路径依次回退。

在本实施例中,用户可在经过权限验证后访问目标子应用,访问过程中可缓存用户的访问路径,例如第一步访问了哪个子应用的哪个功能,第二步访问了哪个子应用的哪个功能,以便于需要回退时,根据访问路径进行回退,也即用户向回退到上一步时直接根据访问路径确定上一步访问了哪个子应用的哪个功能,并显示该子应用的该功能的页面。通过上述过程,可解决用户仅仅访问了一个子应用的不同功能的情况下的如何进行回退的问题,也可解决在主应用界面中存在至少两个目标子应用,用户分别访问了不同的子应用的功能的情况中如何进行回退的问题。

在上述任一实施例的基础上,所述方法还包括:在所述主应用空闲时间,获取所述目标子应用的预加载内容,在所述主应用上对所述目标子应用的预加载内容预先进行渲染。

在本实施例中,主应用可对目标子应用的预请求资源进行预加载,可在主应用空闲时间获取目标子应用预加载内容,进而在主应用上对目标子应用的预加载内容预先进行渲染,以便于提高后续打开目标子应用的该些内容时的打开速度,提升用户体验。

在上述任一实施例的基础上,如图4所示,所述方法还包括:

s301、接收所述目标子应用发送的更新指令,所述更新指令为所述目标子应用从当前所在设备迁移目标设备后向所述主应用发送的,所述更新指令中包括目标设备的部署地址和/或路由信息;

s302、根据所述更新指令,控制所述主应用更新所述目标子应用信息。

在本实施例中,由于各个子应用为独立的,且可以部署到与主应用同一个网络中的任意服务器上,因此,对于目标子应用可动态切换服务器,也即将目标子应用迁移到其他服务器上。本实施例中可以先对目标子应用迁移到目标设备后,将目标设备的部署地址和/或路由信息同步给主应用,主应用更新目标子应用信息即可,不影响其他子应用的运行。需要说明的是,若目标子应用在向主应用注册时使用的是域名信息,则迁移后域名信息不发生改变,因此也可不向主应用上报更新指令。

在上述任一实施例的基础上,所述方法还包括:接收对所述目标子应用的卸载指令;根据所述卸载指令,将所述目标子应用从所述主应用上卸载。

在本实施例中,在不需要目标子应用或者需要对目标子应用下线时,可以对目标子应用进行卸载,主应用可根据卸载指令将目标子应用从主应用上卸载,避免前端的臃肿。

在上述任意实施例的基础上,所述目标子应用信息包括生命周期钩子函数,具体的,目标子应用可在自己的入口js导出生命周期钩子函数,可选的生命周期钩子函数可包括bootstrap、mount、unmount三个生命周期钩子函数,可用于获取目标子应用的不同状态,包括未挂载、已挂载、已卸载;如图5所示,所述方法还包括:

s401、由所述主应用采用心跳方式调用所述生命周期钩子函数,获取所述目标子应用的状态,所述目标子应用的状态包括:未挂载、已挂载、或已卸载;

s402、根据所述目标子应用的状态对所述目标子应用进行生命周期监控。

在本实施例中,主应用可采用心跳方式,也即每间隔预定时间调用生命周期钩子函数,获取目标子应用的状态,当然,主应用可以在其他任意时刻调用生命周期钩子函数。进一步的,主应用可基于目标子应用的状态对目标子应用进行生命周期监控,从而在不同的生命周期内对目标子应用进行对应的数据管理、渲染等操作。

下面将以一个具体示例对上述实施例进行举例说明:

假设有主应用(root)、第一子应用(framework-web)、第二子应用(test-web)。http://localhost:8080/main为主应用的路由,第一子应用(framework-web)的固定前缀设置为‘/framework’,第二子应用(test-web)的固定前缀设置为‘/test’,当需要导航到http://localhost:8080/framework时,会挂载第一子应用(framework-web),当第一子应用资源加载完成后,又会根据framework-web的路由配置导航到http://localhost:8080/framework/login,从而完成从主应用到子应用的导航。假如接着还需要导航到http://localhost:8080/test,则主应用可卸载掉第一子应用(framework-web),然后挂载第二子应用(test-web),去匹配test的子级路由。

挂载过程以第二子应用为例,首先在主应用中注册第二子应用,具体如下:

然后在第二子应用导出生命周期函数,也就是将自己的路由信息(routes)注册到主应用,第二子应用需要在自己的入口js导出bootstrap、mount、unmount三个生命周期钩子,以供主应用在适当的时机调用,具体如下。

然后,可访问http://localhost:8080/main/test即可显示第二子应用相应的页面。

图6为本发明实施例提供的前端应用调用装置的结构图。本实施例提供的前端应用调用装置应用于业务系统,所述业务系统包括子应用库以及至少一个主应用,所述子应用库包括多个相互隔离的子应用,每一子应用为一个前端应用,每一主应用为一个业务平台,所述装置应用于主应用所在设备,所述装置可以执行前端应用调用方法实施例提供的处理流程,如图6所示,所述前端应用调用装置600包括通信模块601、处理模块602、显示模块603。

通信模块,用于接收对所述子应用库中的任意目标子应用的调用指令;

处理模块,用于根据所述调用指令获取目标子应用信息,根据所述目标子应用信息将目标子应用在所述主应用上进行注册,以将所述目标子应用挂载到所述主应用上;

显示模块,用于根据所述目标子应用信息向所述目标子应用发送配置信息,以使所述目标子应用在所述主应用上显示对应页面。

可选的,所述处理模块在根据所述调用指令获取目标子应用信息,根据所述目标子应用信息将目标子应用在所述主应用上进行注册时,用于:

根据所述调用指令控制所述目标子应用运行所述目标子应用中的注册程序,接收所述目标子应用发送的所述目标子应用信息,所述目标子应用信息包括以下至少一项:目标子应用的名称、接口、容器、主入口路径、输入数据信息、部署地址、路由信息;

根据所述目标子应用信息在所述主应用上进行挂载。

可选的,所述目标子应用信息包括所述目标子应用的描述信息,所述描述信息包括目标子应用的功能和/或菜单;

所述显示模块在根据所述目标子应用信息向所述目标子应用发送配置信息,以使所述目标子应用在所述主应用上显示对应页面时,用于:

根据所述目标子应用的描述信息,向所述目标子应用发送配置信息;

获取所述目标子应用与所述配置信息对应的页面内容,并在所述主应用上对所述目标子应用的页面内容进行渲染。

可选的,所述目标子应用有至少两个;

所述通信模块还用于,接收该至少两个目标子应用中第一目标子应用与第二目标子应用之间相互调用指令;

所述处理模块还用于,由所述主应用根据所述相互调用指令,接收所述第一目标子应用的输出接口的输出参数,并将所述将输出参数输入至所述第二目标子应用的输入接口。

可选的,所述通信模块还用于,接收用户对所述至少两个目标子应用的访问请求,并缓存对应的访问路径;

所述处理模块还用于,在接收到用户的回退指令后,根据所述访问路径依次回退。

可选的,所述显示模块还用于,在所述主应用空闲时间,获取所述目标子应用的预加载内容,在所述主应用上对所述目标子应用的预加载内容预先进行渲染。

可选的,所述通信模块还用于,接收所述目标子应用发送的更新指令,所述更新指令为所述目标子应用从当前所在设备迁移目标设备后向所述主应用发送的,所述更新指令中包括目标设备的部署地址和/或路由信息;

所述处理模块还用于,根据所述更新指令,控制所述主应用更新所述目标子应用信息。

可选的,所述通信模块还用于,接收对所述目标子应用的卸载指令;

所述处理模块还用于,根据所述卸载指令,将所述目标子应用从所述主应用上卸载。

可选的,所述目标子应用信息包括生命周期钩子函数;

所述处理模块还用于,由所述主应用采用心跳方式调用所述生命周期钩子函数,获取所述目标子应用的状态,所述目标子应用的状态包括:未挂载、已挂载、或已卸载;根据所述目标子应用的状态对所述目标子应用进行生命周期监控。

本发明实施例提供的前端应用调用装置可以具体用于执行上述图2-5所提供的方法实施例,具体功能此处不再赘述。

本发明实施例提供的前端应用调用装置,通过接收对所述子应用库中的任意目标子应用的调用指令;根据所述调用指令获取目标子应用信息,根据所述目标子应用信息将目标子应用在所述主应用上进行注册,以将所述目标子应用挂载到所述主应用上;根据所述目标子应用信息向所述目标子应用发送配置信息,以使所述目标子应用在所述主应用上显示对应页面。本实施例通过对前端服务拆分为子模块,各子应用可独立部署、独立开发、独立运行,并通过业务平台来实现按需求调用目标子应用,在前端软件研发过程中,可以明显提高软件研发效能,将前端开发过程化繁为简,开发人员只需要要关注自己的业务代码,和现有技术中前端未拆分子应用相比大大减少了复杂的开发环境、臃肿的代码逻辑带来的时间成本;并且,由于各子应用相互独立,一个子应用出现问题,不影响或者较小影响线上其他子应用的运行状态,可仅针对出问题的子应用进行修复并上线,可以做到对问题的及时响应,做到影响范围最小化;另外,子应用可根据主应用的配置信息进行对应内容的显示,不需要手工配置和显示对应页面。

图7为本发明实施例提供的电子设备的结构示意图。本发明实施例提供的电子设备可以执行前端应用调用方法实施例提供的处理流程,如图7所示,电子设备70包括存储器71、处理器72、计算机程序;其中,计算机程序存储在存储器71中,并被配置为由处理器72执行以上实施例所述的前端应用调用方法。此外,电子设备70还可具有通讯接口73,用于传输数据。

图7所示实施例的电子设备可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

另外,本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现上述实施例所述的前端应用调用方法。

另外,本实施例还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行以实现上述实施例所述的前端应用调用方法。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

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