CN107250981A - 单页应用中的路由动态加载 - Google Patents

单页应用中的路由动态加载 Download PDF

Info

Publication number
CN107250981A
CN107250981A CN201580063648.6A CN201580063648A CN107250981A CN 107250981 A CN107250981 A CN 107250981A CN 201580063648 A CN201580063648 A CN 201580063648A CN 107250981 A CN107250981 A CN 107250981A
Authority
CN
China
Prior art keywords
route
module
request
server
group
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.)
Granted
Application number
CN201580063648.6A
Other languages
English (en)
Other versions
CN107250981B (zh
Inventor
D·布朗
A·潘迪亚
Z·米尔格鲁
J·史密斯
A·米勒
A·库苏马
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.)
Microsoft Technology Licensing LLC
Original Assignee
LinkedIn Corp
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 LinkedIn Corp filed Critical LinkedIn Corp
Publication of CN107250981A publication Critical patent/CN107250981A/zh
Application granted granted Critical
Publication of CN107250981B publication Critical patent/CN107250981B/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
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/0482Interaction with lists of selectable items, e.g. menus

Abstract

本发明提供一种用于在单页应用(SPA)中动态地加载路由和依赖项信息的技术,单页应用在客户端设备上执行。在一个技术中,SPA包含接收请求的路由的路由处理器。该路由处理器决定该请求的路由是否匹配在路由列表中的任何路由。请求路由可能“匹配”的唯一路由是通配符路由,其与一函数相关联,当以请求的路由调用该函数作为输入时,引起服务器请求产生并且从客户端设备传输至服务器。该服务器用请求的路由、用于请求的路由的依赖项信息,并且,可选择地,能够是该请求的路由的“子”路由的一个或多个其他路由做出响应。基于依赖项信息生成模块实例,并且该模块实例被加载至该SPA。

Description

