一种web应用的状态管理方法及装置与流程

文档序号:21931044发布日期:2020-08-21 14:55阅读:169来源:国知局
一种web应用的状态管理方法及装置与流程

本文涉及web应用管理技术,尤指一种web应用的状态管理方法及装置。



背景技术:

在实际生活中,现阶段web浏览器不只是用来展示一个网页。在很多时候借助web浏览器就能实现一个web应用。

相关技术中,每个web应用都会定义一套状态管理方法以实现对应web应用的状态管理。

然而,由于需要针对每个web应用都定义一套状态管理方法,因此十分麻烦,不利用web应用的状态管理。



技术实现要素:

本申请提供了一种web应用的状态管理方法及装置,能够使得所有web应用调用一个类进行状态管理,从而方便web应用的状态管理。

本申请提供了一种web应用的状态管理方法,包括:

浏览器上的web应用通过通用历史类提供的数据写入接口保存历史状态数据;

所述web应用接收到状态变化指令时,通过所述通用历史类提供的数据读取接口获取保存的历史状态数据并执行相应操作。

所述浏览器上的web应用通过通用历史类提供的数据写入接口保存历史状态数据之后,还包括:

所述web应用通过所述通用历史类提供的数据删除接口删除保存的历史状态数据。

所述状态变化指令包括以下至少之一:回退至上一步历史状态数据指令、前进至下一步历史状态数据指令、获得后退历史状态指令和获得前进历史状态指令。

所述通用历史类定义有基本配置信息,所述基本配置信息包括以下至少之一:所述web应用的历史状态数据的存储模式、所述web应用的历史状态数据的最大存储步数;其中,所述存储模式包括:内存存储模式和storage存储模式。

所述基本配置信息还包括以下至少之一:与所述浏览器保持同步的服务器的地址以及所述浏览器和所述服务器之间的历史状态数据的间隔同步步数。

所述通用历史类还定义有内部属性信息,所述内部属性信息包括以下至少之一:用于指向当前历史状态数据的索引和历史状态数据列表;其中,所述历史状态数据列表用于当web应用的历史状态数据的存储模式为内存存储模式时存储历史状态数据。

当所述通用历史类定义的基本配置信息中包括所述浏览器和服务器之间的历史状态数据的间隔同步步数,所述内部属性还包括:所述浏览器和所述服务器的历史状态数据的未同步步数。

所述浏览器上的web应用通过通用历史类提供的数据写入接口保存历史状态数据之后,或所述web应用通过所述通用历史类提供的数据删除接口删除保存的历史状态数据之后,还包括:

当所述浏览器和所述服务器未同步步数大于所述浏览器和服务器之间的历史状态数据的间隔同步步数,所述浏览器获取自身存储的最新历史数据的时间戳和所述服务器存储的最新历史数据的时间戳;

当所述浏览器存储的最新历史数据的时间戳早于所述服务器存储的最新历史数据的时间戳,所述浏览器用所述服务器的所有历史数据同步自身的所有历史数据;

当所述浏览器存储的最新历史数据的时间戳晚于所述服务器存储的最新历史数据的时间戳,所述浏览器将自身存储的所有历史数据同步于所述服务器上。

所述通用历史类通过提供的接口传递的web应用标识和实例标识来区别不同web应用不同实例的历史状态数据,以为多个web应用的多个实例保存历史数据。

本申请还提供了一种终端,包括:存储器和处理器,所述存储器中存储有浏览器的程序,所述浏览器的程序被所述处理器执行时执行如上述任一项所述的web应用的状态管理方法。

与相关技术相比,上述技术方案中的一个技术方案具有如下优点或有益效果:由于浏览器上的web应用都能通过通用历史类进行历史状态数据的写入、获取以及与状态变化指令相应的操作,因此通过调用一个类使得所有web应用实现了状态管理,从而方便了web应用的状态管理。

本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本申请技术方案的理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。

图1为本申请实施例提供的一种web应用的状态管理方法的流程示意图;

图2为本申请实施例提供的一种写入历史状态数据的过程示意图。

具体实施方式

本申请描述了多个实施例,但是该描述是示例性的,而不是限制性的,并且对于本领域的普通技术人员来说显而易见的是,在本申请所描述的实施例包含的范围内可以有更多的实施例和实现方案。尽管在附图中示出了许多可能的特征组合,并在具体实施方式中进行了讨论,但是所公开的特征的许多其它组合方式也是可能的。除非特意加以限制的情况以外,任何实施例的任何特征或元件可以与任何其它实施例中的任何其他特征或元件结合使用,或可以替代任何其它实施例中的任何其他特征或元件。

本申请包括并设想了与本领域普通技术人员已知的特征和元件的组合。本申请已经公开的实施例、特征和元件也可以与任何常规特征或元件组合,以形成由权利要求限定的独特的发明方案。任何实施例的任何特征或元件也可以与来自其它发明方案的特征或元件组合,以形成另一个由权利要求限定的独特的发明方案。因此,应当理解,在本申请中示出和/或讨论的任何特征可以单独地或以任何适当的组合来实现。因此,除了根据所附权利要求及其等同替换所做的限制以外,实施例不受其它限制。此外,可以在所附权利要求的保护范围内进行各种修改和改变。

此外,在描述具有代表性的实施例时,说明书可能已经将方法和/或过程呈现为特定的步骤序列。然而,在该方法或过程不依赖于本文所述步骤的特定顺序的程度上,该方法或过程不应限于所述的特定顺序的步骤。如本领域普通技术人员将理解的,其它的步骤顺序也是可能的。因此,说明书中阐述的步骤的特定顺序不应被解释为对权利要求的限制。此外,针对该方法和/或过程的权利要求不应限于按照所写顺序执行它们的步骤,本领域技术人员可以容易地理解,这些顺序可以变化,并且仍然保持在本申请实施例的精神和范围内。

本申请实施例提供了一种web应用的状态管理方法,如图1所示,该方法包括:

步骤101、浏览器上的web应用通过通用历史类提供的数据写入接口保存历史状态数据。

在一种示例性实例中,通用指的是适用于各种不同的web应用。

在一种示例性实例中,通用历史类提供的数据写入接口可以命名为push(),每调用一次该接口则可以将一条历史状态数据写入。

步骤102、web应用接收到状态变化指令时,通过通用历史类提供的数据读取接口获取保存的历史状态数据并执行相应操作。

在一种示例性实例中,通用历史类提供的数据读取接口可以命名为getalldata()。

本申请实施例提供的web应用的状态管理方法,由于浏览器上的web应用都能通过通用历史类进行历史状态数据的写入、获取以及与状态变化指令相应的操作,因此通过调用一个类使得所有web应用实现了状态管理,从而方便了web应用的状态管理。

在一种示例性实例中,浏览器上的web应用通过通用历史类提供的数据写入接口保存历史状态数据之后,还包括:

web应用通过通用历史类提供的数据删除接口删除保存的历史状态数据。

在一种示例性实例中,通用历史类提供的数据删除接口可以命名为clear()。

在一种示例性实例中,状态变化指令包括以下至少之一:回退至上一步历史状态数据指令、前进至下一步历史状态数据指令、获得后退历史状态指令和获得前进历史状态指令。

在一种示例性实例中,回退至上一步历史状态数据指令可以命名为goback();前进至下一步历史状态数据指令可以命名为goforward();获得后退历史状态指令可以命名为getbackstatus(),其中,getbackstatus()存在返回值,返回true或者false,true表示可以进行后退,false表示不能进行后退;获得前进历史状态指令可以命名为getforwardstatus(),其中,getforwardstatus()存在返回值,返回true或者false,true表示可以进行前进,false表示不能进行前进。

在一种示例性实例中,浏览器上的web应用通过通用历史类提供的数据写入接口保存历史状态数据,当用户下达回退至上一步历史状态数据指令web应用接收到状态变化指令时,web应用通过通用历史类提供的数据读取接口获取保存的历史状态数据,进行相应操作以使得自动的状态回退至上一步。

在一种示例性实例中,通用历史类定义有基本配置信息,基本配置信息包括以下至少之一:web应用的历史状态数据的存储模式、web应用的历史状态数据的最大存储步数;其中,存储模式包括:内存存储模式和storage存储模式。

在一种示例性实例中,默认存储到内存中,但是如果历史状态数据的数据量比较大或者用户要求在浏览器刷新或者重新进入应用的时候历史状态数据不丢失时可以选择storage存储。

在一种示例性实例中,web应用的历史状态数据的存储模式可以表示为“storagemode:”,web应用的历史状态数据的最大存储步数可以表示为“maxsize:”。

在一种示例性实例中,基本配置信息还包括以下至少之一:与浏览器保持同步的服务器的地址以及浏览器和服务器之间的历史状态数据的间隔同步步数。

在一种示例性实例中,与浏览器保持同步的服务器的地址可以表示为“remoteaddress:”,服务器之间的历史状态数据的间隔同步步数可以表示为“syncstep:”。

在一种示例性实例中,通用历史类还定义有内部属性信息,内部属性信息包括以下至少之一:用于指向当前历史状态数据的索引和历史状态数据列表;其中,历史状态数据列表用于当web应用的历史状态数据的存储模式为内存存储模式时存储历史状态数据。

在一种示例性实例中,用于指向当前历史状态数据的索引可以表示为“historyindex:”,用于指向当前历史状态数据的索引和历史状态数据列表可以表示为“historylist:[]”。

在一种示例性实例中,回退至上一步历史状态数据指令即goback(),以及前进至下一步历史状态数据指令即goforward()是通过用于指向当前历史状态数据的索引即historyindex找到相应历史状态数据的,比如回退至上一步历史状态数据则historyindex减1,然后再返回historyindex减1后的历史状态数据;前进至下一步历史状态数据则historyindex加1,然后再返回historyindex加1后的历史状态数据;同时还可以增加了相应的边界判断,比如超出边界的时候则返回一个空数据。

在一种示例性实例中,如果选择历史状态数据存储在内存中,那么历史状态数据实际存储在通用历史类的内部属性,即历史状态数据列表中;如果选择历史状态数据存储在storage中,则调用localforage开源组件存储到storage中,其中,localforage会根据浏览器进行判断,如果浏览器支持indexeddb,则采用indexddb存储,indexeddb能突破5m的存储大小限制。

在一种示例性实例中,在基板配置信息包括web应用的历史状态数据的最大存储步数和用于指向当前历史状态数据的索引的情况下,当每执行一次push方法时进行如下判断:如果写入新的历史状态数据后历史状态数据的步数是否超过web应用的历史状态数据的最大存储步数;如果未超过最大存储步数,直接进行新的历史状态数据的写入;如果超过最大存储步数,则移除最早一步的历史状态数据,然后再保存最新一步的历史状态数据,具体可以通过以下代码实现:

在一种示例性实例中,假设配置的历史状态数据的最大存储步数为30步,分别以1、2…30表示,如果写入新的历史状态数据后历史状态数据的步数大于30步,那么将最早一步即第1步的历史状态数据移除,然后再保存最新一步即第31步的历史状态数据,其写入历史状态数据的过程示意图可以如图2所示。

在一种示例性实例中,当通用历史类定义的基本配置信息中包括浏览器和服务器之间的历史状态数据的间隔同步步数,内部属性还包括:浏览器和服务器的历史状态数据的未同步步数。

在一种示例性实例中,浏览器和服务器的历史状态数据的未同步步数可以表示为“nosyncstep:”。

在一种示例性实例中,浏览器上的web应用通过通用历史类提供的数据写入接口保存历史状态数据之后,或web应用通过通用历史类提供的数据删除接口删除保存的历史状态数据之后,还包括:

当浏览器和服务器未同步步数大于浏览器和服务器之间的历史状态数据的间隔同步步数,浏览器获取自身存储的最新历史数据的时间戳和服务器存储的最新历史数据的时间戳。

当浏览器存储的最新历史数据的时间戳早于服务器存储的最新历史数据的时间戳,浏览器用服务器的所有历史数据同步自身的所有历史数据。

当浏览器存储的最新历史数据的时间戳晚于服务器存储的最新历史数据的时间戳,浏览器将自身存储的所有历史数据同步于服务器上。

在一种示例性实例中,每次写入新的历史状态数据(即push新的历史状态数据)的时候浏览器和服务器的历史状态数据的未同步步数(即nosyncstep)加1,当浏览器和服务器的历史状态数据的未同步步数(即nosyncstep)大于定义的服务器之间的历史状态数据的间隔同步步数(即syncstep)时,开始同步,如果同步成功浏览器和服务器的历史状态数据的未同步步数(即nosyncste)清0。

在一种示例性实例中,同步采用ajax请求,每次同步时都对浏览器和服务器两侧的历史状态数据进行md5校验,从而保证数据的完整性,防止历史状态数据在同步前被篡改。

在一种示例性实例中,用最新历史数据的时间戳较晚一侧的历史状态数据覆盖最新历史数据的时间戳较早一侧的历史状态数据,一方面可以将新的历史状态数据备份到服务器侧上,另一方面当用户更换新的浏览器时从服务器侧将历史状态数据备份过来可以获得用户之前在旧的浏览器上针对web应用所作出的操作。

在一种示例性实例中,通用历史类通过提供的接口传递的web应用标识和实例标识来区别不同web应用不同实例的历史状态数据,以为多个web应用的多个实例保存历史数据。

在一种示例性实例中,可以通过以下方式对实例应用通用历史类,其中,key表示当前实例的唯一标识:

constapphistory=newhistory(key,{

//配置信息

})

本申请实施例还提供了一种终c端,包括:存储器和处理器,所述存储器中存储有浏览器的程序,所述浏览器的程序被所述处理器执行时执行如上述任一实施例描述的方法。

本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1