CN105630902B - 一种渲染和增量更新网页的方法 - Google Patents
一种渲染和增量更新网页的方法 Download PDFInfo
- Publication number
- CN105630902B CN105630902B CN201510962419.XA CN201510962419A CN105630902B CN 105630902 B CN105630902 B CN 105630902B CN 201510962419 A CN201510962419 A CN 201510962419A CN 105630902 B CN105630902 B CN 105630902B
- Authority
- CN
- China
- Prior art keywords
- dom
- node
- attribute
- virtual
- name
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种渲染和更新网页的方法,包括以下步骤:(1)用树形数据结构来表示将要被渲染出来的网页的文档对象模型(DOM),其中DOM节点的属性用虚拟DOM的节点的属性表示,DOM节点的子节点用虚拟DOM的节点的子节点线性表来表示;(2)如果对应的DOM树还不存在,则递归遍历上述虚拟DOM,根据其节点创建DOM节点,根据子节点线性表创建DOM节点的子节点,并将DOM子节点添加到其父节点中;(3)如果对应的DOM树已经存在,则同时递归遍历虚拟DOM和DOM树,对于两者中位置对应的节点进行操作。本发明的DOM的更新算法大大简化,既减少了代码量又获得了较好的性能。代码具有较好的可读性,开发人员的学习成本低,并减少了代码量。
Description
技术领域
本发明涉及网页的渲染和更新方法,尤其是浏览器客户端中的网页的渲染和更新方法,属于网页渲染技术领域。
背景技术
最近十年,大量的web网站采用客户端网页渲染来取代部分甚至全部服务器端网页渲染,目的是减少或消除整页刷新,提供更快速的用户体验。例如,在网页中嵌入的JavaScript脚本(运行于浏览器客户端中)可以通过XMLHttpRequest接口主动向服务器请求数据,然后根据获得的数据渲染和更新网页的文档对象模型(DOM),从而改变呈现给用户的界面。几乎所有的网页都用(X)HTML语言来实现,所以其文档对象模型就是HTML DOM,以下在不至于混淆的情况下就简称DOM。
HTML文档,以及HTML中可以嵌入的SVG和MathML文档,都具有树形的结构,树的节点主要分为元素节点(Element)和文本节点(Text),其中元素节点还可以有若干属性。DOM就是文档的树形结构在内存中的一种表示形式。DOM还提供一组应用程序编程接口(API)来查询和修改文档。在浏览器中,访问DOM API的语言是JavaScript(在底层,DOM对象是浏览器实现的对象,通常以C++实现,并非JavaScript对象)。在浏览器中,修改DOM后,相应的页面外观也会立即做出相应的变化。
应当注意的是,在浏览器编程环境中,“属性”一词有多重含义:
(1)HTML/XML属性。如“<a href=’http://a.cn’>”中的href=’http://a.cn’。
(2)CSS属性。如“color:red”。
(3)WebIDL属性。指DOM API定义的,由浏览器实现的DOM对象的属性,例如Element.onclick。
(4)JavaScript对象属性。指JavaScript语言本身实现的对象的属性。在网页渲染中,以上几种属性都可能涉及到,本发明会在必要时加以区分说明。
在浏览器客户端的网页编程中,“渲染”是指整体地创建、替换DOM树中较大的部分,而“更新”是指局部地更新整个DOM树中的若干较小的部分。两者在理论上并没有清晰的界线,但在实践上有重要区别。单纯依赖整体渲染而缺少局部更新的后果包括性能低下、页面闪烁、重置滚动条的位置、丢失用户输入等,所以理想的网页的渲染和更新方法应该对局部更新有很好的支持。
对于JavaScript脚本如何渲染和更新网页的DOM,业界已经有了很多种解决方案,但都有着各种各样的问题。例如:
1.服务器发送的数据中包含HTML文本片段,客户端的JavaScript代码通过在适当的HTML元素上设置Element.innerHTML属性来完成渲染。这样做的问题是(1)增加了服务器端代码的复杂性,限制了客户端JavaScript代码的灵活性。(2)不规范的HTML文本片段可能引发渲染错误甚至安全漏洞。(3)在HTML文本片段上添加事件监听器仍需通过DOM编程来实现。(4)HTML文本片段是一个整体,只能整体替换页面中的一大块,难以做到局部更新。
2.直接DOM编程。即直接编写客户端的JavaScript转换例程,将服务器端发送的数据转换为DOM。服务器端通常发送JSON(JavaScript Object Notation)格式的数据(也有采用XML的),客户端将其解析为简单JavaScript对象。这需要大量使用过程式的DOM API(API=应用程序编程接口),使得代码冗长和难以维护,对于局部更新就更是复杂。尽管jQuery等JavaScript库可以简化部分代码,但问题并没有被有效地解决。
3.使用客户端模板引擎来渲染。客户端模板引擎是个JavaScript例程,以模板(通常是个有格式的字符串)和模板参数(通常是个简单JavaScript对象)为输入,以HTML文本片段或HTML DOM为输出。服务器端可以发送JSON(JavaScript Object Notation)格式的数据,客户端将其解析为简单JavaScript对象,作为模板参数输出。客户端模板引擎实际上是将前述JavaScript转换例程的一种抽象,可以大大简化DOM的渲染。但是模板引擎的问题是:(1)为了提高灵活性,模板字符串通常有有自己的编程结构,如分支、循环、作用域规则等,这等于要求开发人员学习一种新的语言,且这种语言缺乏编程工具的支持,难以被调试和除错,这就增大了开发成本;(2)模板的输出通常是一个整体,只能整体替换页面中的一大块,难以做到局部更新。
4.通过虚拟DOM和差异计算来渲染和更新DOM。虚拟DOM一般是用JavaScript对象实现的树形数据结构,与实际的DOM有一一对应的关系(实际的DOM是浏览器实现的对象,通常以C++实现)。客户端的JavaScript代码,每次从服务器端获得数据(如JSON)后,产生出描述整个界面的虚拟DOM树,交给JavaScript实现的渲染例程去产生渲染或更新DOM。初次渲染时,渲染例程根据虚拟DOM树创建实际DOM树;后续的更新中,渲染例程先计算的更新前后的两个虚拟DOM树的差异数据,然后根据这个差异数据去修改实际DOM。如果差异很小,则被修改的实际DOM节点就只是页面的一小部分,从而避免前述整体渲染的问题。虚拟DOM和差异计算是目前比较理想的网页渲染和更新方法,具体的例子有美国Facebook公司开发的React框架(https://facebook.github.io)等。但目前的一些实现,包括React也存在一些问题:(1)计算两个虚拟DOM树的差异数据是比较复杂的,一方面可能引起性能问题,另一方面也导致渲染例程的代码量较大,而这会导致页面的初次加载较慢;(2)虚拟DOM的创建需要使用特定的例程或者领域特定语言(Domain Specific Language,DSL,对于React就是JSX),前者的问题是代码的可读性不佳,且增加了代码量,后者的问题与客户端模板引擎类似:产生了一门新语言。
发明内容
为解决以上问题,本发明旨在提供一种避免了现有虚拟DOM和差异计算的缺点的基于虚拟DOM的网页渲染和更新方法。
为实现上述目的,本发明采用的技术方案如下:
一种渲染和更新网页的方法,包括以下步骤:
(1)用树形数据结构(称为虚拟文档对象模型或虚拟DOM)来表示将要被渲染出来的网页的文档对象模型(DOM),其中DOM节点的属性用虚拟DOM的节点的属性表示,DOM节点的子节点用虚拟DOM的节点的子节点线性表来表示;
(2)如果对应的DOM树还不存在,则递归遍历上述虚拟DOM,根据其节点创建DOM节点,根据子节点线性表创建DOM节点的子节点,并将DOM子节点添加到其父节点中;
(3)如果对应的DOM树已经存在,则同时递归遍历虚拟DOM和DOM树,对于两者中位置对应的节点:
A)如果两者的节点名不同,则根据虚拟DOM节点重新创建DOM节点并替换原来的DOM节点;
B)如果对应位置上的DOM节点不存在而虚拟DOM节点存在,则根据虚拟DOM节点创建DOM节点并插入该位置;
C)如果对应位置上的虚拟DOM节点不存在而DOM节点存在,则删除该DOM节点;
D)如果两者的节点名相同:一方面枚举两者的属性,对同名且等值的属性不做处理;对同名不等值的属性或DOM节点缺少的属性,,将虚拟DOM节点的属性值写入DOM节点中;对虚拟DOM节点缺少的属性,删除DOM节点的属性;另一方面,递归遍历两者的子节点,继续做上述A-D的操作。
进一步地,如上所述的渲染和更新网页的方法,该方法是用JavaScript语言来实现,且虚拟DOM采用简单JavaScript对象来表示。
进一步地,如上所述的渲染和更新网页的方法,用虚拟DOM节点的属性名的前缀来区分不同类型的属性。
进一步地,如上所述的渲染和更新网页的方法,为每个通过虚拟DOM创建的DOM元素节点建有一个簿记表,记录上述方法中添加的属性及其对应的值,在第(3-D)步中枚举DOM属性和比较属性值的操作通过该簿记表来进行。
进一步地,如上所述的渲染和更新网页的方法,根据虚拟DOM节点创建实际DOM节点时,根据节点名和父节点的命名空间来推测其命名空间。
本发明的有益效果在于:(1)没有单独的虚拟DOM差异计算步骤(可以认为与DOM树的更新合一了),因此DOM的更新算法大大简化,既减少了代码量又获得了较好的性能。(2)可以直接利用简单JavaScript对象来表示虚拟DOM结构,使代码具有较好的可读性,开发人员的学习成本低,并减少了代码量。(3)可以方便地处理(X)HTML内嵌SVG和MathML的情形(此时需要区分命名空间)。(4)使用前缀区分不同类型的属性,即避免了属性名冲突又简化了代码。
具体实施方式
下面结合实施例对本发明进行详细的描述。
一、虚拟DOM的形式
本发明中,虚拟DOM采用简单JavaScript对象(Plain JavaScript Object)来表示,例如虚拟DOM树:
就对应于如下这个HTML DOM树:
可见虚拟DOM树就是一个简单JavaScript对象,可以用对象字面量的写法来创建。每个对象对应一个实际DOM中的元素,子节点则通过Kids属性列出。虚拟DOM的各种属性的意义如下:
(1)Name:对应HTML或SVG或MathML的元素名。
(2)Kids:子节点列表,是一个数组,其成员要么也是个DOM树,要么是字符串;字符串则对应实际DOM中的文本节点。
(3)以‘@’开头的属性映射到HTML/XML属性(去掉去掉首字符,下同)。
(4)以‘-’开头的属性开头的属性映射到CSS属性。
(5)以‘.’开头的属性映射到HTML class属性的片段,如果其值是“真”则该class存在,如果其值是“假”则该class不存在。
(6)其它的属性,如onclick、value,映射到同名的WebIDL属性。
二、从虚拟DOM树渲染、更新实际DOM树的方法
“从虚拟DOM树更新实际DOM树”的方法有三个输入参数:(1)虚拟DOM节点(可以是字符串或JavaScript对象)。(2)实际DOM节点。(3)更新后的实际父节点;方法的返回值(即输出)是更新后的实际DOM节点。第(2)、(3)个输入参数可以省略,这样就相当于初次渲染实际DOM的情形。该方法的具体过程是:
S01:让“当前实际父节点”的值是参数“实际DOM节点”的父节点,转到S02;
S02:如果参数“虚拟DOM节点”的类型是字符串,则转到S03,否则转到S04;
S03:如果参数“实际DOM节点”存在且类型是“文本节点”,则设置“实际DOM节点”的值为参数“虚拟DOM节点”的值,返回“实际DOM节点”,结束;否则,新建一个文本节点,名为“新实际DOM节点”,值为参数“虚拟DOM节点”的值(JavaScript代码的例子:document.createTextNode(虚拟DOM节点)),转到S21;
S04:如果“实际DOM节点”存在且其元素名(即其localName属性)等于“虚拟DOM节点”的Name属性,则转到S07,否则转到S05;
S05:如果“虚拟DOM节点”的Name属性是字符串‘math’,则让“实际命名空间”的值是字符串'http://www.w3.org/1998/Math/MathML',否则如果Name属性是字符串‘svg’,则确定“实际命名空间”的值是字符串'http://www.w3.org/2000/svg';否则,如果参数“更新后的实际父节点”存在,则让“实际命名空间”的值是“更新后的实际父节点”的命名空间(即其namespaceURI属性);否则,如果“当前实际父节点”存在,则让“实际命名空间”的值是“当前实际父节点”的命名空间(即其namespaceURI属性);否则,让“实际命名空间”的值是某个默认值(如当前文档的根元素的namespaceURI属性);
转到S06;
S06:新建一个名为“新实际DOM节点”的元素节点,其元素名是“虚拟DOM节点”的Name属性,其命名空间是“实际命名空间”(JavaScript代码的例子:document.createElementNS(实际命名空间,虚拟DOM节点.Name));
转到S07;
S07:如果“新实际DOM节点”存在,让“目标实际节点”是“新实际DOM节点”,否则让“目标实际节点”是“实际DOM节点”;
如果“虚拟DOM节点”的Kids属性不存在或者是长度为0的数组,则删除“目标实际节点”的所有子节点,转到S09;否则转到S08;
S08:让“最大子节点数”是“虚拟DOM节点”的Kids属性的长度和“目标实际节点”的子节点的个数中的较大者;
从0开始到“最大子节点数”减一,依次取出该位置的“虚拟DOM节点”的Kids的值“虚拟子节点i”和该位置的“目标实际节点”的子节点“实际子节点i”,执行以下步骤:
(1)如果“实际子节点i”存在,而“虚拟子节点i”不存在,则删除“实际子节点i”;
(2)如果“实际子节点i”和“虚拟子节点i”都存在,则调用“从虚拟DOM树更新实际DOM树”方法(注意这里发生了递归),参数是:“虚拟子节点i”,“实际子节点i”,“目标实际节点”;
(3)如果“实际子节点i”不存在,而“虚拟子节点i”存在,则调用“从虚拟DOM树更新实际DOM树”方法(注意这里发生了递归),参数是:“虚拟子节点i”,null,“目标实际节点”,并将返回值添加为“目标实际节点”的子节点;
转到S09;
S09:让“簿记映射表”是“目标实际节点”对应的簿记映射表,如果后者不存在则新建一个;初始状态的簿记映射表中没有任何属性;转到S10;
S10:遍历“簿记映射表”中的属性,如果“虚拟DOM节点”中没有同名属性或者同名属性的值是空(null/undefined),则执行(1~5)的操作:
(1)从“簿记映射表”中删除该属性;
(2)如果该属性名以’@’开头(如’@src’),则从“目标实际节点”中删除该HTML/XML属性,参数是去掉开头字符的部分(JavaScript的例子是:目标实际节点.removeAttribute(属性名.slice(1)));
(3)如果该属性名以’-’开头(如’-color’),则从“目标实际节点”中删除该CSS属性,参数是去掉开头字符的部分(JavaScript的例子是:目标实际节点.style.removeProperty(属性名.slice(1)));
(4)如果该属性名以’.’开头(如’.selected’),则从“目标实际节点”中删除该class,参数是去掉开头字符的部分(JavaScript的例子是:目标实际节点.classList.remove(属性名.slice(1)));
(5)如果该属性名以其它字符开头(如’onclick’),则将“目标实际节点”中的同名WebIDL属性置为null(JavaScript的例子是:目标实际节点[属性名]=null);
转到S11;
S11:遍历“虚拟DOM节点”中的属性(以下称为“属性名”和“属性值”),如果“属性值”与“簿记映射表”中的同名属性的值不同,则执行以下操作:
(1)在“簿记映射表”中设置同名属性的值为“属性值”;
(2)如果该属性名以’@’开头(如’@src’),则在“目标实际节点”中设置该HTML/XML属性,参数是“属性名”去掉开头字符的部分和“属性值”(JavaScript的例子是:目标实际节点.setAttribute(属性名.slice(1),属性值));
(3)如果该属性名以’-’开头(如’-color’),则在“目标实际节点”中设置该CSS属性,参数是“属性名”去掉开头字符的部分和“属性值”(JavaScript的例子是:目标实际节点.style.setProperty(属性名.slice(1),属性值));
(4)如果该属性名以’.’开头(如’.selected’),且“属性值”为“真”,则对“目标实际节点”添加该class,参数是去掉开头字符的部分(JavaScript的例子是:目标实际节点.classList.add(属性名.slice(1)));
(5)如果该属性名以’.’开头(如’.selected’),且“属性值”为“假”,则从“目标实际节点”删除该class,参数是去掉开头字符的部分(JavaScript的例子是:目标实际节点.classList.remove(属性名.slice(1)));
(6)如果该属性名以其它字符开头(如’onclick’),则将“目标实际节点”中的同名WebIDL属性置为“属性值”(JavaScript的例子是:目标实际节点[属性名]=属性值);
转到S21;
S21:如果“新实际DOM节点”存在且“当前实际父节点”存在,则用“新实际DOM节点”替换“实际DOM节点”;转到S22;
S22:如果“新实际DOM节点”存在则返回它,否则如果“实际DOM节点”存在则返回它,否则返回空(null);结束。
其中,补充说明如下:
1.S09步中,“簿记映射表”存在的意义是能够统一和快速地遍历实际DOM节点的属性。目前有的浏览器中遍历DOM节点的属性有困难,有的遍历速度比较慢。
2.S09步中,“簿记映射表”可以用简单JavaScript对象或者JavaScript Map类型来等实现,只要能提供从字符串类型的属性名到任意类型的值的映射即可。
3.S09步中,“目标实际节点”和“簿记映射表”有一一对应的关系,这种对应关系可以有多种实现。(1)可以在“目标实际节点”上添加一个JavaScript属性,指向“簿记映射表”,如“目标实际节点.bookkeeper=簿记映射表”;(2)可以建立一个全局的弱引用映射表(WeakMap),将两者关联起来,如“weakMap.set(目标实际节点,簿记映射表)”。
4.DOM节点的WebIDL属性都是小写英文字母开头的,所以对HMTL/XML属性、CSS属性等采用’@’、’-’等非字母前缀足以区分它们。有的虚拟DOM实现(如React)不使用前缀区分,这就导致需要处理不同类型的属性名称冲突的问题,使得代码变得复杂。
5.因为嵌入HTML的SVG片段的根元素总是<svg>,MathML片段的根元素总是<math>,所以S05步只跟踪这两个元素名,并让子元素继承父元素的命名空间就可以基本准确地确定任意元素的命名空间。这避免了让代码处理所有的SVG和MathML元素名。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若对本发明的这些修改和变型属于本发明权利要求及其同等技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (5)
1.一种渲染和更新网页的方法,其特征在于所述方法包括以下步骤:
(1)用树形数据结构来表示将要被渲染出来的网页的文档对象模型(DOM),其中DOM节点的属性用虚拟DOM的节点的属性表示,DOM节点的子节点用虚拟DOM的节点的子节点线性表来表示;
(2)如果对应的DOM树还不存在,则递归遍历上述虚拟DOM,根据其节点创建DOM节点,根据子节点线性表创建DOM节点的子节点,并将DOM子节点添加到其父节点中;
(3)如果对应的DOM树已经存在,则同时递归遍历虚拟DOM和DOM树,对于两者中位置对应的节点:
A)如果两者的节点名不同,则根据虚拟DOM节点重新创建DOM节点并替换原来的DOM节点;
B)如果对应位置上的DOM节点不存在而虚拟DOM节点存在,则根据虚拟DOM节点创建DOM节点并插入该位置;
C)如果对应位置上的虚拟DOM节点不存在而DOM节点存在,则删除该DOM节点;
D)如果两者的节点名相同:一方面枚举两者的属性,对同名且等值的属性不做处理;对同名不等值的属性或DOM节点缺少的属性,将虚拟DOM节点的属性值写入DOM节点中;对虚拟DOM节点缺少的属性,删除DOM节点的属性;另一方面,递归遍历两者的子节点,继续做上述A到D的操作。
2.如权利要求1所述的方法,其特征在于,该方法用JavaScr i pt语言来实现,且虚拟DOM采用简单JavaScr i pt对象来表示。
3.如权利要求1所述的方法,其特征在于,用虚拟DOM节点的属性名的前缀来区分不同类型的属性。
4.如权利要求1所述的方法,其特征在于,为每个通过虚拟DOM创建的DOM元素节点建有一个对应的簿记表,记录上述方法中添加的属性及其对应的值,在第(3-D)步中枚举DOM属性的操作通过该簿记表来进行。
5.如权利要求1所述的方法,其特征在于,根据虚拟DOM节点创建实际DOM节点时,根据节点名和父节点的命名空间来推测其命名空间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510962419.XA CN105630902B (zh) | 2015-12-21 | 2015-12-21 | 一种渲染和增量更新网页的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510962419.XA CN105630902B (zh) | 2015-12-21 | 2015-12-21 | 一种渲染和增量更新网页的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105630902A CN105630902A (zh) | 2016-06-01 |
CN105630902B true CN105630902B (zh) | 2019-03-26 |
Family
ID=56045835
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510962419.XA Active CN105630902B (zh) | 2015-12-21 | 2015-12-21 | 一种渲染和增量更新网页的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105630902B (zh) |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107562445A (zh) * | 2016-06-29 | 2018-01-09 | 中国电信股份有限公司 | 用于动态更新用户界面的方法、装置和系统 |
US10430212B1 (en) * | 2016-07-13 | 2019-10-01 | Screenshare Technology Ltd. | Method for recording, editing and reproduction of computer session |
CN106202529A (zh) * | 2016-07-22 | 2016-12-07 | 浪潮(北京)电子信息产业有限公司 | 一种页面渲染方法及装置 |
CN106484759B (zh) * | 2016-08-09 | 2020-01-10 | 广州视睿电子科技有限公司 | 交互式电子白板存储文件的解析方法和装置 |
CN106599016A (zh) * | 2016-09-30 | 2017-04-26 | 浙江大学 | 一种基于虚拟dom的前端元素维护方法 |
CN106598574B (zh) | 2016-11-25 | 2020-02-18 | 腾讯科技(深圳)有限公司 | 页面渲染的方法和装置 |
CN107451181B (zh) * | 2017-06-14 | 2020-09-22 | 北京星选科技有限公司 | 页面渲染方法和装置 |
CN107423106B (zh) * | 2017-07-07 | 2021-04-23 | 北京小米移动软件有限公司 | 支持多框架语法的方法和装置 |
CN107391128B (zh) * | 2017-07-07 | 2020-07-28 | 北京小米移动软件有限公司 | 监控虚拟文件对象模型vdom的方法和装置 |
CN109255088A (zh) * | 2017-07-07 | 2019-01-22 | 普天信息技术有限公司 | 网页数据监测方法和设备 |
CN108255485B (zh) * | 2017-09-22 | 2021-10-29 | 阿里巴巴(中国)有限公司 | 页面搭建方法、设备及电子设备 |
CN110020288A (zh) * | 2017-09-30 | 2019-07-16 | 北京国双科技有限公司 | 一种页面刷新方法及装置 |
CN108572819A (zh) * | 2017-12-21 | 2018-09-25 | 北京金山云网络技术有限公司 | 页面更新方法、装置、终端及计算机可读存储介质 |
CN108363573A (zh) * | 2018-01-11 | 2018-08-03 | 山东浪潮通软信息科技有限公司 | 一种高效的移动表单设计与渲染方法 |
CN108647029B (zh) * | 2018-05-10 | 2019-05-14 | 重庆迅燕科技有限公司 | 一种Web前后端代码融合办法 |
CN108647025A (zh) * | 2018-05-15 | 2018-10-12 | 浙江口碑网络技术有限公司 | 文档对象模型中节点的处理方法及装置、电子和存储设备 |
CN110874251A (zh) * | 2018-08-29 | 2020-03-10 | 北京京东尚科信息技术有限公司 | 一种实现图片木桶布局的方法和装置 |
CN109542417B (zh) * | 2018-11-20 | 2022-03-01 | 北京小米移动软件有限公司 | 一种dom渲染网页的方法、装置、终端和存储介质 |
CN109375918A (zh) * | 2018-11-23 | 2019-02-22 | 天津字节跳动科技有限公司 | 小程序的界面渲染方法、装置、电子设备和存储介质 |
CN109597611B (zh) * | 2018-11-29 | 2022-04-12 | 北京京东尚科信息技术有限公司 | 前端数据流控制组件开发系统、方法、设备及存储介质 |
CN109857425A (zh) * | 2018-12-27 | 2019-06-07 | 山东浪潮商用系统有限公司 | 一种基于客户端网页应用的版本更新方法及系统 |
CN109885794B (zh) * | 2019-01-24 | 2020-10-20 | 曲阜师范大学 | 基于区块链的循环式同步更新网页的处理方法 |
CN110245311B (zh) * | 2019-04-17 | 2023-06-27 | 创新先进技术有限公司 | 局部页面动态渲染方法及装置 |
CN110457614B (zh) * | 2019-07-03 | 2020-06-16 | 南方电网数字电网研究院有限公司 | 降低数据并发量的数据增量更新方法、装置和计算机设备 |
CN110968813A (zh) * | 2019-11-29 | 2020-04-07 | 中国银行股份有限公司 | 一种索引页面展示方法及装置 |
CN111475760B (zh) * | 2020-04-07 | 2023-11-14 | 五八有限公司 | 一种序列化dom节点的方法、dom节点的渲染方法和装置 |
CN113596527A (zh) * | 2020-04-30 | 2021-11-02 | 西安诺瓦星云科技股份有限公司 | 节目发布方法、装置及系统和计算机可读存储介质 |
CN111753234A (zh) * | 2020-06-24 | 2020-10-09 | 中国建设银行股份有限公司 | 一种数据可视化方法、装置、服务器和介质 |
CN111930379B (zh) * | 2020-08-11 | 2021-07-06 | 上海亿锎智能科技有限公司 | Web端投诉表单设计器的实现方法、装置和系统 |
CN112235621B (zh) * | 2020-10-10 | 2022-08-26 | Vidaa美国公司 | 一种可视区域的显示方法及显示设备 |
CN113392066A (zh) * | 2021-06-11 | 2021-09-14 | 上海妙一生物科技有限公司 | 一种通用的目录管理方法、装置、计算机设备 |
CN113807050B (zh) * | 2021-07-01 | 2024-04-09 | 西安华讯科技有限责任公司 | 一种基于富文本的节点截取方法、系统、设备和存储介质 |
US11487931B1 (en) | 2021-10-18 | 2022-11-01 | International Business Machines Corporation | Replaying a webpage based on virtual document object model |
CN114339295B (zh) * | 2022-01-13 | 2024-03-22 | 山东捷瑞数字科技股份有限公司 | 一种网页直播内容数据更新优化方法和系统 |
CN114969236B (zh) * | 2022-07-25 | 2022-11-25 | 倍智智能数据运营有限公司 | 一种基于React实现自定义地图标注的方法 |
CN116795405B (zh) * | 2023-08-25 | 2023-11-21 | 苏州盈天地资讯科技有限公司 | 千人千面场景前端页面快速渲染方法、服务器及前端设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103473347A (zh) * | 2013-09-24 | 2013-12-25 | 北京大学 | 一种基于网页相似度的浏览器渲染优化方法 |
CN103593414A (zh) * | 2013-10-29 | 2014-02-19 | 北京奇虎科技有限公司 | 一种浏览器中网页的展现方法和装置 |
CN103635897A (zh) * | 2011-06-23 | 2014-03-12 | 微软公司 | 对运行页面进行动态更新 |
-
2015
- 2015-12-21 CN CN201510962419.XA patent/CN105630902B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103635897A (zh) * | 2011-06-23 | 2014-03-12 | 微软公司 | 对运行页面进行动态更新 |
CN103473347A (zh) * | 2013-09-24 | 2013-12-25 | 北京大学 | 一种基于网页相似度的浏览器渲染优化方法 |
CN103593414A (zh) * | 2013-10-29 | 2014-02-19 | 北京奇虎科技有限公司 | 一种浏览器中网页的展现方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105630902A (zh) | 2016-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105630902B (zh) | 一种渲染和增量更新网页的方法 | |
US10534830B2 (en) | Dynamically updating a running page | |
KR101908162B1 (ko) | 통합 개발 환경에서의 라이브 브라우저 툴 제공 기법 | |
CN108572819A (zh) | 页面更新方法、装置、终端及计算机可读存储介质 | |
US10540416B2 (en) | Linking source code to running element | |
US20130227397A1 (en) | Forming an instrumented text source document for generating a live web page | |
CN105278946B (zh) | 一种RESTful API可视化方法 | |
US20070169008A1 (en) | External programmatic interface for IOS CLI compliant routers | |
CN105677654B (zh) | 广告过滤方法及装置 | |
US20160092591A1 (en) | Clustering repetitive structure of asynchronous web application content | |
CN111913705B (zh) | 一种基于差异更新算法的JavaScript模板实现方法 | |
CN107122187A (zh) | 一种业务系统异构操作系统访问设计方法 | |
CN103593414A (zh) | 一种浏览器中网页的展现方法和装置 | |
US20100318943A1 (en) | Unified Interface for Display and Modification of Data Arrays | |
CN104050190B (zh) | 一种关系链数据处理的方法和系统、客户端 | |
Nordeen | Learn CodeIgniter in 24 Hours | |
CN105739962B (zh) | 基于html的表格单元格编辑器控件扩展方法和系统 | |
CN113822963A (zh) | 一种绘制及展示拓扑图的方法、系统、设备和存储介质 | |
US10198408B1 (en) | System and method for converting and importing web site content | |
CN114722112A (zh) | 一种可视化列表数据展示方法及其装置 | |
CN114329720A (zh) | 一种ui数据的同步方法、装置、电子设备及存储介质 | |
CN111552909B (zh) | 一种网站静态资源管理方法及其系统 | |
CN102937958B (zh) | 一种基于不完全子树匹配的Web数据记录提取方法 | |
CN112988136B (zh) | 一种用户界面编辑方法及装置 | |
Lewis | Rails Crash Course: A No-nonsense Guide to Rails Development |
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 |