CN115857891A - 前端应用程序的生成方法、装置、电子设备和存储介质 - Google Patents
前端应用程序的生成方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN115857891A CN115857891A CN202211442071.8A CN202211442071A CN115857891A CN 115857891 A CN115857891 A CN 115857891A CN 202211442071 A CN202211442071 A CN 202211442071A CN 115857891 A CN115857891 A CN 115857891A
- Authority
- CN
- China
- Prior art keywords
- sub
- application program
- application
- main
- resource
- 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
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本公开提供了前端应用程序的生成方法、装置、电子设备和存储介质,涉及人工智能技术领域,尤其涉及前端应用技术、微前端技术领域。具体实现方案为:获取应用程序集成请求,其中,应用程序集成请求中包括主应用程序的标识;根据主应用程序的标识对应的业务配置信息,确定主应用程序对应的目标子应用程序;对目标子应用程序进行集成,以生成主应用程序对应的前端应用程序。本公开提高了前端应用的生成效率。
Description
技术领域
本公开涉及人工智能技术领域,尤其涉及前端应用技术、微前端技术领域,具体涉及一种前端应用程序的生成方法、装置、电子设备和存储介质。
背景技术
随着互联网行业的发展,基于浏览器的动态网页技术在越来越多的行业得到广泛应用,复杂多样的业务场景对多系统的整合提出了挑战。其中,不同前端系统应用框架存在差异,如何提高整合后资源利用率是亟待解决的问题。
发明内容
本公开提供了一种前端应用程序的生成方法、装置、电子设备和存储介质。具体方案如下:
根据本公开的一方面,提供了一种前端应用程序的生成方法,包括:
获取应用程序集成请求,其中,所述应用程序集成请求中包括主应用程序的标识;
根据所述主应用程序的标识对应的业务配置信息,确定所述主应用程序对应的目标子应用程序;
对所述目标子应用程序进行集成,以生成所述主应用程序对应的前端应用程序。
根据本公开的另一方面,提供了一种前端应用程序的生成装置,包括:
主应用程序集成模块,用于获取应用程序集成请求,其中,所述应用程序集成请求中包括主应用程序的标识;
目标子应用程序确定模块,用于根据所述主应用程序的标识对应的业务配置信息,确定所述主应用程序对应的目标子应用程序;
目标子应用程序集成模块,用于对所述目标子应用程序进行集成,以生成所述主应用程序对应的前端应用程序。
根据本公开的另一方面,提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述实施例所述的方法。
根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据上述实施例所述的方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现上述实施例所述方法的步骤。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1为本公开一实施例提供的前端应用程序的生成方法的流程示意图;
图2为本公开另一实施例提供的前端应用程序的生成方法的流程示意图;
图3为本公开另一实施例提供的前端应用程序的生成方法的流程示意图;
图4为本公开另一实施例提供的前端应用程序的生成方法的流程示意图;
图5为本公开实施例提供的一种前端应用程序生成及使用过程示意图;
图6为本公开一实施例提供的前端应用程序的生成装置的结构示意图;
图7为本公开实施例提供的一种应用流量承接的示意图;
图8是用来实现本公开实施例的前端应用程序的生成方法的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
下面参考附图描述本公开实施例的前端应用程序的生成方法、装置、电子设备和存储介质。
图1为本公开一实施例提供的前端应用程序的生成方法的流程示意图。
本公开实施例的前端应用程序的生成方法,可以由本公开实施例的前端应用程序的生成装置执行,该装置可以配置于电子设备中,可以根据用户选择的主应用程序生成相应的前端应用,提高了前端应用的生成效率,也可以满足用户对前端应用程序的多样化需求,并且可以根据不同主应用程序对应的业务配置信息,对对应的目标子应用程序进行集成,生成相应的前端应用程序,从而多个前端应用程序可以共享业务,提高了资源利用率。
其中,电子设备可以为任一具有计算能力的设备,例如可以为个人电脑、移动终端、服务器等,移动终端例如可以为车载设备、手机、平板电脑、个人数字助理、穿戴式设备等具有各种操作系统、触摸屏和/或显示屏的硬件设备。
如图1所示,该前端应用程序的生成方法包括:
步骤101,获取应用程序集成请求,其中,应用程序集成请求中包括主应用程序的标识。
其中,主应用程序可以理解为基座应用,可以对子应用程序进行加载和卸载。
本公开中,前端应用程序的生成装置可以提供多个主应用程序可供用户选择,比如,可以展示每个主应用程序集成得到的前端应用程序可以实现的功能。当用户选择某种主应用程序后,前端应用程序的生成装置可以获取应用程序集成请求,其中,应用程序集成请求中包括该主应用程序的标识。
步骤102,根据主应用程序的标识对应的业务配置信息,确定主应用程序对应的目标子应用程序。
本公开中,不同子应用程序可以使用不同的视图框架,子应用程序可以是独立开发、独立运行的。
本公开中,可以有多个主应用程序,每个主应用程序的标识具有对应的业务配置信息,也即每个主应用程序具有对应的业务配置信息。其中,业务配置信息中可以包括所需的子应用程序标识、页面的主题样式、标题、页面某块功能的交互、页面某块的业务逻辑等。
作为一种可能的实现方式,可以根据业务配置信息中包含的子应用程序标识,从多个子应用程序中确定出与子应用程序标识对应的子应用程序,并将与子应用程序标识对应的子应用程序,确定为目标子应用程序。
也就是说,业务配置信息中可以包括生成前端应用程序所需的子应用程序标识,可以根据所需的子应用程序标识,从多个子应用程序中确定出目标子应用程序,方法简单、准确性高。
作为另一种可能的实现方式,业务配置信息中可以包括业务配置项,其中,业务配置项可以理解为待生成的前端应用程序可以提供的业务,在确定目标子应用程序时,可以将业务配置项与多个子应用程序的功能描述信息进行匹配,以确定与业务配置项匹配的子应用程序,可以将与业务配置项匹配的子应用程序,作为目标子应用程序。
其中,与业务配置项匹配的子应用程序可以是一个也可以是多个,本公开对此不作限定。
由此,基于业务配置信息中的业务配置项,可以准确地确定出生成前端应用程序所需的子应用程序。
本公开中,基于不同的业务配置信息,确定出的目标子应用程序可能相同,也可能不同。
步骤103,对目标子应用程序进行集成,以生成主应用程序对应的前端应用程序。
本公开中,主应用程序可以根据业务配置信息中包含的业务逻辑、页面样式等,确定目标子应用程序之间的层级关系,可以生成主应用程序对应的前端应用程序。
本公开的前端应用程序的生成,还可以为前端应用程序提供基础运行环境。
本公开实施例中,通过获取应用程序集成请求,其中,应用程序集成请求中包括主应用程序的标识;根据主应用程序的标识对应的业务配置信息,确定主应用程序对应的目标子应用程序;对目标子应用程序进行集成,以生成主应用程序对应的前端应用程序。由此,可以根据用户选择的主应用程序生成相应的前端应用,提高了前端应用的生成效率,可以满足用户对前端应用程序的多样化需求,并且可以根据不同主应用程序对应的业务配置信息,对对应的目标子应用程序进行集成,生成相应的前端应用程序,从而多个前端应用程序可以共享业务,提高了资源利用率。
图2为本公开另一实施例提供的前端应用程序的生成方法的流程示意图。
如图2所示,该前端应用程序的生成方法包括:
步骤201,获取应用程序集成请求,其中,应用程序集成请求中包括主应用程序的标识。
步骤202,根据主应用程序的标识对应的业务配置信息,确定主应用程序对应的目标子应用程序。
本公开中,步骤201-步骤202与上述实施例记载的内容类似,故在此不再赘述。
步骤203,获取共同依赖库的标识与统一资源定位符URL之间的第一映射关系。
本公开中,库可以理解为已经编写好的程序集或者源文件,可以被其它程序引用,子应用程序实现功能需要调用的库,可以称为子应用程序的依赖库。前端应用程序在运行时可以提供主题、UI(User Interface,用户界面)框架、基础组件等,为避免多个子应用程序在拥有相同依赖库时导致重复打包增大体积,主应用程序可以提供共同依赖库,以供多个子应用程序使用。也即共同依赖库可以是指主应用程序提供的供多个子应用程序共用的依赖库。
本公开中,共同依赖库的标识与URL(Uniform Resource Locator,统一资源定位符)之间的第一映射关系可以是预先存储的。
步骤204,将第一映射关系写入目标子应用程序中,以替换目标子应用程序中依赖库的标识与URL之间的第二映射关系。
本公开中,子应用程序中也具有默认的依赖库的标识与URL之间的第二映射关系。
本公开中,在对目标子应用程序集成时,可以将第一映射关系写入到目标子应用程序中,以替换目标子应用程序依赖库的标识与URL之间的第二映射关系。
由于子应用程序中具有共同依赖库的标识与URL之间的第一映射关系,因此,在目标子应用程序运行时,可以根据第一映射关系,确定目标子应用程序使用的共同依赖库对应的目标URL,并从目标URL获取对应的资源。由此,在目标子应用程序运行时,可以从主应用程序拉取资源,提高了资源利用率。
比如,某个依赖库的名称为“library_1”,主应用程序可以重写“library_1”与URL的映射关系,并将其写入所有子应用程序,所有子应用程序访问“library_1”时,可以从“library_1”对应的URL下载资源。
本公开实施例中,在对目标子应用程序进行集成时,获取共同依赖库的标识与URL之间的第一映射关系,并将第一映射关系写入目标子应用程序中,以替换目标子应用程序中依赖库的标识与URL之间的第二映射关系。由此,主应用程序可以提供共同依赖库,并通过重写依赖映射的方式动态注入到子应用程序,可以提高资源利用率。
图3为本公开另一实施例提供的前端应用程序的生成方法的流程示意图。
如图3所示,该前端应用程序的生成方法还包括:
步骤301,获取子应用程序构建请求,其中,子应用程序构建请求中包括子应用程序代码。
本公开中,步骤301与上述实施例中记载的内容类似,故在此步骤赘述。
步骤302,确定子应用程序代码对应的视图框架。
本公开中,前端应用程序的生成装置可以包括负责构建子应用程序的模块,负责构建子应用程序的模块可以为不同视图框架子应用提供SDK(Software Development Kit,软件开发工具包)和标准组件,将标准库依赖外部化,提供部署动态路径能力,规范化编译产出格式。
本公开中,可以通过对子应用程序代码进行分析,确定子应用程序代码使用的视图框架。
步骤303,根据视图框架对应的编译打包规则,对子应用程序代码进行编译打包处理,以生成子应用程序对应的资源包及子应用程序对应的业务路由。
本公开中,不同的视图框架具有相应的编译打包规则,在确定子应用程序代码对应的视图框架后,可以利用视图框架对应的编码打包规则,对子应用程序进行编译打包处理,规范化编译产出格式,以生成子应用程序对应的资源包,并生成子应用程序对应的业务路由。其中,业务路由可以理解为业务URL与页面之间的映射关系。
为了避免多个子应用程序在拥有相同依赖项时,导致重复打包增大体积,主应用程序可以提供共同依赖库,在对子应用程序代码进行编译打包处理生成资源包时,可以获取主应用程序提供的共同依赖库的信息,并将共同依赖库从子应用程序代码抽离,并对抽离后的子应用程序代码进行编译打包处理,生成资源包。由此,可以减小资源包的大小,节省存储空间。
比如,主应用程序提供了a、b、c三个共同依赖库,子应用程序在打包时将a、b、c抽离,不会打包a、b、c,在子应用程序运行时,可以从主应用程序拉取a、b、c三个共同依赖库。
步骤304,在资源包中包括多个分包文件的情况下,为多个分包文件部署路径。
本公开中,如果子应用程序对应的资源包中有多个分包文件,可以根据多个分包文件之间的依赖关系,为多个分包文件动态部署路径,从而可以保证子应用程序的功能能够实现。如果子应用程序对应的资源包只有一个包文件,那么可以将子应用程序代码所在的代码文件的路径确定为资源包的路径。
本公开中,前端应用程序的生成装置可以为子应用构建提供构建插件、模板框架、产出推送能力等。其中,构建插件可以为打包工具动态注入配置和外部化依赖的标准库,为子应用程序的分包文件提供动态部署路径能力等。模板框架,可以为使用不同视图框架的子应用程序提供应用运行主逻辑、生成不同子应用程序的业务路由,并提供子应用程序之间的通信,依赖异步加载等功能。产出推送能力可以将最终得到的子程序应用程序的资源包推送到负责子应用程序注册的模块进行注册。
步骤305,根据资源包中的指定版本信息,对子应用程序进行注册。
本公开中,业务开发人员可以指定子应用程序的名称、指定子应用程序的版本信息,那么子应用程序对应的资源包中可以包括子应用程序的名称、子应用程序的指定版本信息、子应用程序的所有静态资源等。
本公开中,可以将子应用程序的名称、指定版本信息等作为标识,可以将子应用程序注册为指定版本。
在实际应用中,有些子应用程序更新比较快,比如用于实现业务功能的子应用程序,也有些子应用程序虽然会被稳定的调用,但是内容与版本不会频繁更新,比如工具类的子应用程序、第三方依赖库、业务框架、UI组件库等。
进一步地,子应用程序的资源包中还可以包括子应用程序的类型,如果子应用程序的类型为活跃类型,那么可以将资源包存储在本地,从而可以对更新频繁的子应用程序进行资源托管,提高资源加载速度。如果子应用程序的类型为非活跃类型,那么可以将资源包推送至CDN(Content Delivery Network,内容分发网络)服务器,后续用户可以直接访问CDN服务器,从而可以节省存储空间。
其中,子应用程序之间的通信,比如可以是A业务需要使用B业务的功能或组件。其中,子应用程序之间的通信内容可以是library(程序库)、前端组件、静态资源(比如图片、字体文件等)等。
举例来讲,数据集子应用程序在展示时需要展示“标注信息”,那么需要调用标注子应用程序的相关组件。
本公开实施例中,可以确定子应用程序代码对应的视图框架,根据视图框架对应的编译打包规则,对子应用程序代码进行编译打包处理,以生成子应用程序对应的资源包及子应用程序对应的业务路由,并在资源包中包括多个分包文件的情况下,为多个分包文件部署路径,从而可以构建使用不同视图框架的独立子应用程序,那么集成不同视图框架的独立子应用程序,可以实现框架无关性,提高资源利用率,并且还可以根据资源包中的指定版本信息,将子应用程序注册为指定版本,可以满足子应用程序的版本更新需求,从而可以实现子应用程序的自动构建和注册。
图4为本公开另一实施例提供的前端应用程序的生成方法的流程示意图。
如图4所示,该前端应用程序的生成方法还包括:
步骤401,获取前端应用程序对应的资源请求,其中,资源请求中包括待访问子应用程序的标识。
本公开中,在生成前端应用程序后,用户可以访问使用前端应用程序,那么前端应用程序的生成装置,可以获取前端应用程序对应的资源请求,其中,资源请求中可以包括待访问子应用程序的标识。
步骤402,根据待访问子应用程序的标识,及主应用程序中目标子应用程序与URL前缀之间的第三映射关系,获取待访问子应用程序的入口。
本公开中,主应用程序的业务配置信息中可以包括目标子应用程序与URL前缀之间的第三映射关系,可以根据待访问子应用程序的标识,查询目标子应用程序与URL前缀之间的第三映射关系,以确定与待访问子应用程序标识对应的URL前缀,从而根据该URL前缀获取待访问应用程序的入口。
步骤403,通过待访问子应用程序的入口,获取待访问子应用程序对应的所有前端资源。
本公开中,可以通过待访问子应用程序的入口,获取待访问子应用程序的URL对应的所有前端资源。其中,前端资源可以包括js文件、css文件、字体文件、图片文件等。
步骤404,执行待访问子应用程序获取并缓存执行结果,并将待访问子应用程序的业务路由注册到主应用程序的主路由中,以渲染出待访问子应用程序的页面。
本公开中,在获取待访问子应用程序的前端资源后,可以执行待访问子应用程序获取并缓存执行结果,并将待访问子应用程序的业务路由注册到主应用程序的主路由中,以整合主应用程序的路由和待访问子应用程序的业务路由,从而可以根据整合路由和执行结果,渲染出待访问子应用程序的页面。
由于各子应用程序使用的视图框架存在差异性,本公开中,承接子应用程序的基座具有高度的框架兼容性,可以同时兼容不同视图框架的子应用程序。进一步地,在加载目标子应用程序后,可以先进行应用框架分析,将当前加载的目标子应用程序的业务路由对应的业务组件放入内存组件中,并将内存组件挂载入业务插槽,并在加载下一个目标子应用程序时,将业务插槽中的业务组件删除,完成资源释放,提高了资源利用率。
本公开实施例中,还可以获取前端应用程序的资源请求,并根据资源请求中的待访问子应用程序的标识,及子应用程序与URL前缀之间的第三映射关系,获取待访问子应用程序的入口,并基于待访问子应用程序的入口,获取待访问子应用程序的所有前端资源,执行待访问子应用程序获取并缓存执行结果,并将待访问子应用程序的业务路由注册到主应用程序的主路由中,以渲染出待访问子应用程序的页面。由此,可以对前端应用程序的资源请求进行处理,加载和激活待访问子应用程序,将子应用程序的业务路由注入到主应用程序的主路由中,提供相应的业务能力。
为了便于理解上述实施例,下面结合图5进行说明,图5为本公开实施例提供的一种前端应用程序生成及使用过程示意图。
如图5所示,可以构建多个子应用程序,其中,子应用程序可以依赖共同依赖库,并将构建的多个子应用程序进行推送,以对子应用程序进行注册,并对子应用程序的资源包进行托管,比如对于活跃的子应用程序,可以将其资源包存储在本地,对于非活跃的子应用程序,其资源包可以推送到CDN服务器。之后,可以根据不同主应用程序对应的业务配置信息,也即对业务的依赖关系,对注册的子应用程序进行集成,得到多个前端应用程序(图5中示图出了4个前端应用程序)。
当用户访问前端应用程序时,可以对应用流量进行承接,从托管的资源中拉取所需资源,并将子应用程序的业务路由注册到主应用程序的主路由中,以提供相应的业务能力。
为了实现上述实施例,本公开实施例还提出一种前端应用程序的生成装置。图6为本公开一实施例提供的前端应用程序的生成装置的结构示意图。
如图6所示,该前端应用程序的生成装置600包括:
主应用程序集成模块610,用于获取应用程序集成请求,其中,所述应用程序集成请求中包括主应用程序的标识;
目标子应用程序确定模块620,用于根据所述主应用程序的标识对应的业务配置信息,确定所述主应用程序对应的目标子应用程序;
目标子应用程序集成模块630,用于对所述目标子应用程序进行集成,以生成所述主应用程序对应的前端应用程序。
在本公开实施例一种可能的实现方式中,所述目标子应用程序集成模块630,用于:
获取共同依赖库的标识与统一资源定位符URL之间的第一映射关系,其中,所述共同依赖库是指所述主应用程序提供的供多个子应用程序共用的依赖库;
将所述第一映射关系写入所述目标子应用程序中,以替换所述目标子应用程序中依赖库的标识与URL之间的第二映射关系。
在本公开实施例一种可能的实现方式中,所述目标子应用程序确定模块620,用于:
根据所述业务配置信息中包含的子应用程序标识,从多个子应用程序中确定出与所述子应用程序标识对应的子应用程序;
将与所述子应用程序标识对应的子应用程序,确定为所述目标子应用程序。
在本公开实施例一种可能的实现方式中,所述目标子应用程序确定模块620,用于:
根据所述业务配置信息中的业务配置项,从多个子应用程序中确定出与所述业务配置项匹配的子应用程序;
将与所述业务配置项匹配的子应用程序,确定为所述目标子应用程序。
在本公开实施例一种可能的实现方式中,该装置还可以包括:
构建请求获取模块,用于获取子应用程序构建请求,其中,所述子应用程序构建请求中包括子应用程序代码;
视图框架确定模块,用于确定所述子应用程序代码对应的视图框架;
编译打包模块,用于根据所述视图框架对应的编译打包规则,对所述子应用程序代码进行编译打包处理,以生成子应用程序对应的资源包及所述子应用程序对应的业务路由。
在本公开实施例一种可能的实现方式中,所述编译打包模块,还用于在所述资源包中包括多个分包文件的情况下,为所述多个分包文件部署路径。
在本公开实施例一种可能的实现方式中,所述编译打包模块,用于:
获取所述主应用程序提供的共同依赖库的信息;
将所述共同依赖库从所述子应用程序代码抽离,并对抽离后的子应用程序代码进行编译打包处理,生成所述资源包。
本公开中,构建请求获取模块、视图框架确定模块和编译打包模块,可以为子应用构建提供构建插件、模板框架、产出推送能力等。其中,构建插件可以为打包工具动态注入配置和外部化依赖的标准库,为子应用程序的分包文件提供动态部署路径能力等。模板框架,可以为使用不同视图框架的子应用程序提供应用运行主逻辑、生成不同子应用程序的业务路由,并提供子应用程序之间的通信,依赖异步加载等功能。产出推送能力可以将最终得到的子程序应用程序的资源包推送到负责子应用程序注册的模块进行注册。
通信内容可以是library、前端组件、静态资源(图片、字体文件等)。
在本公开实施例一种可能的实现方式中,该装置还可以包括:子应用程序注册模块,用于根据所述资源包中的指定版本信息,对所述子应用程序进行注册。
在本公开实施例一种可能的实现方式中,所述子应用程序注册模块,还用于:
在所述子应用程序的类型为活跃类型的情况下,将所述资源包存储在本地;
在所述子应用程序的类型为非活跃类型的情况下,将所述资源包推送至内容分发网络CDN服务器。
本公开中,主应用程序集成模块610、目标子应用程序确定模块620和目标子应用程序集成模块630,主要负责生成前端应用程序,并为前端应用程序提供运行环境。前端应用程序由业务配置项、主题、UI框架、基础组件等组成。其中,通过业务配置项可以从子应用程序注册模块动态拉取各子应用程序的资源包,若子应用程序的类型为活跃类型,则可以从子应用注册服务模块拉取到容器中由容器自身服务托管。前端应用程序在运行时可以提供主题、UI框架和基础组件,为避免多个子应用程序在拥有共同依赖库时导致重复打包增大体积,主应用程序可以提供共用的依赖,并通过重写依赖库的标识与URL间映射的方式动态注入到所有的子应用程序中。
在本公开实施例一种可能的实现方式中,该装置还可以包括:
资源请求获取模块,用于获取所述前端应用程序对应的资源请求,其中,所述资源请求中包括待访问子应用程序的标识;
待访问子应用程序入口获取模块,用于根据所述待访问子应用程序的标识,及所述主应用程序中目标子应用程序与URL前缀之间的第三映射关系,获取所述待访问子应用程序的入口;
前端资源获取模块,用于通过所述待访问子应用程序的入口,获取所述待访问子应用程序对应的所有前端资源;
待访问子应用程序执行模块,用于执行所述待访问子应用程序获取并缓存执行结果,并将所述待访问子应用程序的业务路由注册到所述主应用程序的主路由中,以渲染出待访问子应用程序的页面。
在本公开实施例一种可能的实现方式中,该装置还可以包括:
内存组件挂载模块,用于将当前加载的目标子应用程序的业务路由对应的业务组件放入内存组件中,并将所述内存组件挂载入业务插槽;
业务组件删除模块,用于在加载下一个目标子应用程序时,将所述业务插槽中的所述业务组件删除。
在本公开实施例一种可能的实现方式中,所述前端资源获取模块,用于:
根据所述待访问子应用程序中共同依赖库的标识与统一资源定位符URL之间的第一映射关系,确定所述待访问子应用程序使用的共同依赖库对应的目标URL;
从所述目标URL获取对应的资源。
为了便于理解本申请实施例的前端应用程序的流量承接功能,下面结合图7进行说明,图7为本公开实施例提供的一种应用流量承接的示意图。
如图7所示,应用流量承接可以包括路由中间件、通用模块加载器和框架兼容性基座等三部分。前端通用流量代理可以将流量入口过来的流量传给路由中间件,主应用程序提供了主路由,路由在跳转时由路由中间件进行路径分析、鉴权、流量分发,通过主应用程序中配置的目标子应用程序与URL前缀之间的第三映射关系,获取目标子应用程序入口。
子应用程序的相关资源可以包括js文件、css文件、字体文件、图片文件等,通用模块加载器可以通过目标子应用程序入口,动态拉取目标子应用程序的路由对应的所有前端资源,并对前端资源进行托管,执行子应用程序获取并缓存结果,将子应用程序的业务路由注册到主路由中,提供相关的业务能力。
由于各子应用程序使用的视图框架存在差异性,因此框架兼容性基座具有高度的框架兼容性,可以同时兼容不同的视图框架。框架兼容性基座可以在加载子应用程序后先进行应用框架分析,将业务路由对应的业务组件包裹在内存组件中,并将内存组件挂载入业务插槽,在加载下一个目标子应用程序时,将业务插槽中的业务组件删除,完成资源释放。
需要说明的是,前述前端应用程序的生成方法实施例的解释说明,也适用于该实施例的前端应用程序的生成装置,故在此不再赘述。
本公开实施例中,通过获取应用程序集成请求,其中,应用程序集成请求中包括主应用程序的标识;根据主应用程序的标识对应的业务配置信息,确定主应用程序对应的目标子应用程序;对目标子应用程序进行集成,以生成主应用程序对应的前端应用程序。由此,可以根据用户选择的主应用程序生成相应的前端应用,提高了前端应用的生成效率,也可以满足用户对前端应用程序的多样化需求,并且可以根据不同主应用程序对应的业务配置信息,对对应的目标子应用程序进行集成,生成相应的前端应用程序,从而多个前端应用程序可以共享业务,提高了资源利用率。
基于上述实施例可知,本公开实施例提供了子应用程序的构建、注册、集成和应用流量承接等一系列完整的方案。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图8示出了可以用来实施本公开的实施例的示例电子设备800的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图8所示,设备800包括计算单元801,其可以根据存储在ROM(Read-OnlyMemory,只读存储器)802中的计算机程序或者从存储单元808加载到RAM(Random AccessMemory,随机访问/存取存储器)803中的计算机程序,来执行各种适当的动作和处理。在RAM803中,还可存储设备800操作所需的各种程序和数据。计算单元801、ROM 802以及RAM 803通过总线804彼此相连。I/O(Input/Output,输入/输出)接口805也连接至总线804。
设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于CPU(Central Processing Unit,中央处理单元)、GPU(Graphic Processing Units,图形处理单元)、各种专用的AI(Artificial Intelligence,人工智能)计算芯片、各种运行机器学习模型算法的计算单元、DSP(Digital SignalProcessor,数字信号处理器)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理,例如前端应用程序的生成。例如,在一些实施例中,前端应用程序的生成可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序加载到RAM 803并由计算单元801执行时,可以执行上文描述的前端应用程序的生成的一个或多个步骤。备选地,在其他实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行前端应用程序的生成。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、FPGA(Field Programmable Gate Array,现场可编程门阵列)、ASIC(Application-Specific Integrated Circuit,专用集成电路)、ASSP(Application Specific StandardProduct,专用标准产品)、SOC(System On Chip,芯片上系统的系统)、CPLD(ComplexProgrammable Logic Device,复杂可编程逻辑设备)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、RAM、ROM、EPROM(Electrically Programmable Read-Only-Memory,可擦除可编程只读存储器)或快闪存储器、光纤、CD-ROM(Compact Disc Read-Only Memory,便捷式紧凑盘只读存储器)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(Cathode-Ray Tube,阴极射线管)或者LCD(Liquid Crystal Display,液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:LAN(LocalArea Network,局域网)、WAN(Wide Area Network,广域网)、互联网和区块链网络。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务(VirtualPrivate Server,虚拟专用服务器)中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
根据本公开的实施例,本公开还提供了一种计算机程序产品,当计算机程序产品中的指令处理器执行时,执行本公开上述实施例提出的前端应用程序的生成。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (27)
1.一种前端应用程序的生成方法,包括:
获取应用程序集成请求,其中,所述应用程序集成请求中包括主应用程序的标识;
根据所述主应用程序的标识对应的业务配置信息,确定所述主应用程序对应的目标子应用程序;
对所述目标子应用程序进行集成,以生成所述主应用程序对应的前端应用程序。
2.如权利要求1所述的方法,其中,所述对所述目标子应用程序进行集成,包括:
获取共同依赖库的标识与统一资源定位符URL之间的第一映射关系,其中,所述共同依赖库是指所述主应用程序提供的供多个子应用程序共用的依赖库;
将所述第一映射关系写入所述目标子应用程序中,以替换所述目标子应用程序中依赖库的标识与URL之间的第二映射关系。
3.如权利要求2所述的方法,还包括:
在所述目标子应用程序运行时,根据所述第一映射关系,确定所述目标子应用程序使用的共同依赖库对应的目标URL;
从所述目标URL获取对应的资源。
4.如权利要求1所述的方法,其中,所述根据所述主应用程序的标识对应的业务配置信息,确定所述主应用程序对应的目标子应用程序,包括:
根据所述业务配置信息中包含的子应用程序标识,从多个子应用程序中确定出与所述子应用程序标识对应的子应用程序;
将与所述子应用程序标识对应的子应用程序,确定为所述目标子应用程序。
5.如权利要求1所述的方法,其中,所述根据所述主应用程序的标识对应的业务配置信息,确定所述主应用程序对应的目标子应用程序,包括:
根据所述业务配置信息中的业务配置项,从多个子应用程序中确定出与所述业务配置项匹配的子应用程序;
将与所述业务配置项匹配的子应用程序,确定为所述目标子应用程序。
6.如权利要求1所述的方法,还包括:
获取子应用程序构建请求,其中,所述子应用程序构建请求中包括子应用程序代码;
确定所述子应用程序代码对应的视图框架;
根据所述视图框架对应的编译打包规则,对所述子应用程序代码进行编译打包处理,以生成子应用程序对应的资源包及所述子应用程序对应的业务路由。
7.如权利要求6所述的方法,还包括:
在所述资源包中包括多个分包文件的情况下,为所述多个分包文件部署路径。
8.如权利要求6所述的方法,其中,对所述子应用程序代码进行编译打包处理,以生成子应用程序对应的资源包,包括:
获取所述主应用程序提供的共同依赖库的信息;
将所述共同依赖库从所述子应用程序代码抽离,并对抽离后的子应用程序代码进行编译打包处理,生成所述资源包。
9.如权利要求6-8任一项所述的方法,其中,在所述对所述子应用程序代码进行编译打包处理,以生成子应用程序对应的资源包之后,还包括:
根据所述资源包中的指定版本信息,对所述子应用程序进行注册。
10.如权利要求9所述的方法,其中,在所述根据所述资源包中的指定版本信息,对所述子应用程序进行注册之后,还包括:
在所述子应用程序的类型为活跃类型的情况下,将所述资源包存储在本地;
在所述子应用程序的类型为非活跃类型的情况下,将所述资源包推送至内容分发网络CDN服务器。
11.如权利要求1所述的方法,其中,在所述对所述目标子应用程序进行集成,以生成所述主应用程序对应的前端应用程序之后,还包括:
获取所述前端应用程序对应的资源请求,其中,所述资源请求中包括待访问子应用程序的标识;
根据所述待访问子应用程序的标识,及所述主应用程序中目标子应用程序与URL前缀之间的第三映射关系,获取所述待访问子应用程序的入口;
通过所述待访问子应用程序的入口,获取所述待访问子应用程序对应的所有前端资源;
执行所述待访问子应用程序,获取并缓存执行结果,并将所述待访问子应用程序的业务路由注册到所述主应用程序的主路由中,以渲染出待访问子应用程序的页面。
12.如权利要求11所述的方法,还包括:
将当前加载的目标子应用程序的业务路由对应的业务组件放入内存组件中,并将所述内存组件挂载入业务插槽;
在加载下一个目标子应用程序时,将所述业务插槽中的所述业务组件删除。
13.一种前端应用程序的生成装置,包括:
主应用程序集成模块,用于获取应用程序集成请求,其中,所述应用程序集成请求中包括主应用程序的标识;
目标子应用程序确定模块,用于根据所述主应用程序的标识对应的业务配置信息,确定所述主应用程序对应的目标子应用程序;
目标子应用程序集成模块,用于对所述目标子应用程序进行集成,以生成所述主应用程序对应的前端应用程序。
14.如权利要求13所述的装置,其中,所述目标子应用程序集成模块,用于:
获取共同依赖库的标识与统一资源定位符URL之间的第一映射关系,其中,所述共同依赖库是指所述主应用程序提供的供多个子应用程序共用的依赖库;
将所述第一映射关系写入所述目标子应用程序中,以替换所述目标子应用程序中依赖库的标识与URL之间的第二映射关系。
15.如权利要求13所述的装置,其中,所述目标子应用程序确定模块,用于:
根据所述业务配置信息中包含的子应用程序标识,从多个子应用程序中确定出与所述子应用程序标识对应的子应用程序;
将与所述子应用程序标识对应的子应用程序,确定为所述目标子应用程序。
16.如权利要求13所述的装置,其中,所述目标子应用程序确定模块,用于:
根据所述业务配置信息中的业务配置项,从多个子应用程序中确定出与所述业务配置项匹配的子应用程序;
将与所述业务配置项匹配的子应用程序,确定为所述目标子应用程序。
17.如权利要求13所述的装置,还包括:
构建请求获取模块,用于获取子应用程序构建请求,其中,所述子应用程序构建请求中包括子应用程序代码;
视图框架确定模块,用于确定所述子应用程序代码对应的视图框架;
编译打包模块,用于根据所述视图框架对应的编译打包规则,对所述子应用程序代码进行编译打包处理,以生成子应用程序对应的资源包及所述子应用程序对应的业务路由。
18.如权利要求17所述的装置,其中,所述编译打包模块,还用于:
在所述资源包中包括多个分包文件的情况下,为所述多个分包文件部署路径。
19.如权利要求17所述的装置,其中,所述编译打包模块,用于:
获取所述主应用程序提供的共同依赖库的信息;
将所述共同依赖库从所述子应用程序代码抽离,并对抽离后的子应用程序代码进行编译打包处理,生成所述资源包。
20.如权利要求17-19任一项所述的装置,还包括:子应用程序注册模块,用于:
根据所述资源包中的指定版本信息,对所述子应用程序进行注册。
21.如权利要求20所述的装置,其中,所述子应用程序注册模块,还用于:
在所述子应用程序的类型为活跃类型的情况下,将所述资源包存储在本地;
在所述子应用程序的类型为非活跃类型的情况下,将所述资源包推送至内容分发网络CDN服务器。
22.如权利要求13所述的装置,还包括:
资源请求获取模块,用于获取所述前端应用程序对应的资源请求,其中,所述资源请求中包括待访问子应用程序的标识;
待访问子应用程序入口获取模块,用于根据所述待访问子应用程序的标识,及所述主应用程序中目标子应用程序与URL前缀之间的第三映射关系,获取所述待访问子应用程序的入口;
前端资源获取模块,用于通过所述待访问子应用程序的入口,获取所述待访问子应用程序对应的所有前端资源;
待访问子应用程序执行模块,用于执行所述待访问子应用程序获取并缓存执行结果,并将所述待访问子应用程序的业务路由注册到所述主应用程序的主路由中,以渲染出待访问子应用程序的页面。
23.如权利要求22所述的装置,还包括:
内存组件挂载模块,用于将当前加载的目标子应用程序的业务路由对应的业务组件放入内存组件中,并将所述内存组件挂载入业务插槽;
业务组件删除模块,用于在加载下一个目标子应用程序时,将所述业务插槽中的所述业务组件删除。
24.如权利要求22所述的装置,其中,所述前端资源获取模块,用于:
根据所述待访问子应用程序中共同依赖库的标识与统一资源定位符URL之间的第一映射关系,确定所述待访问子应用程序使用的共同依赖库对应的目标URL;
从所述目标URL获取对应的资源。
25.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-12中任一项所述的方法。
26.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-12中任一项所述的方法。
27.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现权利要求1-12中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211442071.8A CN115857891A (zh) | 2022-11-17 | 2022-11-17 | 前端应用程序的生成方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211442071.8A CN115857891A (zh) | 2022-11-17 | 2022-11-17 | 前端应用程序的生成方法、装置、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115857891A true CN115857891A (zh) | 2023-03-28 |
Family
ID=85663958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211442071.8A Pending CN115857891A (zh) | 2022-11-17 | 2022-11-17 | 前端应用程序的生成方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115857891A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111737032A (zh) * | 2020-07-27 | 2020-10-02 | 腾讯科技(深圳)有限公司 | 一种基于微内核系统的子程序运行方法、装置和电子设备 |
CN113254050A (zh) * | 2021-06-23 | 2021-08-13 | 中国平安人寿保险股份有限公司 | 一种微前端系统 |
CN114780080A (zh) * | 2022-04-27 | 2022-07-22 | 中国银行股份有限公司 | 一种微前端集成方法、装置及监控方法 |
-
2022
- 2022-11-17 CN CN202211442071.8A patent/CN115857891A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111737032A (zh) * | 2020-07-27 | 2020-10-02 | 腾讯科技(深圳)有限公司 | 一种基于微内核系统的子程序运行方法、装置和电子设备 |
CN113254050A (zh) * | 2021-06-23 | 2021-08-13 | 中国平安人寿保险股份有限公司 | 一种微前端系统 |
CN114780080A (zh) * | 2022-04-27 | 2022-07-22 | 中国银行股份有限公司 | 一种微前端集成方法、装置及监控方法 |
Non-Patent Citations (3)
Title |
---|
PETER谭金杰: "深度:从零编写一个微前端框架", HTTPS://CLOUD.TENCENT.COM/DEVELOPER/ARTICLE/1629805, pages 1 - 9 * |
树酱: "微前端模块共享你真的懂了吗", HTTPS://JUEJIN.CN/POST/6984682096291741704, pages 1 - 6 * |
沉末_: "qiankun 微前端方案实践及总结", HTTPS://JUEJIN.CN/POST/6844904185910018062, pages 1 - 12 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111740948B (zh) | 数据包发布方法、动态更新方法、装置、设备及介质 | |
CN107885540A (zh) | 一种加载应用程序静态资源的方法、装置及终端 | |
CN110895471A (zh) | 安装包生成方法、装置、介质及电子设备 | |
CN108647032B (zh) | 应用加载方法及装置、计算机装置和计算机可读存储介质 | |
CN113010827B (zh) | 页面渲染方法、装置、电子设备以及存储介质 | |
CN107526623B (zh) | 一种数据处理方法及装置 | |
CN113656124B (zh) | 登录页面的生成方法及其装置 | |
CN111694613B (zh) | 应用程序模块间的解耦方法、电子装置及存储介质 | |
CN112486490B (zh) | 前端代码打包方法、装置、电子设备及存储介质 | |
CN112416458A (zh) | 基于ReactNative的预加载方法、装置、计算机设备及存储介质 | |
CN108804100B (zh) | 创建界面元素的方法、装置、存储介质及移动终端 | |
CN113536185A (zh) | 应用页面的加载方法、存储介质、及其相关设备 | |
CN110851211A (zh) | 用于显示应用信息的方法、装置、电子设备和介质 | |
CN108845864B (zh) | 一种基于spring框架的JVM垃圾回收方法和装置 | |
CN112835568A (zh) | 一种项目构建方法和装置 | |
CN114443076A (zh) | 镜像构建方法、装置、设备及存储介质 | |
CN115543440A (zh) | 安卓项目迁移到类安卓系统的方法、电子设备和存储介质 | |
CN114398023A (zh) | 生成文件的方法、配置页面的方法和装置 | |
CN111488286B (zh) | 一种Android模块独立开发的方法及装置 | |
CN113407165A (zh) | Sdk的生成和自升级方法、装置、可读介质和设备 | |
CN112926008A (zh) | 生成表单页面的方法、装置、电子设备和存储介质 | |
CN113761871A (zh) | 富文本渲染方法、装置、电子设备以及存储介质 | |
CN111158777A (zh) | 组件调用方法、装置及计算机可读存储介质 | |
CN115857891A (zh) | 前端应用程序的生成方法、装置、电子设备和存储介质 | |
CN112379885B (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 |