本发明涉及软件开发技术,尤指一种子系统管理方法和系统。
背景技术:
很多大型企业都是由很多内部和外部的管理系统来支撑。由于这些系统之间存在大量的连通和交互诉求,每个子系统都是相对独立的,拥有独立的域名、独立的ui设计、独立的技术栈。这样会带来开发团队之间职责划分不清、用户体验效果差等问题。
现有常见解决方案是采取iframe的方式做一个门户页面,把各个子系统的入口做链接归拢至该门户页面。此种实现方式存在如下问题:
1、子项目需要改造,需要提供一组不带导航的功能;
2、iframe嵌入的显示区大小不容易控制,存在一定局限性;
3、iframeurl的记录完全无效,页面刷新不能够被记忆,刷新会返回首页;
4、iframe功能之间的跳转是无效的;
5、iframe的样式显示、兼容性等都具有局限性。
由于iframe方案的上述局限性,导致门户页面导航方式效率低下,且容易发生错误,无法正确访问子系统。
技术实现要素:
为了解决上述技术问题,本发明提供了一种子系统管理方法和系统。通过以子项目注册的方式管理应用,实现了类单页架构的应用子系统管理方式,解决了iframe子系统管理架构性能局限性导致访问子系统异常的问题。
为了达到本发明目的,本发明提供了一种子系统管理方法,包括:
将应用子系统注册为主项目下的子项目;
在发布机上对所述子项目进行构建;
将构建的结果上传到服务器,完成所述子项目的部署。
优选的,将应用子系统注册为主项目下的子项目的步骤包括:
将应用子系统作为子项目进行路由注册和项目作用域注册。
优选的,通过如下方式完成所述路由注册:
封装一个组件应用,根据权限菜单树和路由树生成整个页面。
优选的,通过如下方式完成所述项目作用域注册:
通过为所述子项目添加上命名空间namesapce标识的形式将所述项目作用域注册到入口项目的全局变量。
优选的,将构建的结果上传到服务器,完成所述子项目的部署的步骤包括:
将所述子项目的构建文件上传到服务器上与所述子项目对应的文件目录下。
优选的,将构建的结果上传到服务器,完成所述子项目的部署的步骤之后,还包括:
对所述服务器上存储的各子项目的静态资源文件进行集成合并,生成目录文件;
更新所述主项目的入口引用路径,重启前端服务。
优选的,该方法还包括:
接收用户访问请求;
根据所述用户访问请求,查询引用路径,返回所述用户访问请求对应的子项目的数据。
本发明还提供了一种子系统管理系统,包括:
项目注册模块,用于将应用子系统注册为主项目下的子项目;
构建模块,用于在发布机上对所述子项目进行构建;
部署模块,用于将构建的结果上传到服务器,完成所述子项目的部署。
优选的,所述项目注册模块包括:
路由注册单元,用于通过如下方式完成路由注册:
封装一个组件应用,根据权限菜单树和路由树生成整个页面;
作用域注册单元,用于通过如下方式完成项目作用域注册:
通过为所述子项目添加上命名空间namesapce标识的形式将所述项目作用域注册到入口项目的全局变量。
优选的,该系统还包括发布模块;
所述部署模块,具体用于将所述子项目的构建文件上传到服务器上与所述子项目对应的文件目录下;
所述发布模块,用于对所述服务器上存储的各子项目的静态资源文件进行集成合并,生成目录文件,更新所述主项目的入口引用路径,重启前端服务。
本发明提供了一种子系统管理方法和系统,将应用子系统注册为主项目下的子项目,在发布机上对所述子项目进行构建,将构建的结果上传到服务器,完成所述子项目的部署。实现了类单页架构的应用子系统管理方式,解决了iframe子系统管理架构性能局限性导致访问子系统异常的问题。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
图1为本发明的一实施例提供的一种子系统管理系统的架构示意图;
图2为本发明的一实施例中前端与后端服务交互的原理示意图;
图3为本发明的一实施例中子系统发布原理示意图;
图4为本发明的一实施例提供的一种完整的基于微前端的类单页子系统管理系统架构的具体示例示意图;
图5为本发明的一实施例提供的一种子系统管理方法的流程示意图;
图6为本发明的一实施例提供的又一种子系统管理系统的架构示意图;
图7为图6中项目注册模块601的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
现有常见解决方案是采取iframe的方式做一个门户页面,把各个子系统的入口做链接归拢至该门户页面。此种实现方式存在如下问题:
1、子项目需要改造,需要提供一组不带导航的功能;
2、iframe嵌入的显示区大小不容易控制,存在一定局限性;
3、iframeurl的记录完全无效,页面刷新不能够被记忆,刷新会返回首页;
4、iframe功能之间的跳转是无效的;
5、iframe的样式显示、兼容性等都具有局限性。
由于iframe方案的上述局限性,导致门户页面导航方式效率低下,且容易发生错误,无法正确访问子系统。
为了解决上述问题,本发明的实施例提供了一种子系统管理方法和系统。
本发明的一实施例提供了一种子系统管理系统,该系统为基于微前端的的类单页应用架构,一个前端服务对应多个后端。在该系统内,还提供了一套应用注册机制,完成应用的无缝整合。在构建时集成应用,对应用独立发布部署。
具体方案如下:
1)创建一个入口项目,用于整合各个应用。在实践中,把这个项目叫做“主项目”,业务应用子系统叫做“子项目”。
2)实现应用注册机制,保证业务应用子系统的路由子系统自己控制且子系统间的数据各自存在自己的作用域里不互相污染;
3)构建时集成应用和应用独立发布部署:把“子项目”的构建文件上传到服务器对应的“子项目”文件目录下,然后对“子项目”的资源文件进行集成合并,生成.dist目录中的文件,提供给用户线上访问使用
4)所述入口项目在开发阶段是一个容器,不包含任何业务,除了提供“子项目”注册、合并功能外,还可以提供一些系统级公共支持,包括:用户登录机制、菜单权限获取、全局异常处理,全局日志处理;
5)所述应用注册机制包括路由注册和项目作用域;路由注册由三部分组成:权限菜单树、导航和路由树,“portal项目”中封装一个组件app,根据菜单树和路由树生成整个页面;项目作用域通过为子项目添加上namesapce标识的形式注册到入口项目的全局变量。
6)在构建时集成应用和应用独立发布部署时,发布最新的静态资源文件,更新入口引用和重启前端服务。
一种基于微前端的类单页子系统管理系统的架构如图1所示。具体实施过程如下:
1)新建一个入口项目,该项目提供子项目注册、合并功能,同时提供用户登录功能、权限获取、统一异常处理和日志功能。
2)入口项目在线上运行了一个前端服务(nodeserver),这个server用于响应用户登录、鉴权、资源的请求。入口项目的数据请求并没有经过前端服务做直接传递,而是被nginx转发到后端server上,具体交互原理如图2所示。转发规则上限制数据请求格式必须是子项目名+api做前缀,这样保障了各个系统之间的请求可以完全隔离。
3)入口项目中封装一个组件root,根据菜单树和路由树生成整个页面。
4)将子项目的路由挂载到入口组件root,将子项目的命名空间注册到入口项目的全局变量下,子项目的对外输出是一个入口文件和一系列的资源文件。
5)子系统开发完成后,即可进行发布,发布原理如图3所示,首先在发布机上,获取代码、安装依赖、执行构建,然后把构建的结果传到服务器,最后执行服务启动,完成部署。
6)最终整个项目的部署需要首先发布最新的静态资源文件,接着更新入口引用,最后重启前端服务。
图4所示为一种完整的基于微前端的类单页子系统管理系统架构的举例,经过开发期、构建期、部署期、运行期,完成了对应用子系统的添加管理。
本发明的一实施例还提供了一种子系统管理方法,使用该方法完成对应用子系统管理的流程如图5所示,包括:
步骤501、将应用子系统注册为主项目下的子项目。
入口项目,用于整合各个应用。在实践中,把这个项目叫做“主项目”,业务应用子系统叫做“子项目”。入口项目在开发阶段是一个容器,不包含任何业务,除了提供“子项目”注册、合并功能外,还可以提供一些系统级公共支持,包括:用户登录机制、菜单权限获取、全局异常处理,全局日志处理。
本步骤中,将应用子系统作为子项目进行路由注册和项目作用域注册。
具体的,通过如下方式完成所述路由注册:
封装一个组件应用,根据权限菜单树和路由树生成整个页面。路由注册由三部分组成:权限菜单树、导航和路由树,“portal项目”中封装一个组件app,根据菜单树和路由树生成整个页面。
通过如下方式完成所述项目作用域注册:
通过为所述子项目添加上命名空间namesapce标识的形式将所述项目作用域注册到入口项目的全局变量。
通过应用子系统注册机制,保证子系统的路由子系统自己控制且子系统间的数据各自存在自己的作用域里不互相污染。
步骤502、在发布机上对所述子项目进行构建。
步骤503、将构建的结果上传到服务器,完成所述子项目的部署。
本步骤中,将所述子项目的构建文件上传到服务器上与所述子项目对应的文件目录下。
步骤504、对所述服务器上存储的各子项目的静态资源文件进行集成合并,生成目录文件。
步骤505、更新所述主项目的入口引用路径,重启前端服务。
构建时集成应用和应用独立发布部署:把“子项目”的构建文件上传到服务器对应的“子项目”文件目录下,然后对“子项目”的资源文件进行集成合并,生成.dist目录中的文件,提供给用户线上访问使用。
至此,基于微前端的类单页子系统管理系统就构建完毕了。通过前端,访系统能够接收用户访问请求,并根据所述用户访问请求,查询引用路径,返回所述用户访问请求对应的子项目的数据。
本发明的一实施例还提供了一种子系统管理系统,该系统的结构如图6所示,包括:
项目注册模块601,用于将应用子系统注册为主项目下的子项目;
构建模块602,用于在发布机上对所述子项目进行构建;
部署模块603,用于将构建的结果上传到服务器,完成所述子项目的部署。
优选的,所述项目注册模块601的结构如图7所示,包括:
路由注册单元6011,用于通过如下方式完成路由注册:
封装一个组件应用,根据权限菜单树和路由树生成整个页面;
作用域注册单元6012,用于通过如下方式完成项目作用域注册:
通过为所述子项目添加上命名空间namesapce标识的形式将所述项目作用域注册到入口项目的全局变量。
优选的,该系统还包括发布模块604;
所述部署模块603,具体用于将所述子项目的构建文件上传到服务器上与所述子项目对应的文件目录下;
所述发布模块604,用于对所述服务器上存储的各子项目的静态资源文件进行集成合并,生成目录文件,更新所述主项目的入口引用路径,重启前端服务。
本发明的实施例提供了一种子系统管理方法和系统,将应用子系统注册为主项目下的子项目,在发布机上对所述子项目进行构建,将构建的结果上传到服务器,完成所述子项目的部署。实现了类单页架构的应用子系统管理方式,解决了iframe子系统管理架构性能局限性导致访问子系统异常的问题。
通过构建类单页应用实现系统,提升用户体验,按需加载,交互流畅;项目微前端化,业务解耦,稳定性有保障项目的粒度易控制;项目的健壮性比较好,子项目注册仅仅增加了入口文件的大小,并没有过多加重资源消耗。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。