单域名多子项目的路由方法及装置、存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种单域名多子项目的路由方法及装置、存储介质。
背景技术
在基于SPA应用的单域名多子项目中,路由通常通过hash模式或history模式。假设子项目为subjectN,前端本地路由地址pathLocal/to/page,前端入口地址载入之后,对应的url为:hash路由模式:http://example.com/subjectN#/pathLocal/to/page。history路由模式:http://example.com/subjectN/pathLocal/to/page。其中hash模式可读性差,对搜索引擎不友好,且#容易被误编码引起路由bug。而history模式可读性好,对搜索引擎也友好,且history模式是标准HTML5路由模式。在基于history路由模式的子项目中,子项目的服务器目录深度和名字具有不确定性,如URL例子:http://example.com/path/to/.../subjectN/pathLocal/to/.../page(省略号代表可能的0到多级目录深度)。在这个例子中path/to/.../subjectN是服务器路由路径,而pathLocal/to/.../page是前端路由路径,两个路径都是不确定的,这种场景下,web服务器无法写出通用配置来满足history路由模式需求,只能每次添加子项目来更新服务器配置,造成服务中断,开发不灵活。
发明内容
本发明实施例提供一种单域名多子项目的路由方法及装置、存储介质,可以实现单域名多子SPA应用的history路由,使web服务器做通用配置时,无须随着子项目的增多而改变web服务器配置,增加灵活性和稳定性。
本发明实施例第一方面提供了一种单域名多子项目的路由方法,可包括:
当检测到一域名请求时,将域名请求反向代理至服务层;
在服务层递归查找域名请求的子项目,确定所有路径的路由入口文件;
将入口文件返回至客户端。
进一步的,上述方法还包括:
在任一子项目根目录下定义一配置文件。
进一步的,上述配置文件中保存子项目的服务器路由。
进一步的,上述在服务层查找域名请求的子项目,确定所有路径的路由入口文件,包括:
基于网站根目录递归查找域名请求的服务器路由在各层子目录下是否有对应的配置文件;
当查找到配置文件,且配置文件的服务器路由与当前的查找路径一致时,确定当前子目录为一子项目的根目录;
将所有包含服务器路由路径的完整服务器路由均路由到根目录下的单一入口;
确定指示单一入口的文件为入口文件。
进一步的,上述根目录为服务器路由路径。
本发明实施例第二方面提供了一种单域名多子项目的路由装置,可包括:
请求方向处理模块,用于当检测到一域名请求时,将域名请求反向代理至服务层;
入口文件确定模块,用于在服务层递归查找域名请求的子项目,确定所有路径的路由入口文件;
入口文件输出模块,用于将入口文件返回至客户端。
进一步的,上述装置还包括:
配置定义模块,用于在任一子项目根目录下定义一配置文件。
进一步的,上述配置文件中保存子项目的服务器路由。
进一步的,上述入口文件确定模块包括:
配置文件查找单元,用于基于网站根目录递归查找域名请求的服务器路由在各层子目录下是否有对应的配置文件;
根目录确定单元,用于当查找到配置文件,且配置文件的服务器路由与当前的查找路径一致时,确定当前子目录为一子项目的根目录;
路由入口单元,用于将所有包含服务器路由路径的完整服务器路由均路由到根目录下的单一入口;
文件确定单元,用于确定指示单一入口的文件为入口文件。
进一步的,上述根目录为服务器路由路径。
本发明实施例第三方面提供了一种计算机存储介质,计算机存储介质存储有多条指令,指令适于由处理器加载并执行以下步骤:
当检测到一域名请求时,将域名请求反向代理至服务层;
在服务层递归查找域名请求的子项目,确定所有路径的路由入口文件;
将入口文件返回至客户端。
在本发明实施例中,当检测到一域名请求时,将域名请求反向代理至服务层;在服务层递归查找域名请求的子项目,确定所有路径的路由入口文件;将入口文件返回至客户端。实现了单域名多子SPA应用的history路由,使web服务器做通用配置时,无须随着子项目的增多而改变web服务器配置,增加了服务器通用配置的灵活性和稳定性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种单域名多子项目的路由方法的流程示意图;
图2是本发明实施例提供的一种单域名多子项目的路由装置的结构示意图;
图3是本发明实施例提供的入口文件确定模块的结构示意图;
图4是本发明实施例提供的另一种单域名多子项目的路由装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含,术语“第一”、“第二”和“第三”仅是为了区别命名,并不代表数字的大小或者排序。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
本发明实施例涉及的单域名多子项目的路由装置可以是具备数据分析处理能力的web服务器。
如图1所示,单域名多子项目的路由方法至少可以包括以下几个步骤:
S101,当检测到一域名请求时,将域名请求反向代理至服务层。
需要说明的是,上述装置在任一子项目根目录下均定义了一配置文件如config.json,该配置文件中保存当前子项目的完整服务器路径:path/to/.../subjectN。
具体的,当web服务器接受到任意当前example.com域名的请求时,可以将该请求方向代理至gateway服务层,可以理解的是,gateway为nodejs的中间层。
S102,在服务层递归查找域名请求的子项目,确定所有路径的路由入口文件。
具体的,web服务器可以在服务层递归查找域名请求的子项目,确定所有路径的路由入口文件,例如,通过网站根目录递归查找服务器路由路径path/to/.../subjectN,在每一层子目录下查找当前目录是否有config.json配置文件;进一步的,可以检查配置文件的服务器路径是否和当前的查找路径一致,如果一致,则证明当前子目录是一个子项目的根目录,此根目录即为服务器路由路径,上述装置可以将所有包含此路径的完整服务器url路由都路由到此目录下的单一入口(如index.html)中来。其中,web服务器可以确定指示单一入口的文件为入口文件。
例如:http://example.com/path/to/.../subjectN/pathLocal/to/.../page会统一路由到服务器入口文件/path/to/webserverRoot/path/to/.../subjectN/index.html中去。
S103,将入口文件返回至客户端。
具体的,装置可以将查找到的入口文件index.html返回给web服务器,进而返回给客户端。而客户端会将上述pathLocal/to/.../page作为本地路由,实现完整的业务逻辑。
需要说明的是,通过在一个完整包含服务器路由和前端路由的path中,能拆分出服务器路由和本地路由,从而实现了单域名多子SPA应用的history路由实现。
在本发明实施例中,当检测到一域名请求时,将域名请求反向代理至服务层;在服务层递归查找域名请求的子项目,确定所有路径的路由入口文件;将入口文件返回至客户端。实现了单域名多子SPA应用的history路由,使web服务器做通用配置时,无须随着子项目的增多而改变web服务器配置,增加了服务器通用配置的灵活性和稳定性。
下面将结合附图2和附图3,对本发明实施例提供的单域名多子项目的路由装置进行详细介绍。需要说明的是,附图2和附图3所示的单域名多子项目的路由装置,用于执行本发明图1所示实施例的方法,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明图1所示的实施例。
请参见图2,为本发明实施例提供了一种单域名多子项目的路由装置的结构示意图。如图2所示,本发明实施例的单域名多子项目的路由装置10可以包括:请求方向处理模块101、入口文件确定模块102、入口文件输出模块103和配置定义模块104。其中,入口文件确定模块102如图3所示,可以包括配置文件查找单元1021、根目录确定单元1022、路由入口单元1023和文件确定单元1024。
请求方向处理模块101,用于当检测到一域名请求时,将域名请求反向代理至服务层。
需要说明的是,配置定义模块104在任一子项目根目录下均定义了一配置文件如config.json,该配置文件中保存当前子项目的完整服务器路径:path/to/.../subjectN。
具体实现中,当web服务器接受到任意当前example.com域名的请求时,请求方向处理模块101可以将该请求方向代理至gateway服务层,可以理解的是,gateway为nodejs的中间层。
入口文件确定模块102,用于在服务层递归查找域名请求的子项目,确定所有路径的路由入口文件。
具体实现中,入口文件确定模块102可以在服务层递归查找域名请求的子项目,确定所有路径的路由入口文件,例如,配置文件查找单元1021可以通过网站根目录递归查找服务器路由路径path/to/.../subjectN,在每一层子目录下查找当前目录是否有config.json配置文件;进一步的,根目录确定单元1022可以检查配置文件的服务器路径是否和当前的查找路径一致,如果一致,则证明当前子目录是一个子项目的根目录,此根目录即为服务器路由路径,路由入口单元1023可以将所有包含此路径的完整服务器url路由都路由到此目录下的单一入口(如index.html)中来。其中,文件确定单元1024可以确定指示单一入口的文件为入口文件。
例如:http://example.com/path/to/.../subjectN/pathLocal/to/.../page会统一路由到服务器入口文件/path/to/webserverRoot/path/to/.../subjectN/index.html中去。
入口文件输出模块103,用于将入口文件返回至客户端。
具体实现中,入口文件输出模块103可以将查找到的入口文件index.html返回给web服务器,进而返回给客户端。而客户端会将上述pathLocal/to/.../page作为本地路由,实现完整的业务逻辑。
需要说明的是,通过在一个完整包含服务器路由和前端路由的path中,能拆分出服务器路由和本地路由,从而实现了单域名多子SPA应用的history路由实现。
在本发明实施例中,当检测到一域名请求时,将域名请求反向代理至服务层;在服务层递归查找域名请求的子项目,确定所有路径的路由入口文件;将入口文件返回至客户端。实现了单域名多子SPA应用的history路由,使web服务器做通用配置时,无须随着子项目的增多而改变web服务器配置,增加了服务器通用配置的灵活性和稳定性。
本发明实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行如上述图1所示实施例的方法步骤,具体执行过程可以参见图1所示实施例的具体说明,在此不进行赘述。
本申请实施例还提供了另外一种单域名多子项目的路由装置。如图4所示,单域名多子项目的路由装置20可以包括:至少一个处理器201,例如CPU,至少一个网络接口204,用户接口203,存储器205,至少一个通信总线202,可选地,还可以包括显示屏206。其中,通信总线202用于实现这些组件之间的连接通信。其中,用户接口203可以包括触摸屏、键盘或鼠标等等。网络接口204可选的可以包括标准的有线接口、无线接口(如WI-FI接口),通过网络接口204可以与服务器建立通信连接。存储器205可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器,存储器205包括本发明实施例中的flash。存储器205可选的还可以是至少一个位于远离前述处理器201的存储装置。如图4所示,作为一种计算机存储介质的存储器205中可以包括操作装置、网络通信模块、用户接口模块以及程序指令。
需要说明的是,网络接口204可以连接接收器、发射器或其他通信模块,其他通信模块可以包括但不限于WiFi模块、蓝牙模块等,可以理解,本发明实施例中单域名多子项目的路由装置也可以包括接收器、发射器和其他通信模块等。
处理器201可以用于调用存储器205中存储的程序指令,并使单域名多子项目的路由装置20执行以下操作:
当检测到一域名请求时,将域名请求反向代理至服务层;
在服务层递归查找域名请求的子项目,确定所有路径的路由入口文件;
将入口文件返回至客户端。
在一些实施例中,装置20还用于在任一子项目根目录下定义一配置文件。
在一些实施例中,配置文件中保存子项目的服务器路由。
在一些实施例中,装置20在服务层查找域名请求的子项目,确定所有路径的路由入口文件时,具体用于:
基于网站根目录递归查找域名请求的服务器路由在各层子目录下是否有对应的配置文件;
当查找到配置文件,且配置文件的服务器路由与当前的查找路径一致时,确定当前子目录为一子项目的根目录;
将所有包含服务器路由路径的完整服务器路由均路由到根目录下的单一入口;
确定指示单一入口的文件为入口文件。
在一些实施例中,根目录为服务器路由路径。
在本发明实施例中,当检测到一域名请求时,将域名请求反向代理至服务层;在服务层递归查找域名请求的子项目,确定所有路径的路由入口文件;将入口文件返回至客户端。实现了单域名多子SPA应用的history路由,使web服务器做通用配置时,无须随着子项目的增多而改变web服务器配置,增加了服务器通用配置的灵活性和稳定性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。