【技术实现步骤摘要】
局部页面动态渲染方法及装置
本说明书实施例涉及互联网
,尤其涉及一种局部页面动态渲染方法及装置。
技术介绍
现有技术中的应用程序为了给用户提供优质的体验,涉及需要功能页面,页面中的某些元素需要进行局部更新,比如:时间元素、天气元素等。针对页面中局部元素的更新,可采用MVVM框架方案中的React系列方法,使用了基于JSX语法的DOMDiff方案,其将数据和视图进行绑定,当数据变更时生成新视图和老视图对比,进行局部更新。React系方法中,因实际Diff方法过程需要,所有可变数据在DOM中以SPAN标签包裹(老版)或注释标签包裹(新版),这会对原有DOM造成侵入、多余数据、多余变更侦听的缺点。
技术实现思路
本说明书实施例提供及一种局部页面动态渲染方法及装置。第一方面,本说明书实施例提供一种局部页面动态渲染方法,包括:在检测到目标页面中存在数据变更情况下,获得与变更前的视图页面的第一虚拟DOM树以及变更后的视图页面的第二虚拟DOM树,其中,针对所述虚拟DOM树和所述第二虚拟DOM树创建有同一虚拟索引,针对真实DOM树创建有真实索引;按虚拟索引顺序依次对所述第一虚拟DOM树中节点与所述第二虚拟DOM树中的节点进行对比,确定所述第一虚拟DOM树和所述第二虚拟DOM树中在当前虚拟索引位置处的节点的第一变更状态,以及确定所述第一虚拟DOM树和所述第二虚拟DOM树中在前一虚拟索引位置处的节点的第二变更状态,根据相邻两个虚拟索引位置处节点的变更状态与预设渲染操作间预设的对应关系,确定与所述第二变更状态至所述第一变更状态对应的目标预设渲染操作,按所述目标预设渲染操作对所 ...
【技术保护点】
1.一种局部页面动态渲染方法,包括:在检测到目标页面中存在数据变更情况下,获得与变更前的视图页面的第一虚拟DOM树以及变更后的视图页面的第二虚拟DOM树,其中,针对所述虚拟DOM树和所述第二虚拟DOM树创建有同一虚拟索引,针对真实DOM树创建有真实索引;按虚拟索引顺序依次对所述第一虚拟DOM树中节点与所述第二虚拟DOM树中的节点进行对比,确定所述第一虚拟DOM树和所述第二虚拟DOM树中在当前虚拟索引位置处的节点的第一变更状态,以及确定所述第一虚拟DOM树和所述第二虚拟DOM树中在前一虚拟索引位置处的节点的第二变更状态,根据相邻两个虚拟索引位置处节点的变更状态与预设渲染操作间预设的对应关系,确定与所述第二变更状态至所述第一变更状态对应的目标预设渲染操作,按所述目标预设渲染操作对所述真实DOM树中对应真实索引位置处的节点进行渲染,直至完成最后一个虚拟索引位置所对应的真实索引位置处的节点的渲染。
【技术特征摘要】
1.一种局部页面动态渲染方法,包括:在检测到目标页面中存在数据变更情况下,获得与变更前的视图页面的第一虚拟DOM树以及变更后的视图页面的第二虚拟DOM树,其中,针对所述虚拟DOM树和所述第二虚拟DOM树创建有同一虚拟索引,针对真实DOM树创建有真实索引;按虚拟索引顺序依次对所述第一虚拟DOM树中节点与所述第二虚拟DOM树中的节点进行对比,确定所述第一虚拟DOM树和所述第二虚拟DOM树中在当前虚拟索引位置处的节点的第一变更状态,以及确定所述第一虚拟DOM树和所述第二虚拟DOM树中在前一虚拟索引位置处的节点的第二变更状态,根据相邻两个虚拟索引位置处节点的变更状态与预设渲染操作间预设的对应关系,确定与所述第二变更状态至所述第一变更状态对应的目标预设渲染操作,按所述目标预设渲染操作对所述真实DOM树中对应真实索引位置处的节点进行渲染,直至完成最后一个虚拟索引位置所对应的真实索引位置处的节点的渲染。2.根据权利要求1所述的方法,所述方法还包括:在对所述目标页面初始化渲染后,获得初始页面的初始虚拟DOM树;遍历所述初始虚拟DOM树,确定所述初始虚拟DOM树中所包含的空白变量;在每个所述空白变量位置处插入空文本节点。3.根据权利要求2所述的方法,所述空白变量包括空字符串、null字段、空数组和undefined字段中的任意一种。4.根据权利要求1所述的方法,所述根据相邻两个虚拟索引位置处节点的变更状态与预设渲染操作间预设的对应关系,确定与所述第二变更状态至所述第一变更状态对应的目标预设渲染操作,按所述目标预设渲染操作对所述真实DOM树中对应真实索引位置处的节点进行渲染,包括:如果所述第二变更状态至所述第一变更状态为所述初始状态跳转至所述文本节点至文本节点变更状态或所述DOM节点至DOM节点变更状态跳转至所述文本节点至文本节点变更状态,创建索引记录,所述索引记录中记录有虚拟索引内容,虚拟索引内容为所述第二虚拟DOM树中当前虚拟索引位置处的文本内容,如果所述第二虚拟DOM树中当前虚拟索引位置处的文本内容与所述第一虚拟DOM树中当前虚拟索引位置处的文本内容不一致,标记所述真实DOM树中当前真实索引位置的内容需要更新。5.根据权利要求1所述的方法,所述根据相邻两个虚拟索引位置处节点的变更状态与预设渲染操作间预设的对应关系,确定与所述第二变更状态至所述第一变更状态对应的目标预设渲染操作,按所述目标预设渲染操作对所述真实DOM树中对应真实索引位置处的节点进行渲染,包括:如果所述第二变更状态至所述第一变更状态为所述文本节点至文本节点变更状态跳转至所述文本节点至文本节点变更状态,创建索引记录,所述索引记录中记录的虚拟索引内容为在所述第二虚拟DOM树中当前虚拟索引位置处的文本节点的内容与相邻的上一个文本节点对应的索引记录中的虚拟索引内容的第一合并内容,确定在所述第一虚拟DOM树中包括所述当前虚拟索引位置处的节点在内的前面连续的文本节点对应的第二合并内容,如果所述第一合并内容和所述第二合并内容不一致,标记所述真实DOM树当前真实索引位置的内容需要更新。6.根据权利要求1所述的方法,所述根据相邻两个虚拟索引位置处节点的变更状态与预设渲染操作间预设的对应关系,确定与所述第二变更状态至所述第一变更状态对应的目标预设渲染操作,按所述目标预设渲染操作对所述真实DOM树中对应真实索引位置处的节点进行渲染,包括:如果所述第二变更状态至所述第一变更状态为所述文本节点至文本节点变更状态跳转至所述文本节点至DOM节点变更状态,获得所述当前虚拟索引位置的前一个虚拟索引位置对应的索引记录,如果所述索引记录中标记所述真实DOM树当前真实索引位置的内容需要更新,则将所述真实DOM树中当前真实索引位置处的文本节点内容变更为所述索引记录中的虚拟索引内容,将所述真实DOM树的当前真实索引位置加1,将所述第二虚拟DOM树中的所述当前虚拟索引位置处的DOM节点插入所述真实DOM树的当前真实索引位置,将所述真实DOM树的当前真实索引位置加1。7.根据权利要求1所述的方法,所述根据相邻两个虚拟索引位置处节点的变更状态与预设渲染操作间预设的对应关系,确定与所述第二变更状态至所述第一变更状态对应的目标预设渲染操作,按所述目标预设渲染操作对所述真实DOM树中对应真实索引位置处的节点进行渲染,包括:如果所述第二变更状态至所述第一变更状态为所述文本节点至文本节点变更状态跳转至所述DOM节点至文本节点变更状态,获得所述当前虚拟索引位置的前一虚拟索引位置对应的索引记录,如果所述索引记录中标记所述真实DOM树当前真实索引位置的内容需要更新,则将所述真实DOM树中当前真实索引位置处的文本节点的内容变更为所述索引记录中的虚拟索引内容,移除所述真实DOM树的当前真实索引位置加1处的节点。8.根据权利要求1所述的方法,所述根据相邻两个虚拟索引位置处节点的变更状态与预设渲染操作间预设的对应关系,确定与所述第二变更状态至所述第一变更状态对应的目标预设渲染操作,按所述目标预设渲染操作对所述真实DOM树中对应真实索引位置处的节点进行渲染,包括:如果所述第二变更状态至所述第一变更状态为所述文本节点至文本节点变更状态跳转至所述DOM节点至DOM节点变更状态或所述DOM节点至文本节点变更状态跳转至所述DOM节点至文本节点变更状态,将所述真实DOM树的当前真实索引位置加1,如果所述第二虚拟DOM树中当前虚拟索引位置处的DOM节点与所述第一虚拟DOM树中当前虚拟索引位置处的DOM节点不一致,将所述真实DOM树的当前真实索引位置处的DOM节点更新为所述第二虚拟DOM树中当前虚拟索引位置处的DOM节点,将所述真实DOM树的当前真实索引位置加1。9.根据权利要求1所述的方法,所述根据相邻两个虚拟索引位置处节点的变更状态与预设渲染操作间预设的对应关系,确定与所述第二变更状态至所述第一变更状态对应的目标预设渲染操作,按所述目标预设渲染操作对所述真实DOM树中对应真实索引位置处的节点进行渲染,包括:如果所述第二变更状态至所述第一变更状态为所述初始状态跳转至所述文本节点至DOM节点变更状态或所述DOM节点至DOM节点变更状态跳转至所述文本节点至DOM节点变更状态,将所述真实DOM树中当前真实索引位置对应的文本节点变更为所述第二虚拟DOM树中当前虚拟索引位置处的DOM节点,将所述真实DOM树的当前真实索引位置加1。10.根据权利要求1所述的方法,所述根据相邻两个虚拟索引位置处节点的变更状态与预设渲染操作间预设的对应关系,确定与所述第二变更状态至所述第一变更状态对应的目标预设渲染操作,按所述目标预设渲染操作对所述真实DOM树中对应真实索引位置处的节点进行渲染,包括:如果所述第二变更状态至所述第一变更状态为所述文本节点至DOM节点变更状态跳转至所述文本节点至DOM节点变更状态,在所述真实DOM树的当前真实索引位置处插入所述第二虚拟DOM树中当前虚拟索引位置处的DOM节点,将所述真实DOM树的当前真实索引位置加1。11.根据权利要求1所述的方法,所述根据相邻两个虚拟索引位置处节点的变更状态与预设渲染操作间预设的对应关系,确定与所述第二变更状态至所述第一变更状态对应的目标预设渲染操作,按所述目标预设渲染操作对所述真实DOM树中对应真实索引位置处的节点进行渲染,包括:如果所述第二变更状态至所述第一变更状态为所述文本节点至DOM节点变更状态跳转至所述文本节点至文本节点变更状态,在所述真实DOM树的当前真实索引位置处插入所述第二虚拟DOM树中当前虚拟索引位置处的文本节点,创建索引记录,所述索引记录中的虚拟索引内容记录为第二虚拟DOM树中当前虚拟索引位置处的文本节点的内容,如果所述第二虚拟DOM树中当前虚拟索引位置处的文本内容与所述第一虚拟DOM树中当前虚拟索引位置处的文本内容不一致,标记所述真实DOM树中当前真实索引位置的内容需要更新。12.根据权利要求1所述的方法,所述根据相邻两个虚拟索引位置处节点的变更状态与预设渲染操作间预设的对应关系,确定与所述第二变更状态至所述第一变更状态对应的目标预设渲染操作,按所述目标预设渲染操作对所述真实DOM树中对应真实索引位置处的节点进行渲染,包括:如果所述第二变更状态至所述第一变更状态为所述文本节点至DOM节点变更状态跳转至所述DOM节点至文本节点变更状态或所述第二变更状态至所述第一变更状态为所述初始状态变更状态跳转至所述DOM节点至文本节点变更状态或所述DOM节点至DOM节点变更状态跳转至所述DOM节点至文本节点变更状态,将所述真实DOM树中当前真实索引位置对应的DOM节点变更为所述第二虚拟DOM树中当前虚拟索引位置处的文本节点,创建索引记录,所述索引记录中的虚拟索引内容记录为所述第二虚拟DOM树中当前虚拟索引位置处的文本节点的内容。13.根据权利要求1所述的方法,所述根据相邻两个虚拟索引位置处节点的变更状态与预设渲染操作间预设的对应关系,确定与所述第二变更状态至所述第一变更状态对应的目标预设渲染操作,按所述目标预设渲染操作对所述真实DOM树中对应真实索引位置处的节点进行渲染,包括:如果所述第二变更状态至所述第一变更状态为所述文本节点至DOM节点变更状态跳转至所述DOM节点至DOM节点变更状态或所述初始状态跳转至所述DOM节点至DOM节点变更状态或所述DOM节点至DOM节点变更状态跳转至所述DOM节点至DOM节点变更状态,如果所述第二虚拟DOM树中当前虚拟索引位置处的DOM节点与所述第一虚拟DOM树中当前虚拟索引位置处DOM节点不一致,将所述真实DOM树中当前真实索引位置对应的DOM节点变更为所述第二虚拟DOM树中当前虚拟索引位置处的DOM节点,将所述真实DOM树的当前真实索引位置加1。14.根据权利要求1所述的方法,所述根据相邻两个虚拟索引位置处节点的变更状态与预设渲染操作间预设的对应关系,确定与所述第二变更状态至所述第一变更状态对应的目标预设渲染操作,按所述目标预设渲染操作对所述真实DOM树中对应真实索引位置处的节点进行渲染,包括:如果所述第二变更状态至所述第一变更状态为所述文本节点至DOM节点变更状态跳转至所述DOM节点至文本节点变更状态,获得所述当前虚拟索引位置的前一个虚拟索引位置对应的索引记录,如果所述索引记录中标记所述真实DOM树当前真实索引位置的内容需要更新,则将所述真实DOM树中当前真实索引位置更新为所述索引记录中的虚拟索引内容,移除所述真实DOM树的当前真实索引位置加1处的节点。15.根据权利要求1所述的方法,所述根据相邻两个虚拟索引位置处节点的变更状态与预设渲染操作间...
【专利技术属性】
技术研发人员:郝立鑫,
申请(专利权)人:阿里巴巴集团控股有限公司,
类型:发明
国别省市:开曼群岛,KY
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。