单页应用中的路由动态加载
技术领域
本发明公开一般涉及单页应用,更具体是,涉及使用单路处理器动态地加载路由和依赖项信息。
背景技术
单页应用(SPA:Single-Page Application)是在客户端设备上运行并与单一网页相适应的web应用。web应用是如下应用软件:在web浏览器中运行,并采用浏览器支持的编程语言(例如JavaScript、HTML和CSS的组合)创建,并且依赖web浏览器提供web应用。SPA的目标在于,提供更加流畅的用户体验,类似桌面应用。当SPA正在执行时,通过SPA提供的网页不在任何点重新加载,也不控制转移到另一个网页。
SPA开发的传统方法包含,在客户端设备上执行的SPA中,可访问用户在与SPA交互时所有可选择的可能的路由(例如URL片段)的路由处理器。该传统方法也涉及包含每个可能的路由的“依赖项”的SPA。“依赖项”指代与一个或多个路由相关联的每个模块(或子应用)的文档。这些模块文档包含JavaScript和CSS文档,通常比HTML文档大很多。在另一方面,HTML文档能够从web服务器检索以响应用户对具体路由的请求。因此,用户与SPA交互经常涉及与web服务器的动态通信。
SPA在加载时间,甚至在请求任何路由之前可访问所有路由和相关模块文档的一个优点在于,避免了页面刷新并且页面浏览时间最小。
SPA方法的一个替代方法是多页应用方法,其中,路由处理通过接收来自在客户端设备上执行的web应用的请求的服务器实现。然而,响应于每个用户请求,需要页面刷新,引起用户体验不佳。
然而,该SPA方法不是没有缺点。例如,加载SPA的时间,以及加载所有可能的路由和每个模块的文档的时间可以很长,尤其是如果路由和模块文档的数量相对较大。如另一个例子所示,对于大型SPA,开发可在每个SPA加载时间访问所有可能的路由以及每个路由的依赖项的单一路由处理器可以是繁琐的,尤其是当不同的开发团队分别开发与可能的路由的一个子集相关联的模块。
一个可能减少SPA方法的缺点的方法是为每个模块开发路由处理器。例如,SPA包含可访问三个路由的路由处理器:“/profile/”、“/mail/”和“/search/”,但不可访问这些路由的任何子路由。该路由处理器也可访问这三个路由的每一个的依赖项信息。所以,如果用户选择了“/profile/”路由,则检索到“/profile/”的子路由和相关依赖项信息,并加载简档(profile)模块。然后,如果该用户想要访问路由“/mail/”,则该简档模块的路由处理器将会返回错误,因为该简档模块的路由处理器不可访问任何涉及“/mail/”的路由。因此,为每个模块实现单独的路由处理器不允许用户访问所有与SPA相关联的模块。
在本节中描述的方法是可执行的方法,但不必是先前设想或执行的方法。因此,除非另有说明,不应仅仅凭借在本节中包含的内容而假定本节所描述的任何方法是现有技术。
附图说明
图中:
图1是描述了在实施例中用于在客户端设备中处理路由请求的示例系统的框图;
图2是描述了在实施例中用于在客户端设备中处理路由请求的示例进程的流程图;
图3是说明计算机系统的框图,可在其上执行本发明的实施例。
具体实施方式
在下面的描述中,为了解释的目的,提出许多具体细节以提供对本发明的透彻理解。然而,很明显,本发明能够在没有这些具体细节的情况下实施。在其他例子中,公知的结构和设备以框图形式显示,以避免不必要地模糊本发明。
总体概述
提供了一种用于路由处理器的技术,其使用加载在单页应用(SPA)环境中的动态路由和依赖项。路由处理器是当SPA加载在客户端设备上时启动的进程。该路由处理器可能最初不可访问用户可能请求的至少某些路由。该路由处理器最终接收了请求,其包含与依赖项信息关联的路由,路由与依赖项均不可在客户端设备获得。代替显示请求路由对路由处理器未知的错误信息,路由处理器引起请求的路由发送至服务器,服务器用所请求的路由和所请求的路由的依赖项信息做出响应。
系统概述
图1是描述了在实施例中用于在客户端设备上处理路由请求的示例系统100的框图。系统100包含客户端设备110、网络120、和服务器130。虽然在系统100中只描述了一个客户端设备110,但系统100可包含很多客户端设备。类似的,虽然在系统100中只描述了一个服务器130,但系统110可包含多个支持客户端设备110的服务器。例如,如果服务器130出故障或超载,那么来自客户端设备110的请求能够重定向至另一台可以响应这些请求的服务器。
客户端设备110的例子包含便携式电脑、平板电脑、智能手机和台式电脑。客户端设备110包含在其上执行的主机应用112。主机应用112的一个例子是构成为接受(作为输入)许多不同域的网址(URLs:Uniform Resource Locators)的网页浏览器,与一个或多个域名服务器(DNSs:Domain Name Servers)通信以查找URLs的IP地址,并和与IP地址相关联的网页服务器通信。网页浏览器的例子包含Chrome、Firefox、Safari和InternetExplorer。另一个主机应用112的例子是客户端侧应用,例如移动应用,其构成为与能够由多个web服务器支持的单一web域通信。
网络120能够通过提供在客户端设备110与服务器130之间的数据交换的任何介质或装置实现。网络120的例子包含但不限于例如局域网(LAN)、广域网(WAN)、以太网或英特网,或一个或多个陆地、卫星、或无线链路的网络。
服务器130是一个组件,其构成为处理和响应来自主机应用112的请求和在其他客户端设备上执行的主机应用112的其他实例(图1中未描绘)。例如,响应于来自主机应用112的请求,服务器130提供主机应用112进行处理以在主机应用112中加载和执行单页应用114的文档和数据(用于单页应用114)。
服务器130存储或可访问路由-模块关联数据132,该路由-模块关联数据132将路由(完整的URLs或URL片段)与数据文档相关联。一个或多个数据文档的集合对应于SPA114基于处理相应的数据文档生成的模块。例如,该关联数据可关联(1)路由“/profile/”与用于生成简档模块(或子-应用)的数据文档,(2)路由“/search/”与用于生成搜索模块的数据文档,以及(3)路由“/mail/”与用于生成邮件模块的数据文档。每个模块允许客户端设备110的用户启动确定的动作。例如,简档模块可允许用户观查看用户简档,编辑用户简档,并且分享用户简档。类似的,搜索模块可允许用户启动社交网络的搜索,编辑之前的搜索,和保存搜索结果。类似的,邮件模块可允许用户查看所有用户的电子消息,查看满足确定标准的电子消息,并创建、发送、回复、和转发电子消息。
模块的数据文档的例子包含JavaScript文档和层叠样式表(CSS:CascadingStyle Sheet)文档。单一模块的数据文档也可包含一个或多个HTML文档。如果单一模块与多个路由相关联,则每个路由相对应于单一web文档。例如,简档模块能够与路由“/profile/view/”、“/profile/edit/”、和“/profile/share/”相关联。因此,相同的JavaScript文档和CSS文档能够用于生成三个不同路由的网页,但是三个不同的HTML文档(即,三个路由中的每一个路由一个HTML文档)能够与简档模块相关联。当选择相应的路由查看时,使用不同的HTML文档生成网页。
服务器130能够在软件、硬件或软硬件组合中实现。服务器130能够在单一计算设备或多个计算设备上实现。
主机应用112从服务器130提交了对数据的请求(例如,HTTP)。该请求可以由在主机应用112的文本字段中输入URL,并提供输入(例如,选择键盘上的键或语音输入)的用户启动。或者,该请求能够通过用户选择在客户端设备110上显示的图形图标来启动。该请求通过网络120传输至服务器130。作为答复,服务器130发送HTML和其他数据源,例如JavaScript文档和CSS文档,至客户端设备110。
响应于接收HTML和其他数据源,SPA 114基于典型地作为依赖项加载步骤的一部分被加载的模块-具体模板文档而创建文档对象模型(DOM:Document Object Model)。SPA114启动路由处理器116,这是构成为接收和处理路由请求,并根据特别的路由请求加载适当的模块的进程。在多页应用中,该路由处理器在服务器上实现,而不是在提交路由请求的客户端上实现。
路由请求表明是URL的片段的路由,例如“/search/”、“/profile/”、或“/mail/”。另外,路由能够是完整的URL,例如“http://www.linkedin.com/search/”。路由请求能够基于来自用户的输入启动。例如,该输入能够是用户选择的与特别路由相关联的链接或按钮。如另一个例子,该输入可以是用户选择在键盘上的多个键,该键可以是实物的或图形的。或者,路由请求能够自动启动。例如,如果基于在显示特别网页时经常选择特别路由(例如,“/mail/”)的用户选择历史,该用户更可能选择那个特别路由,那么SPA114自动启动该路由请求。
示例进程
图2是描述了在实施例中用于在客户端设备上处理路由请求的示例进程200的流程图。进程200在客户端设备110上进行。
在块210,路由处理器116由SPA 114启动。路由处理器116能够启动以响应于加载在在主机应用112的数据文档(例如JavaScript文档和CSS文档)和SPA 114开启。最初,路由处理器116可能不可访问一个或多个可供用户选择的路由。此外,客户端设备110不能存储任何用于在主机应用112中运行模块的依赖项信息(与一个或多个路由相关联)。
在块220,路由处理器116接收表明特别路由的路由请求。该路由请求能够基于用户与SPA 114交互而从SPA114接收,交互为例如在客户端设备110的屏幕上显示的按钮或链接的选择。
在块230,路由处理器116决定该特别路由不匹配由路由处理器116保持的任何在路由列表中的路由。路由处理器116可只保持单一的路由列表。最初,该路由列表可能是空的。在路由列表中没有请求的路由表明当前加载的模块(例如,SPA 114最初或另一个模块)不能处理该请求的路由。
在块240,路由处理器116引起服务器请求通过网络120发送至服务器130。该服务器请求能够是HTTP请求并且可包括完整的URL。例如,当该路由请求能够是URL片段(例如,“/search/”),该服务器请求能够是整个相关联的URL(“http://www.linkedin.com/search/”)。
在块250,路由处理器116从服务器130接收一个或多个路由和一个或多个依赖项的集合,例如JavaScript文档、CSS文档、和图像,用于相对应于请求的路由的模块。模块被设计成单机应用。使用模块作为应用体系结构的一部分提供了许多优点,例如减少主应用的大小,将相关功能封装到单个模块中,在能够将单一模块加载到不同的主机应用方面的可重用性,并且将第三方模块集成到主应用中。
如果从块250中的服务器130接收了多个路由,则多个路由中的一个或多个能够是请求的路由的“子”路由。例如,如果该请求的路由是“/profile/”,则连同请求的路由从服务器130接收的另外的路由能够是“/profile/edit”、“/profile/view”、和“/profile/share”。这样的“子”路由可能或可能不与另一模块相关联。因此,能够服务请求的路由“/profile/”的相同的模块也能够服务请求的路由“/profile/edit/”。
块250也涉及将请求的路由和任何其他路由,例如该请求的路由的子路由插入路由处理器116保留的路由列表。如果当路由处理器116引起服务器请求发送时(在块240中)该路由列表不为空,,则该路由列表在插入从服务器130接收的路由之前能够被清空。
在块260,响应于接收该请求的路由,该请求的路由被重新触发,该步骤涉及路由处理器116识别在路由列表中的请求的路由。
在块270,与请求的路由相关联的模块的合适的依赖项被识别并被加载至SPA114。块270能够通过主机应用112实现。每个模块(或子-应用)包括处理(同时加载)任何未来路由请求的分离路由处理器。因此,路由处理器116不再是当前路由处理器,除非再加载其相关联的模块或应用。
在块280,该加载的模块处理该请求的路由并基于该请求的路由在客户端设备110的屏幕上显示适当的数据。例如,如果请求的路由是“/profile/”,则加载用于客户端设备110显示用户的简档信息的模块。块280也可包括SPA 114,或加载的模块,如果web内容没有事先下载至块250中的客户端设备110,则从服务器130检索web内容。
未知路由
如之前关于块230描述的,用户可能会启动在路由处理器的路由列表中找不到的请求的路由。此处提到的这样的路由为“未知路由”。要处理这样的场景,SPA的典型实现包含在路由处理器的路由列表中的通配符路由。如果该请求的路由不匹配在路由列表中的任何其他路由,则该通配符路由能够是作为全能性的“/*”。该通配符路由能够与函数调用或消息显示有关,例如“404()”,表明该路由处理器调用404错误函数,引起对用户显示错误消息。未知路由调用错误函数。如果路由处理器以特别顺序扫描其路由列表,则该通配符路由能够放置在路由列表的末尾,以确保如果该请求的路由是未知的,则只调用错误函数。
在实施例中,代替将错误函数与通配符路由相关联,而是将寻径函数与通配符路由相关联。因此,如果该请求的路由未知(例如,如果在路由处理器116到达该通配符路由之前,该请求的路由没有在路由列表中找到),则路由处理器116调用该寻径函数(此处提及为“通配符寻径函数”)。该通配符寻径函数决定是否有任何模块或子-应用在主机应用112中映射至请求的路由。如果有,则该通配符寻径函数为请求的路由加载依赖项。否则,该通配符寻径函数引起服务器请求(包含该请求的路由)通过网络120传递至服务器130。
如果路由出现在路由列表中,则意味着那个路由的那个依赖项信息可能已经加载或存储在客户端设备110中。然而,该通配符寻径函数逻辑无论如何都能够在路由中执行。
服务器130从客户端设备110接收请求的路由,识别与请求的路由相关联的数据文档(例如,使用路由-模块关联数据132),并发送数据文档至客户端设备110。该数据文档包含用于初始化和执行在SPA114中的模块并显示web内容的数据文档。该数据文档可包含JavaScript文档、CSS文档、和/或HTML文档。
随后的路由请求
如前所述,路由处理器116可响应于包含未知路由的单一服务器请求而接收多个路由。例如,未知路由能够是路由“/profile/”,并且服务器130可通过也发送路由“/profile/edit/”、“/profile/view/”、和“/profile/share/”回复表明路由“/profile/”的服务器请求。路由处理器116包含在其路由列表中的附加路由。随后,合适的模块被加载在SPA114中之后,用户可启动一个或多个附加的路由请求。附加的请求的路由可匹配路由处理器116最近接收的路由之一。继续举例,该下一个请求的路由能够是“/profile/edit/”,表明用户希望编辑他的/她的简档。该当前加载的模块能够构成为处理该请求的路由。然而,该当前加载的模块可能需要将与请求的路由相关联的web内容的请求(例如,HTML文档)发送至服务器130。因此,当单一模块的实例能够用于处理多个路由时,多个路由中的每一个能够与不同的组的网页内容,例如HTML文档相关联。
删除模块
在某些情况下,加载的模块不构成为处理请求的路由。例如,如果简档模块是当前加载的,并且用户请求只能由搜索模块服务的路由,则该搜索模块需要被加载。
在实施例中,加载的模块被删除(或卸载),以响应于决定(1)该加载的模块不能服务请求的路由和/或(2)该请求的路由还未被加载。例如,响应于请求的路由“/profile/”而被加载的模块不能服务请求的路由“/mail/”,当该路由通过合适的模块服务时,允许用户访问已寻址并发送至用户账户的一组电子信息(例如,即时消息或邮件消息)。该当前加载的“profile”模块可能不构成为提供关于用户的电子消息的信息。
该第一决定(即加载的模块不能服务请求的路由)能够通过加载的模块做出,并且该第二决定(即该请求的路由还未被加载)能够通过路由处理器116做出。
删除加载的模块可涉及删除在运行时间环境中执行的模块实例,并且解除分配用于存储通过模块生成的实例、变量和数据的内存。删除加载的模块还可涉及删除所有用于生成该模块实例的数据文档(例如,JavaScript文档和CSS文档)。
客户端侧缓存
在将特别模块的数据文档下载到客户端设备110之后,SPA114将特别模块的实例加载进运行时间环境。如果不再需要该特别模块的实例(例如当接收的另一请求的路由要求不同的模块),则SPA114可引起该实例(连同实例的其他工件(artifacts)例如搜索结果)从运行时间环境被删除。这样,SPA 114的内存占用保持相对较小。
然而,在实施例中,即使特别模块的实例被删除了,主机应用112包含缓存功能,利用缓存功能使与该模块相关联的数据文档缓存在客户端设备110上。因此,如果随后请求与特别模块相关联的路由,则该特别模块的数据文档已经存储在客户端设备110上。因此,避免与服务器130往返来检索合适的数据文档。
预取
在实施例中,保留表明先前请求的一个或多个路由的请求的路由历史数据(或简化为“历史数据”)。历史数据能够存储于客户端设备110或通过服务器130存储。
历史数据还能够表明一个或多个路由被请求的次数和/或时间。例如,该历史数据可表明路由“/profile/”被选择了五次,并且最后一次选择路由“/search/”是一天前。
通过分析历史数据,SPA114(或服务器130)可决定一个或多个特别路由(和它们关联的依赖项信息)应当在路由处理器116接收到与一个或多个特别路由匹配的请求的路由之前发送至客户端设备110。在从用户接收请求的路由之前发送路由数据和依赖项数据在此被称为“预取”。例如,如果用户几乎总是在加载SPA114之后先选择路由“/search/”,则SPA114(或服务器130)可在用户选择那个路由之前决定请求(或传输)路由“/search/”和其依赖项信息。以这种方式,当该用户最终选择那个路由时,创建搜索模块的实例所需要的依赖项信息可能已经存储在客户端设备110上了。
优点
在此的实施例的一个优点是,SPA的模块(或子应用)的开发者可开发模块,而不需要任何SPA的其他模块的知识。因此,避免了在潜在的许多不同的开发团队之间管理单一大型路由。这里的实施例的另一个优点是,SPA有小得多的内存占用空间,因为当SPA被下载时路由和与这些路由相关联的依赖项信息不需要立即下载。相反,在SPA中执行的模块的数据文档在需要时下载。
硬件概述
根据一个实施例,此处描述的技术由一个或多个专用计算设备实现。该专用计算设备能够被硬连线以执行技术,或可包含数字电子设备例如一个或多个专用集成电路(ASICs:Application-Specific Integrated Circuits)或持续编程以执行技术的可编程逻辑门阵列(FPGAs:Field Programmable Gate Arrays),或可包含一个或多个通用硬件处理器,其被编程以其按照在固件、内存、其他存储器、或组合中的程序指令执行技术。这样的专用计算设备也可将自定义的硬连线逻辑、ASICs、或FPGAs与自定义编程结合来完成技术。该专用计算设备能够是台式计算机系统、便携式计算机系统、手持设备、网络设备或任何其他包含硬连线和/或程序逻辑来实现技术的设备。
例如,图3是说明计算机系统300的框图,在该系统上能够实现本发明的实施例。计算机系统300包含总线302或其他用于通信信息的通信机构,和用于处理信息的与总线302耦合的硬件处理器304。硬件处理器304能够是例如通用微处理器。
计算机系统300也包含主存储器306,例如随机存取存储器(RAM:Random AccessMemory)或其他动态存储设备,其耦合到总线302用于存储通过处理器304执行的信息和指令。主存储器306也能够用于在执行通过处理器304执行的指令期间存储临时变量或其他中间信息。当这样的指令存储在处理器304可访问的非临时存储介质中时,使计算机系统300成为专用机器,该机器被自定义以执行指令中规定的操作。
计算机系统300还包含只读存储器(ROM:Read Only Memory)308或其他静态存储设备,其耦合至总线302,用于存储用于处理器304的静态信息和指令。提供存储设备310,例如磁盘或光盘,并耦合至总线302,用于存储信息和指令。
计算机系统300能够通过总线302耦合至显示器312,例如阴极射线管(CRT:Cathode Ray Tube),用于向计算机用户显示信息。包含字母数字和其他按键的输入设备314耦合到总线302,用于向处理器304发送通信信息和命令选择。另一种类型的用户输入设备是光标控制器316,例如鼠标、轨迹球、或光标方向键,用于将方向信息和命令选择传递至处理器304并且控制光标在显示器312上移动。该输入设备典型地在第一轴线(例如x)和第二轴线(例如y)这两个轴线上具有两个自由度,允许该设备在平面中指定位置。
计算机系统300可使用定制的硬连线逻辑、一个或多个ASICs或FPGAs、固件和/或程序逻辑来实现在此描述的技术,上述技术与计算机系统相结合引起或编程计算机系统300成为专用机。根据一个实施例,通过计算机系统300执行在此的技术以响应于处理器304执行一个或多个包含在主存储器306中的指令的一个或多个序列。这样的指令能够从例如存储设备310的其他存储介质读入主存储器306。包含在主存储器306中的指令序列的执行引起处理器304执行在此描述的处理步骤。在另一实施例中,能够使用硬连线电路代替软件指令或与软件指令相结合。
该在此使用的术语“存储介质”指代任何非临时介质,该非临时介质存储引起机器以特别方式运行的数据和/或指令。这样的存储介质可包括非易失性介质和/或易失性介质。非易失性介质包含例如光盘或磁盘,例如存储设备310。易失性介质包含动态存储器,例如主存储器306。存储介质常见形式包含例如软盘、磁盘、硬盘、固态硬盘、磁带,或任何其他磁性数据存储介质,CD-ROM、任何其他光学数据存储介质、任何带有洞的样式的物理介质、RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其他存储芯片或胶卷(cartridge)。
存储介质不同于传输介质但是能够与传输介质的结合使用。传输介质参与在存储介质之间传输信息。例如,传输介质包含同轴电缆、铜线和光纤,包含包括总线302的线缆。传输介质也可采取声波或光波形式,例如在无线电波和红外线数据通信中产生的那些声波或光波。
介质的各种形式可能涉及携带一个或多个指令的一个或多个序列至处理器304以供执行。例如,该指令可最初携带至远程计算机的磁盘或固态驱动器。该远程计算机可将指令加载到其动态存储器中,并使用调制解调器将指令通过电话线发送。至计算机系统300的本地调制解调器可接收电话线上的数据并使用红外线发射器将数据转换成红外信号。红外线检测器可接收红外线信号携带的数据,并且合适的电路可将数据放置在总线302上。总线302将数据携带至供处理器304检索并执行指令的主存储器306。通过主存储器306接收的指令可选择地在通过处理器304执行之前或之后存储在存储设备310上。
计算机系统300也包含与总线302耦合的通信接口318。通信接口318提供双向数据通信,与连接至本地网络322的网络链路320耦合。例如,通信接口318能够是综合业务数字网(ISDN:Integrated Services Digital Network)卡、电缆调制解调器、卫星调制解调器、或向对应类型的电话线提供数据通信连接的调制解调器。作为其他例子,通信接口318能够是提供数据通信连接至兼容的局域网(LAN:Local Area Network)的局域网卡。无线链路也能够被执行。在任何这样的执行中,通信接口318发送和接收携带代表不同类型信息的数字数据流的电气、电磁或光信号。
网络链路320典型地通过一个或多个网络向其他数据设备提供数据通信。例如,网络链路320可通过本地网络322向主机计算机324或向通过英特网服务提供者(ISP:Internet Service Provider)326操作的数据装置提供连接。ISP326转而通过现在通常被称为“英特网”328的全球分组数据通信网提供数据通信服务。本地网络322和英特网328均使用携带数字数据流的电气、电磁或光信号。通过多个网络的信号,在网络链路320上并通过通信接口318(将数字数据携带到或出计算机系统300)的信号,构成传输介质的例子。
计算机系统300可通过网络、网络链路320和通信接口318发送消息和接收数据,包含程序代码。在英特网的例子中,服务器330可以通过Internet328、ISP 326、本地网络322和通信接口318传输用于应用程序的请求的代码。
接收到的代码当被接收时能够通过处理器304处理,和/或存储在存储设备310中,或其他非易失性存储器中用于之后执行。
在前述说明书中,参照许多具体细节描述了本发明的实施例,这些细节可根据实现方式而变化。该说明书和附图因此被认为是具有说明性的而不是限制性的意义。本发明的范围和申请人所预期的本发明的范围的唯一和排他性指标,是本申请发布的权利要求的集合的字面上和等价范围,本申请中这类权利要求采用的具体形式发布,包含任何后续修正。

Claims (12)

1.一种方法,包括:
在客户端设备接收来自服务器的web文档数据;
响应于接收所述web文档数据:
在客户端设备基于所述web文档数据执行应用,以及
在所述应用中创建路由进程;
在创建所述路由进程之后,在所述客户端设备接收表明特别路由的输入;
响应于接收表明所述特别路由的输入:
通过所述路由进程决定所述特别路由是否在路由列表中表明;
响应于决定所述特别路由没有在所述路由列表中表明,通过所述路由进程引起所述特别路由被发送至所述服务器;
在引起所述特别路由被发送至所述服务器之后,在所述客户端设备从所述服务器接收与特别路由相关联的一组路由。
2.根据权利要求1所述的方法,其中,
接收所述一组路由还包括在所述客户端设备接收与模块相关联的一个或多个文档,所述模块用于处理在所述一组路由中的每个路由。
3.根据权利要求2所述的方法,其中,
所述一个或多个文档包括一个或多个JavaScript文档和一个或多个层叠式样式表(CSS)文档。
4.根据权利要求2所述的方法,还包括:
基于一个或多个文档生成所述模块的实例,并且将所述模块的实例加载至所述应用。
5.根据权利要求1所述的方法,其中:
当接收了所述输入,所述路由进程只能访问单一路径,且所述单一路路径是通配符路径;
决定所述特别路由没有在所述路由列表中表明包括决定所述特别路由只匹配所述通配符路径;
所述通配符路径与所路由进程调用的,接受所述特别路由作为输入,并且引起所述特别路由发送至所述服务器的函数相关联。
6.根据权利要求1所述的方法,还包括:
在所述客户端设备接收表明不同于所述特别路由的第二路由的第二输入;
响应于接收表明所述第二路由的所述第二输入,通过所述路由进程决定所述一组路由是否包含所述第二路由。
7.根据权利要求6所述的方法,还包括:
响应于决定所述一组路由包含所述第二路由,并且不向所述服务器发送请求,引起从位于客户端设备上的存储器检索与第二模块相关联的一组数据文档。
8.根据权利要求6所述的方法,还包括:
响应于决定所述一组路由不包含所述第二路由,
通过所述路由进程引起所述第二路由被发送至所述服务器;
在引起所述第二路由被发送至所述服务器之后,通过所述路由进程接收与所述第二路由相关联的第二组路由。
9.根据权利要求8所述的方法,还包括:
响应于决定所述一组路由不包含所述第二路由,
通过所述路由进程移除所述一组路由;
其中,在移除了所述一组路由之后,所述路由进程不能够访问所述一组路由。
10.根据权利要求8所述的方法,其中接收所述一组路由还包在所述客户端设备接收与模块相关联的一个或多个文档,所述方法还包括:
在所述客户端设备基于所述一个或多个文档生成所述模块的实例;
将所述模块的所述实例加载进所述应用;
响应于决定所述一组路由不包含所述第二路由,
从所述应用卸载所述模块的所述实例。
11.根据权利要求11所述的方法,其中,
所述应用是单页web应用。
12.一种系统,包括:
一个或多个处理器;
一个或多个存储指令的存储介质,当所述指令被一个或多个处理器执行时,引起权利要求1-11中的任一项所述的方法的执行。
CN201580063648.6A 2014-10-06 2015-08-07 单页应用中的路由动态加载 Active CN107250981B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/507,644 US9967309B2 (en) 2014-10-06 2014-10-06 Dynamic loading of routes in a single-page application
US14/507,644 2014-10-06
PCT/US2015/044320 WO2016057108A1 (en) 2014-10-06 2015-08-07 Dynamic loading of routes in a single-page application

Publications (2)

Publication Number Publication Date
CN107250981A true CN107250981A (zh) 2017-10-13
CN107250981B CN107250981B (zh) 2021-04-02

Family

ID=53836908

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580063648.6A Active CN107250981B (zh) 2014-10-06 2015-08-07 单页应用中的路由动态加载

Country Status (3)

Country Link
US (1) US9967309B2 (zh)
CN (1) CN107250981B (zh)
WO (1) WO2016057108A1 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106933640A (zh) * 2017-04-26 2017-07-07 携程旅游网络技术(上海)有限公司 在移动终端的浏览器内加载Web页面的方法及系统
CN107943468A (zh) * 2017-11-15 2018-04-20 千寻位置网络有限公司 基于nodejs的前端开发方法及系统、服务终端、存储器
US10839037B2 (en) 2018-09-21 2020-11-17 Microsoft Technology Licensing, Llc Connected application experience
CN113064662A (zh) * 2020-01-02 2021-07-02 北京沃东天骏信息技术有限公司 一种加载应用模块的方法、客户端和服务端
US11418621B2 (en) 2018-09-21 2022-08-16 Microsoft Technology Licensing, Llc Cloud-based composable data layer
US11636035B2 (en) 2020-07-31 2023-04-25 Microsoft Technology Licensing, Llc Persisted data cache service

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107800562B (zh) * 2017-02-16 2019-03-01 平安科技(深圳)有限公司 一种视图文件的路由配置方法和装置
CN108769211B (zh) * 2018-05-31 2022-04-12 康键信息技术(深圳)有限公司 客户端设备、网页的路由方法和计算机可读存储介质
US10846356B2 (en) * 2018-06-13 2020-11-24 At&T Intellectual Property I, L.P. Scalable whittled proxy execution for low-latency web over cellular networks
US10678600B1 (en) 2019-03-01 2020-06-09 Capital One Services, Llc Systems and methods for developing a web application using micro frontends
US11080354B2 (en) 2019-08-29 2021-08-03 Capital One Services, Llc Systems and methods for presenting web application content
US11553030B2 (en) * 2020-06-01 2023-01-10 Microsoft Technology Licensing, Llc Service worker configured to serve multiple single page applications
CN112965707A (zh) * 2021-03-24 2021-06-15 深圳市活力天汇科技股份有限公司 Web多应用单页生成方法、系统、计算机设备及介质
CN116595285B (zh) * 2023-07-19 2024-04-16 深圳复临科技有限公司 一种路由生成方法、装置、计算机设备及存储介质
CN117348859A (zh) * 2023-10-11 2024-01-05 山东未来网络研究院(紫金山实验室工业互联网创新应用基地) 一种基于vue项目的可视化路由管理方法及系统

Citations (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1402164A (zh) * 2001-08-29 2003-03-12 英业达股份有限公司 即时性电子商务订单回复系统及方法
US20030212883A1 (en) * 2002-05-09 2003-11-13 International Business Machines Corporation Method and apparatus for dynamically managing input/output slots in a logical partitioned data processing system
CN1826600A (zh) * 2003-06-30 2006-08-30 国际商业机器公司 改进万维网设备中超文本标记语言页面表现的方法和系统
US20070156845A1 (en) * 2005-12-30 2007-07-05 Akamai Technologies, Inc. Site acceleration with content prefetching enabled through customer-specific configurations
CN101057476A (zh) * 2004-08-17 2007-10-17 肖分析有限公司 用实时路由网络递送个人化内容的技术
CN101126977A (zh) * 2007-08-28 2008-02-20 激动集团股份有限公司 一种基于isapi的web静态页面生成方法
US20080086290A1 (en) * 2006-10-04 2008-04-10 Wilson Ian A Method for modeling task and workload
EP1480642B1 (en) * 2002-02-25 2008-11-26 Eli Lilly And Company Peroxisome proliferator activated receptor modulators
CN101510889A (zh) * 2009-04-03 2009-08-19 杭州华三通信技术有限公司 一种获取动态路由的方法和设备
CN201327659Y (zh) * 2008-11-06 2009-10-14 同方股份有限公司 可信刷卡装置
US20100094977A1 (en) * 2005-07-22 2010-04-15 At&T Intellectual Property I, L.P. Method for Managing Configuration Profiles of Network Elements Deployed in a Network
US20100115133A1 (en) * 2004-05-06 2010-05-06 Foundry Networks, Inc. Configurable geographic prefixes for global server load balancing
US20100169359A1 (en) * 2008-12-30 2010-07-01 Barrett Leslie A System, Method, and Apparatus for Information Extraction of Textual Documents
CN101884206A (zh) * 2007-10-04 2010-11-10 U-Man通用媒体接入网有限公司 使用分级参数控制协议的数字多媒体网络
CN101895574A (zh) * 2010-07-09 2010-11-24 苏州市数字城市工程研究中心有限公司 一种空间信息网络动态自主加载技术方案和系统
CN102043645A (zh) * 2009-10-20 2011-05-04 阿里巴巴集团控股有限公司 一种加载插件的方法及装置
CN102118299A (zh) * 2009-12-31 2011-07-06 中国电子科技集团公司第五十研究所 自适应动态路由方法
CN102143243A (zh) * 2010-10-28 2011-08-03 华为终端有限公司 动态路由处理方法和装置及其家庭网关
CN102308533A (zh) * 2010-06-28 2012-01-04 华为技术有限公司 对报文进行分类的方法及装置
CN102325188A (zh) * 2011-09-16 2012-01-18 北京新媒传信科技有限公司 在移动终端上实现网页浏览的方法和系统
CN102726030A (zh) * 2010-02-02 2012-10-10 瑞典爱立信有限公司 用于路由xcap请求的方法和设备
CN102916995A (zh) * 2011-08-05 2013-02-06 南京中兴新软件有限责任公司 应用托管方法及系统
US20130041970A1 (en) * 2011-08-11 2013-02-14 Sweekar Hillary Pinto Client side caching
CN103761136A (zh) * 2014-02-25 2014-04-30 上海斐讯数据通信技术有限公司 一种基于插件的数据模型动态加载的方法
CN103825826A (zh) * 2014-02-28 2014-05-28 杭州华三通信技术有限公司 一种动态路由的实现方法和装置

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5694546A (en) * 1994-05-31 1997-12-02 Reisman; Richard R. System for automatic unattended electronic information transport between a server and a client by a vendor provided transport software with a manifest list
US6076107A (en) * 1995-05-09 2000-06-13 International Business Machines Corporation Method for reducing SNMP instrumentation message flows
US6883034B1 (en) * 1995-06-23 2005-04-19 Cisco Technology, Inc. Method of resolving conflicts in access control lists in router by comparing elements in the lists based on subsumption relations
US6393486B1 (en) * 1995-06-23 2002-05-21 Cisco Technology, Inc. System and method using level three protocol information for network centric problem analysis and topology construction of actual or planned routed network
US6181692B1 (en) * 1998-09-03 2001-01-30 Genesys Telecommunications Laboratories Inc Method and apparatus for data routing, delivery, and authentication in a packet data network
US6993531B1 (en) * 1999-02-04 2006-01-31 Naas Aaron J System and method of routine navigation
WO2002071242A1 (en) * 2001-03-01 2002-09-12 Akamai Technologies, Inc. Optimal route selection in a content delivery network
US7555561B2 (en) * 2001-03-19 2009-06-30 The Aerospace Corporation Cooperative adaptive web caching routing and forwarding web content data broadcasting method
US7466710B1 (en) * 2001-08-24 2008-12-16 Cisco Technology, Inc. Managing packet voice networks using a virtual entity approach
US7126941B1 (en) * 2001-08-24 2006-10-24 Cisco Technology, Inc. Managing packet voice networks using a virtual switch approach
US7292541B1 (en) * 2004-01-28 2007-11-06 Novell, Inc. Methods and systems for unnumbered network link discovery
GB0722707D0 (en) * 2007-11-19 2007-12-27 St Microelectronics Res & Dev Cache memory
US7936754B2 (en) * 2008-12-12 2011-05-03 At&T Intellectual Property I, L.P. Methods and apparatus to dynamically store network routes for a communication network
US8260757B1 (en) * 2010-04-22 2012-09-04 Wal-Mart Stores, Inc. Data access layer
US9507971B2 (en) * 2010-11-05 2016-11-29 Barcode Graphics Inc. Systems and methods for barcode integration in packaging design and printing
US8694993B1 (en) * 2011-03-31 2014-04-08 Emc Corporation Virtualization platform for secured communications between a user device and an application server
US9679332B2 (en) * 2013-02-28 2017-06-13 Lg Electronics Inc. Apparatus and method for processing a multimedia commerce service
JP6264752B2 (ja) * 2013-06-06 2018-01-24 富士通株式会社 制御方法、制御装置および通信システム
US9244660B2 (en) * 2013-08-13 2016-01-26 Salesforce.Com, Inc. Responsive self-service website template
US9633380B2 (en) * 2013-09-04 2017-04-25 Volodymyr Zdorovtsov Method and system for third party brokered authentication of reciprocity of interest
US11336648B2 (en) * 2013-11-11 2022-05-17 Amazon Technologies, Inc. Document management and collaboration system
US20150281321A1 (en) * 2014-03-28 2015-10-01 Viachaslau Hrytsevich Real-time event monitoring and video surveillance web application based on data push
US10614155B2 (en) * 2014-04-01 2020-04-07 Adobe Inc. Single page application authoring in a content management system
US9455920B2 (en) * 2014-08-11 2016-09-27 Dell Products Lp Avoiding traffic loss due to route failures

Patent Citations (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1402164A (zh) * 2001-08-29 2003-03-12 英业达股份有限公司 即时性电子商务订单回复系统及方法
EP1480642B1 (en) * 2002-02-25 2008-11-26 Eli Lilly And Company Peroxisome proliferator activated receptor modulators
US20030212883A1 (en) * 2002-05-09 2003-11-13 International Business Machines Corporation Method and apparatus for dynamically managing input/output slots in a logical partitioned data processing system
CN1826600A (zh) * 2003-06-30 2006-08-30 国际商业机器公司 改进万维网设备中超文本标记语言页面表现的方法和系统
US20100115133A1 (en) * 2004-05-06 2010-05-06 Foundry Networks, Inc. Configurable geographic prefixes for global server load balancing
CN101057476A (zh) * 2004-08-17 2007-10-17 肖分析有限公司 用实时路由网络递送个人化内容的技术
US20100094977A1 (en) * 2005-07-22 2010-04-15 At&T Intellectual Property I, L.P. Method for Managing Configuration Profiles of Network Elements Deployed in a Network
US20070156845A1 (en) * 2005-12-30 2007-07-05 Akamai Technologies, Inc. Site acceleration with content prefetching enabled through customer-specific configurations
US20080086290A1 (en) * 2006-10-04 2008-04-10 Wilson Ian A Method for modeling task and workload
CN101126977A (zh) * 2007-08-28 2008-02-20 激动集团股份有限公司 一种基于isapi的web静态页面生成方法
CN101884206A (zh) * 2007-10-04 2010-11-10 U-Man通用媒体接入网有限公司 使用分级参数控制协议的数字多媒体网络
CN201327659Y (zh) * 2008-11-06 2009-10-14 同方股份有限公司 可信刷卡装置
US20100169359A1 (en) * 2008-12-30 2010-07-01 Barrett Leslie A System, Method, and Apparatus for Information Extraction of Textual Documents
CN101510889A (zh) * 2009-04-03 2009-08-19 杭州华三通信技术有限公司 一种获取动态路由的方法和设备
CN102043645A (zh) * 2009-10-20 2011-05-04 阿里巴巴集团控股有限公司 一种加载插件的方法及装置
CN102118299A (zh) * 2009-12-31 2011-07-06 中国电子科技集团公司第五十研究所 自适应动态路由方法
CN102726030A (zh) * 2010-02-02 2012-10-10 瑞典爱立信有限公司 用于路由xcap请求的方法和设备
CN102308533A (zh) * 2010-06-28 2012-01-04 华为技术有限公司 对报文进行分类的方法及装置
CN101895574A (zh) * 2010-07-09 2010-11-24 苏州市数字城市工程研究中心有限公司 一种空间信息网络动态自主加载技术方案和系统
CN102143243A (zh) * 2010-10-28 2011-08-03 华为终端有限公司 动态路由处理方法和装置及其家庭网关
CN102916995A (zh) * 2011-08-05 2013-02-06 南京中兴新软件有限责任公司 应用托管方法及系统
US20130041970A1 (en) * 2011-08-11 2013-02-14 Sweekar Hillary Pinto Client side caching
CN102325188A (zh) * 2011-09-16 2012-01-18 北京新媒传信科技有限公司 在移动终端上实现网页浏览的方法和系统
CN103761136A (zh) * 2014-02-25 2014-04-30 上海斐讯数据通信技术有限公司 一种基于插件的数据模型动态加载的方法
CN103825826A (zh) * 2014-02-28 2014-05-28 杭州华三通信技术有限公司 一种动态路由的实现方法和装置

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106933640A (zh) * 2017-04-26 2017-07-07 携程旅游网络技术(上海)有限公司 在移动终端的浏览器内加载Web页面的方法及系统
CN106933640B (zh) * 2017-04-26 2020-12-25 携程旅游网络技术(上海)有限公司 在移动终端的浏览器内加载Web页面的方法及系统
CN107943468A (zh) * 2017-11-15 2018-04-20 千寻位置网络有限公司 基于nodejs的前端开发方法及系统、服务终端、存储器
US10839037B2 (en) 2018-09-21 2020-11-17 Microsoft Technology Licensing, Llc Connected application experience
US11418621B2 (en) 2018-09-21 2022-08-16 Microsoft Technology Licensing, Llc Cloud-based composable data layer
CN113064662A (zh) * 2020-01-02 2021-07-02 北京沃东天骏信息技术有限公司 一种加载应用模块的方法、客户端和服务端
US11636035B2 (en) 2020-07-31 2023-04-25 Microsoft Technology Licensing, Llc Persisted data cache service

Also Published As

Publication number Publication date
WO2016057108A1 (en) 2016-04-14
US9967309B2 (en) 2018-05-08
US20160100030A1 (en) 2016-04-07
CN107250981B (zh) 2021-04-02

Similar Documents

Publication Publication Date Title
CN107250981A (zh) 单页应用中的路由动态加载
US20190222662A1 (en) Methods and Systems for Rewriting Scripts to Redirect Web Requests
TWI639132B (zh) 訊息中影像的傳送方法、執行此傳送方法的計算系統及用於此方法的儲存媒體
US8499099B1 (en) Converting data into addresses
US20210365579A1 (en) Providing web application components within remote systems
US20140344658A1 (en) Enhanced links in curation and collaboration applications
US20110167114A1 (en) Automatically synchronizing new contacts across multiple social networking sites
CN110019080B (zh) 数据访问方法和装置
US9087020B1 (en) Managing and retrieving content from a shared storage
EP3093809B1 (en) Systems and methods for state machine management
US20180121029A1 (en) Distributing a user interface for accessing files
CN107580013A (zh) 跨域请求数据的方法及装置
US20200153889A1 (en) Method for uploading and downloading file, and server for executing the same
CN105229639A (zh) 短词散列
CN114827634A (zh) 混合源架构中的图像变换
US11392394B2 (en) Systems and methods for in-application dynamic content loading
CN107741934A (zh) 页面处理方法及页面处理系统
CN105264526A (zh) 基于垂直的查询选择化
CN113448570A (zh) 数据处理方法、装置、电子设备及存储介质
KR102372434B1 (ko) 노출 화면 특성 기반의 콘텐츠 노출 영역 설정 방법, 장치 및 시스템
US20200097517A1 (en) Link corrections by cognitive analysis of web resources
US11775261B2 (en) Dynamic process model palette
CN115344688A (zh) 业务数据展示方法、装置、电子设备和计算机可读介质
US20190065009A1 (en) Navigation system for a graphical user interface
CN111988405B (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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20180205

Address after: Washington, USA

Applicant after: Microsoft technical authorization limited liability company

Address before: American California

Applicant before: LINKEDIN CORPORATION

CB02 Change of applicant information
CB02 Change of applicant information

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington, USA

Applicant before: Microsoft technical authorization limited liability company

GR01 Patent grant
GR01 Patent grant