CN105656671B - JavaScript路由方法及其装置 - Google Patents

JavaScript路由方法及其装置 Download PDF

Info

Publication number
CN105656671B
CN105656671B CN201610007178.8A CN201610007178A CN105656671B CN 105656671 B CN105656671 B CN 105656671B CN 201610007178 A CN201610007178 A CN 201610007178A CN 105656671 B CN105656671 B CN 105656671B
Authority
CN
China
Prior art keywords
javascript
routing
request
module
subset
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.)
Active
Application number
CN201610007178.8A
Other languages
English (en)
Other versions
CN105656671A (zh
Inventor
宋小兵
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201610007178.8A priority Critical patent/CN105656671B/zh
Publication of CN105656671A publication Critical patent/CN105656671A/zh
Application granted granted Critical
Publication of CN105656671B publication Critical patent/CN105656671B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/04Interdomain routing, e.g. hierarchical routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/02Standardisation; Integration
    • H04L41/0233Object-oriented techniques, for representation of network management data, e.g. common object request broker architecture [CORBA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0893Assignment of logical groups to network elements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供了一种JavaScript路由方法及其对应装置。该方法包括并行接收多个JavaScript请求;按照预定规则将所述多个JavaScript请求划分为多个JavaScript请求子集;以及对所述多个JavaScript请求子集进行分别路由。上述方法和装置解决了现有技术中业务逻辑配置复杂繁琐,扩展性和使用性差的问题。

Description

JavaScript路由方法及其装置
技术领域
本发明涉及JavaScript领域,具体涉及一种JavaScript路由方法及其装置。
背景技术
ExpressJS是一种基于NodeJS的开发框架。目前常用的JavaScript路由方法是利用ExpressJS提供的基础JavaScript(JS)路由对象ExpressJS-Router。ExpressJS-Router提供了如图1所示的ExpressJS方法。
如图1所示,在ExpressJS-Router方案中,首先,app.js通过监听服务请求,根据配置的请求路径,将接收到的请求发送到总路由Router.js对象。然后,Router.js按需加载所有的Model模型对象和ExpressJS的Router对象,并且写多个Controller控制层方法来处理具体的业务逻辑和跳转。之后,Router.js将所有请求的URL和需要处理的业务方法进行一一对应的配置,从而实现JavaScript路由。
然而上述方案存在着缺陷。该方案只能实现简单的请求转发,不能实现较复杂的功能。在上述方案中,如果业务逻辑较多,配置将非常复杂繁琐、不清晰,会在app.js中进行很多Controller的配置和模型对象的引入,增加了软件的耦合性,降低了软件质量。例如需要对/S/system/querySystem(以下简称S)和/A/app/queryApp(以下简称A)这2个URL进行路由时,都必须将这2个URL和对应的实际方法配置到总路由中。如果现在对A对应的实际方法进行了扩展,如扩展了方法queryAppName,则需要在总路由中配置/A/app/queryAppName,这样不仅影响到了A的业务逻辑也影响到了S的业务逻辑,因为他们在一个路由。如果queryAppName方法出错,可能导致S的方法不可用。此外,该方案具有较差的扩展性和使用性。
因此需要一种JavaScript路由方案,能够解决上述问题中的至少一些。
发明内容
为了解决上述问题,本发明实施例提供了一种JavaScript路由方法及其装置。
根据本发明的一个方案,提供了一种JavaScript路由方法,包括:并行接收多个JavaScript请求;按照预定规则将所述多个JavaScript请求划分为多个JavaScript请求子集;以及对所述多个JavaScript请求子集进行分别路由。
根据本发明的第二方案,提供了一种JavaScript路由装置。该装置包括:接收模块,用于并行接收多个JavaScript请求;主路由模块,用于按照预定规则将所述多个JavaScript请求划分为多个JavaScript请求子集;以及多个次级路由模块,用于对所述多个JavaScript请求子集进行分别路由。
基于上述方法和装置,主路由无需知道各个子路由(次级路由)的详细路由逻辑,同时各个业务模块子路由出问题后不会影响到其他模块的路由功能,大大提高扩展性和可靠性。该方案和装置还降低软件的耦合性,提高软件逻辑内聚,提升软件质量。此外,可以集中配置总路由且独立配置子路由的功能,逻辑清晰,便于后期维护,降低软件维护成本。
附图说明
通过下面结合附图对发明进行的详细描述,将使本发明的上述特征和优点更加明显,其中:
图1是示出现有技术的JavaScript路由方法的示意图;
图2是示出根据本发明的实施例的JavaScript路由方法的示意性流程图;
图3是示出用于实现图2所示的路由方法的JavaScript路由装置的示意性框图;以及
图4是根据本发明的实施例的JavaScript路由方法的示意图。
具体实施方式
下面,参考附图详细说明本发明的优选实施方式。在附图中,虽然示于不同的附图中,但相同的附图标记用于表示相同的或相似的组件。为了清楚和简明,包含在这里的已知的功能和结构的详细描述将被省略,以避免使本发明的主题不清楚。
在详细描述本发明的技术方案之前,首先提供本发明中一些相关术语的解释。需要理解的是,当这些解释与本领域中关于这些术语的其他解释和理解相冲突时,应以下述提供的解释来理解本发明的技术方案。
Model:模型对象,比如一个用户数据库表对应一个模型对象User,User中一般包含数据库字段属性和给各个属性设置和获取值的方法。
Controller:控制层,实现页面访问的控制和业务逻辑跳转。
app.js:一个应用的入口JS对象,可以理解为可启动的运行对象。
耦合:软件系统结构中各模块间相互联系程度的一种度量。模块之间耦合性越强,模块的独立性则越差,模块间耦合的高低取决于模块间接口的复杂性,调用的方式以及传递的信息。
内聚:一个模块内各个元素彼此结合的紧密程度,高内聚就是一个模块内各个元素彼此结合的紧密程度高,一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。
按需加载:在需要用到对应的JS对象的时候,才将对象引入并且初始化。
相对路径:JS对象相对于项目根路径的目录结构。
下面参考图2至图4来说明本发明的技术方案。图2示出了根据本发明的实施例的JavaScript路由方法。如图2所示,该方法包括:步骤110,并行接收多个JavaScript请求;步骤120,按照预定规则将所述多个JavaScript请求划分为多个JavaScript请求子集;以及步骤130,对所述多个JavaScript请求子集进行分别路由。
在一些示例中,所述多个JavaScript请求是通过监听服务请求而接收到的。
在一些示例中,按照预定规则将所述多个JavaScript请求划分为多个JavaScript请求子集可包括:根据所述多个JavaScript请求中包含的业务模块标识来划分所述多个JavaScript请求。
在一些示例中,可通过映射表来对所述业务模块标识和用于对多个JavaScript请求子集进行分别路由的路径进行一一对应配置。
在一些示例中,所述方法可基于ExpressJS开发框架来实现。
在该示例中,所述方法还可以包括:加载与各个业务模块标识相关联的模型对象和ExpressJS-Router对象。
图3示出了用于实现图2所示的路由方法的JavaScript路由装置。如图3所示,该装置包括接收模块210,用于并行接收多个JavaScript请求;主路由模块220,用于按照预定规则将所述多个JavaScript请求划分为多个JavaScript请求子集;以及多个次级路由模块230,用于对所述多个JavaScript请求子集进行分别路由。
在一些示例中,接收模块210还可通过监听服务请求来并行接收所述多个JavaScript请求。
在一些示例中,主路由模块220还可根据所述多个JavaScript请求中包含的业务模块标识来划分所述多个JavaScript请求。
在一些示例中,图3中所示的JavaScript路由装置还可包括映射表。主路由模块220还可通过映射表来对所述业务模块标识和用于对多个JavaScript请求子集进行分别路由的路径进行一一对应配置。该映射表可存储在主路由模块220中,或存储在主路由模块220可访问的其他模块和/或外部装置中。
在一些示例中,可基于ExpressJS开发框架来实现所述JavaScript路由装置。
在该示例中,各个次级路由模块230还用于加载与对应的各个业务模块标识相关联的模型对象和ExpressJS-Router对象。
该装置还可包括存储器(未示出),用于存储在实施上述方法和/或装置时需要使用的数据,例如上述的映射表。在一些示例中,该存储器也可以位于图3所示装置之外,并可由图3所示的装置通过本领域周知的各种手段中的一种或多种来访问。
需要注意的是,本发明实施例的上述方法和装置可通过硬件单元来实现,也可通过软件模块的方式来实现,本发明不对其进行限制。
如上所述,可通过ExpressJS开发框架的方式来实现根据本发明实施例的方法和装置。图4示出了这样一种实现的具体示例。
如图4所示,在该示例中使用软件模块(具体地,对象)的形式来实现图3中示出的各个模块,例如,使用app.js来实现图3中示出的接收模块210,使用总路由Router.js来实现图3中示出的主路由模块220,且使用子路由Router.js来实现多个次级路由模块230。然而,可通过本领域技术人员可采用的任何方式来实现这些模块,包括但不限于软件、硬件及其组合。
如图4中所示,在步骤1中,app.js可例如通过监听所有的JavaScript请求来进行接收,然后将所有请求转发到总路由Router.js。可采用本领域中所使用的任何监听方式来实现上述监听,本发明不对此进行限制。
然后,在步骤2中,总路由Router.js根据业务模块标识(如:/A*标识以A开头的请求URL)来划分接收到的JavaScript请求,将划分出的JavaScript请求和相应路由分别分发到各个子路由模块。具体地,分发路由可以是将业务模块标识和子路由的相对路径进行一一对应的配置。例如,可通过映射表或查找表等方式来执行该一一对应的配置。在一些示例中,也可以使用子路由的绝对路径而不是相对路径。
步骤3中每个子路由Router.js模块只引入与该模块相关的模型对象(例如,对于带标识为A*的请求而言,Model A对应的A.js)和ExpressJS-Router对象,而无需关注其他模型对象。
在步骤4中每个子路由Router.js模块可实现自己模块业务逻辑相关的Controller配置和跳转,即每个路由下的URL都是以进入该子路由的标识开头,然后将URL和需要处理的业务方法进行一一对应的配置。这里的URL是指总路由的URL按照标识过滤后剩下的进入子路由的URL,这些URL会以某些标识开头,如:/A/app/queryApp,则/A就是这个URL的标识。图4中所示的带标识是对URL按照特定的方式分类,即URL的前缀。如针对URL/A/app/queryApp和/S/system/querySystem,他们的标识分别为/A和/S。
需要注意的是,虽然图4的步骤2和步骤3中都由加载router对象的动作,然而根据具体的步骤,router对象的用途也有所不同。步骤2的router对象只是简单地将请求分发到不同的子路由,而步骤4的router对象是将请求分发到具体的处理逻辑。此外,不同步骤中router对象的服务对象不一样,步骤2服务于请求和子router,步骤4服务于请求和请求对应的实际方法。
本发明实施例提供的技术方案让各个子路由模块独立负责自己的业务,实现自己的路由逻辑,从而可以将不同的子路由模块由不同设计人员/小组设计,使得一个子路由模块的质量不会影响到其他模块,提高了产品质量。
根据本发明的技术方案,可以对于不同子业务模块的路由逻辑进行集中的简单配置和管理,总路由模块不关注各个子路由的详细路由逻辑,同时各个业务模块子路由出问题后不会影响到其他业务模块的路由功能,大大提高了扩展性和可靠性。
此外,本发明的技术方案简单地实现了集中配置总路由和独立配置子路由的功能,逻辑清晰,便于后期维护,降低软件维护成本。
在本发明所提供的几个实施例中,应该理解到,所揭露的方法和设备,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个第二处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上面的描述仅用于实现本发明的实施方式,本领域的技术人员应该理解,在不脱离本发明的范围的任何修改或局部替换,均应该属于本发明的权利要求来限定的范围,因此,本发明的保护范围应该以权利要求书的保护范围为准。

Claims (12)

1.一种JavaScript路由方法,用于针对JavaScript请求的URL找到对应的需要处理的业务方法,所述方法包括:
并行接收多个JavaScript请求;
按照预定规则将所述多个JavaScript请求划分为多个JavaScript请求子集;以及
对所述多个JavaScript请求子集进行分别路由。
2.根据权利要求1所述的JavaScript路由方法,其中,并行接收多个JavaScript请求包括:通过监听服务请求来并行接收所述多个JavaScript请求。
3.根据权利要求1所述的JavaScript路由方法,其中,按照预定规则将所述多个JavaScript请求划分为多个JavaScript请求子集包括:根据所述多个JavaScript请求中包含的业务模块标识来划分所述多个JavaScript请求。
4.根据权利要求1所述的JavaScript路由方法,还包括:通过映射表来对业务模块标识和用于对多个JavaScript请求子集进行分别路由的路径进行一一对应配置。
5.根据权利要求1所述的JavaScript路由方法,其中,基于ExpressJS开发框架来实现所述JavaScript路由方法。
6.根据权利要求5所述的JavaScript路由方法,还包括:加载与各个业务模块标识相关联的模型对象和ExpressJS-Router对象。
7.一种JavaScript路由装置,用于针对JavaScript请求的URL找到对应的需要处理的业务方法,所述装置包括:
接收模块,用于并行接收多个JavaScript请求;
主路由模块,用于按照预定规则将所述多个JavaScript请求划分为多个JavaScript请求子集;以及
多个次级路由模块,用于对所述多个JavaScript请求子集进行分别路由。
8.根据权利要求7所述的JavaScript路由装置,其中,所述接收模块还用于通过监听服务请求来并行接收所述多个JavaScript请求。
9.根据权利要求7所述的JavaScript路由装置,其中,所述主路由模块还用于根据所述多个JavaScript请求中包含的业务模块标识来划分所述多个JavaScript请求。
10.根据权利要求7所述的JavaScript路由装置,还包括映射表,所述主路由模块还用于通过映射表来对业务模块标识和用于对多个JavaScript请求子集进行分别路由的路径进行一一对应配置。
11.根据权利要求7所述的JavaScript路由装置,其中,基于ExpressJS开发框架来实现所述JavaScript路由装置。
12.根据权利要求11所述的JavaScript路由装置,其中,各个次级路由模块还用于加载与对应的各个业务模块标识相关联的模型对象和ExpressJS-Router对象。
CN201610007178.8A 2016-01-06 2016-01-06 JavaScript路由方法及其装置 Active CN105656671B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610007178.8A CN105656671B (zh) 2016-01-06 2016-01-06 JavaScript路由方法及其装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610007178.8A CN105656671B (zh) 2016-01-06 2016-01-06 JavaScript路由方法及其装置

Publications (2)

Publication Number Publication Date
CN105656671A CN105656671A (zh) 2016-06-08
CN105656671B true CN105656671B (zh) 2019-06-04

Family

ID=56491670

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610007178.8A Active CN105656671B (zh) 2016-01-06 2016-01-06 JavaScript路由方法及其装置

Country Status (1)

Country Link
CN (1) CN105656671B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104506415A (zh) * 2014-12-17 2015-04-08 华为技术有限公司 一种基于工具栏的消息交互装置及方法
CN105208074A (zh) * 2015-08-11 2015-12-30 广州韵成信息科技有限公司 一种基于Web服务器的非对称路由的路径分析方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9276838B2 (en) * 2012-10-05 2016-03-01 Futurewei Technologies, Inc. Software defined network virtualization utilizing service specific topology abstraction and interface

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104506415A (zh) * 2014-12-17 2015-04-08 华为技术有限公司 一种基于工具栏的消息交互装置及方法
CN105208074A (zh) * 2015-08-11 2015-12-30 广州韵成信息科技有限公司 一种基于Web服务器的非对称路由的路径分析方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ava关于低耦合与高内聚理念;https://blog.csdn.net/xxonehjh505/article/details/6048258;《CSDN博客》;20101201;第1-2页
如何使JS代码达到低耦合;https://www.zhihu.com/question/35527487;《知乎》;20150912;第1页

Also Published As

Publication number Publication date
CN105656671A (zh) 2016-06-08

Similar Documents

Publication Publication Date Title
CN104937572B (zh) 用于业务和/或工作负荷处理的方法和装置
CN103339887B (zh) 用于优化网络前缀列表搜索的方法
CN103312661B (zh) 一种服务访问方法及装置
CN109871224A (zh) 一种基于用户标识的灰度发布方法、系统、介质及设备
CN105808333B (zh) 任务分配方法及系统
CN107003983A (zh) 配置网络
EP2924934B1 (en) Ethernet switch and method for establishing forwarding patterns in an ethernet switch
CN103957136B (zh) 一种小卫星can总线监视系统
CN106294421A (zh) 一种数据写入、读取方法及装置
US9507625B2 (en) Apparatus and method for generating software defined network(SDN)-based virtual network according to user demand
CN102904777A (zh) 一种基于端口对多设备测试的实现方法
CN105099953A (zh) 云数据中心虚拟网络的隔离方法与装置
CN103414651B (zh) 一种调整等价路由均衡分担的方法和网络设备
CN105450774A (zh) 用于dns的负载均衡方法和装置
KR20180030142A (ko) 참고신호 맵핑 방법 및 장치
CN105577474B (zh) 一种网络设备高速端口性能测试的方法及系统
CN103200067A (zh) 用以隔离数据的动态虚拟lan
CN103634298B (zh) 一种数据库连接处理方法及装置
CN113114357B (zh) 无源波分设备故障检测方法、装置、服务器和存储介质
CN105656671B (zh) JavaScript路由方法及其装置
CN105763663B (zh) 一种私网地址管理方法、控制装置和网络设备
US20200235815A1 (en) Methods and sysems for reconfigurable network topologies
CN104253751A (zh) 一种基于多角色主机的报文传输方法和设备
CN110233799A (zh) 一种端口配置的方法和通信设备
CN106209634B (zh) 地址映射关系的学习方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant