一种动态网页更新方法及装置制造方法及图纸

技术编号:13002783 阅读:62 留言:0更新日期:2016-03-10 14:34
本申请公开了一种动态网页更新方法和装置,所述方法包括:数据集中发生变化的数据项通过该数据项的节点祖先,逐层向上发送数据变化通知直至所述数据集的根节点;所述根节点作为顶级对象向所述动态网页转发来自其子节点的所述数据变化通知;根据所述数据变化通知,更新所述动态网页中与所述数据项关联的网页元素。采用本申请提供的方法,每个发生变化的数据项都会抛出事件,使得顶级对象能够获取变化的数据项,从而能够针对动态网页进行细颗粒度的控制,无需为每个数据项分别编写控制代码,有效减少开发人员工作量;通过在动态网页中使用自定义属性,使得当动态网页监听到数据变化时,只需解析特定的白名单语言,从而达到提高安全性的效果。

【技术实现步骤摘要】

本申请涉及网络数据管理领域,具体涉及一种动态网页更新方法和装置。
技术介绍
在数据驱动的应用系统中,当数据产生变化时,视图与数据之间能够实现联动,即 视图实时反映数据的变化。视图与数据之间实现联动有两种方式,一种为根据数据的变化, 对视图进行粗颗粒度的控制,即当某个数据变化时,需要更新整个视图;另一种为根据数据 的变化,对视图进行细颗粒度的控制,即当某个数据变化时,只需更新视图中与该数据相关 的部分,而无需更新整个视图。可见,根据数据的变化,对视图进行细颗粒度的控制,能够节 约系统资源、节省网络流量,并且提高了用户体验。 -种非常常见的根据数据对视图进行控制的场合,是根据数据的变化对动态网页 中与该数据关联的网页元素进行更新,视图即动态网页。 常用的根据数据的变化对动态网页进行细颗粒度的控制,包括两方面处理:一方 面,对于动态网页的内容更新,需要为动态网页中每一个数据编写一段控制代码,使得当某 个数据变化时,只需更新动态网页中与该数据相关的部分;另一方面,对于动态网页的渲 染,仍然需要编写与渲染逻辑相关的代码。可见,采用这种方式,既要编写大量的控制代码 更新动态网页的内容,还要编写大量的渲染逻辑代码对动态网页进行渲染,因而存在编码 效率低的问题。 为了解决编写这些控制代码所带来的效率低的问题,现在一般通过特殊的语法让 动态网页与数据之间实现联动,特殊的语法是指在HTML文件中嵌套JavaScript语句,并且 标明网页元素中自定义属性与对应数据之间的关联关系。采用这种特殊的语法,能够通过 newFunction的方式生成更新的字符串,从而达到操作数据即更新动态网页的目的,实现 针对视图的细颗粒度的控制。通过newFunction的方式生成更新的字符串的过程为:采 用newFunction的方式,通过JavaScript原生语言对其进行编译,得到一个JavaScript 函数,该函数对于发生变化的数据,生成一个字符串,字符串包括发生变化的数据值和嵌套 的HTML代码片段。采用这种方式,使得无需控制代码即可对动态网页进行渲染。因此,相 对于采用标准语法的方式而言,采用特殊语法的方式对于动态网页的渲染更加方便。但是, 由于newFunction方式实现的功能是有限的,因而仍然需要为每一个数据编写一段控制代 码,才能实现细颗粒度控制动态网页的内容更新。而且,采用这种方式时,由于在动态网页 中能够运行JavaScript原生语言,因此恶意Web用户能够将代码植入到提供给其它用户使 用的页面中,引起跨站脚本攻击,由此带来不安全的问题。 因此,现有技术中存在编码效率低且不安全的问题。 申请内容 本申请提供一种更新视图的方法和装置,以解决现有技术存在编码效率低且不安 全的问题。 本申请提供一种更新视图的方法,包括: 数据集中发生变化的数据项通过该数据项的节点祖先,逐层向上发送数据变化通 知直至所述数据集的根节点,其中,所述节点祖先中的各个节点向其父节点发送的所述数 据变化通知至少包括:该节点的名和所述数据项在该节点的子节点处的路径名;所述根节 点作为顶级对象; 所述顶级对象向所述动态网页转发来自其子节点的所述数据变化通知; 根据所述数据变化通知,更新所述动态网页中与所述数据项关联的网页元素; 其中,所述数据集的结构是树,所述数据项是所述数据集的叶节点。 可选的,在所述数据集中发生变化的数据项通过该数据项的节点祖先,逐层向上 发送数据变化通知直至所述数据集的根节点之前,还包括: 将所述数据集中所有非叶节点构建为可监听的对象,所述数据项作为其父节点的 属性; 将所述动态网页注册为所述顶级对象的观察者。 可选的,所述将所述数据集中所有非叶节点构建为可监听的对象,所述数据项作 为其父节点的属性,是指为所述数据集中各个非叶节点分配数据变化事件,当所述数据项 发生变化时,所述数据项的父节点的数据变化事件被触发,并逐层向上触发所述数据项的 所述节点祖先,直至所述根节点的数据变化事件被触发;当节点触发其父节点的数据变化 事件时,向其父节点发送所述数据变化通知;当所述顶级对象的数据变化事件被触发后,所 述顶级对象向其观察者发送所述数据变化通知。 可选的,在所述数据集中发生变化的数据项通过该数据项的节点祖先,逐层向上 发送数据变化通知直至所述数据集的根节点之前,还包括: 获取所述动态网页中所有动态数据与所述网页元素之间的对应关系,以及所述动 态数据在所述网页元素中的使用方式; 其中,所述动态数据是指数据项和计算数据,所述计算数据是指至少两个所述数 据项的计算值,若所述数据项的类型为数字,则计算值是指数值运算的值;若所述数据项的 类型为字符串,则计算值是指字符串操作的值。 可选的,所述获取所述动态网页中所有动态数据与所述网页元素之间的对应关 系,以及所述动态数据在所述网页元素中的使用方式,包括如下步骤: 获取所述动态网页中所有所述网页元素; 遍历各个所述网页元素,提取包括自定义属性的网页元素,对于遍历过程中经过 的每一个包括自定义属性的网页元素,解析该网页元素,获取与该网页元素关联的所述动 态数据,以及所述动态数据在所述网页元素中的使用方式;该网页元素和与其关联的所述 动态数据之间形成所述动态数据与网页元素之间的对应关系。 可选的,所述动态数据在所述网页元素中的使用方式采取如下方式之一:所述动 态数据作为所述网页元素的属性;所述动态数据作为所述网页元素的内容。 可选的,还包括: 所述顶级对象向所有计算数据转发来自其子节点的所述数据变化通知; 根据所述数据变化通知,更新与所述发生变化的数据项有依赖关系的所有计算数 据,作为更新的计算数据; 各个所述更新的计算数据分别向所述顶级对象发送计算数据的名; 所述顶级对象向所述动态网页发送计算数据变化通知,所述计算数据变化通知包 括所述更新的计算数据的名; 根据所述计算数据变化通知,更新所述动态网页中与所述更新的计算数据关联的 网页元素。 可选的,在所述顶级对象向所有计算数据转发来自其子节点的所述数据变化通知 之前,还包括: 获取所有与所述动态网页相关的计算数据; 将各个所述计算数据构建为可监听的对象,并将所述计算数据作为所述顶级对象 的子节点; 将各个所述计算数据注册为所述顶级对象的观察者。 可选的,所述将各个所述计算数据构建为可监听的对象,并将所述计算数据作为 所述顶级对象的子节点是指,为所述计算数据分配数据变化事件,当所述计算数据发生变 化时,该数据变化事件被触发,所述计算数据向所述顶级对象发送所述计算数据的名,并触 发所述顶级对象的数据变化事件。 可选的,所述根据所述数据变化通知,更新与所述发生变化的数据项有依赖关系 的所有所述计算数据包括: 根据所述数据变化通知,获取所述发生变化的数据项的路径名; 获取各个所述计算数据与所述数据项之间的依赖关系; 根据所述依赖关系,获取与所述发生变化的数据项有依赖关系的所有所述计算数 据,作为待更新的计算数据; 根据所述发生变化的数据项,更新所述待更新的计算数据。 可选的,所述计算数据与所述数据项之间的依赖关系采用如下步骤生成: 读取所述计算数据的计算公式,获取所述计算公式中所有数据项; 遍历各个数据项,获取所述数据项的路径名本文档来自技高网...

【技术保护点】
一种动态网页更新方法,其特征在于,包括:数据集中发生变化的数据项通过该数据项的节点祖先,逐层向上发送数据变化通知直至所述数据集的根节点,其中,所述节点祖先中的各个节点向其父节点发送的所述数据变化通知至少包括:该节点的名和所述数据项在该节点的子节点处的路径名;所述根节点作为顶级对象;所述顶级对象向所述动态网页转发来自其子节点的所述数据变化通知;根据所述数据变化通知,更新所述动态网页中与所述数据项关联的网页元素;其中,所述数据集的结构是树,所述数据项是所述数据集的叶节点。

【技术特征摘要】

【专利技术属性】
技术研发人员:葛星
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1