react的虚拟DOM思想。
本质:用js对象,来模拟DOM元素和嵌套关系。
目的:为了实现页面的高效更新。
1.dom树的概念,一个网页的呈现过程:
(1)浏览器向服务器请求html代码
(2)浏览器在内存(ajax请求回来的html在浏览器的内存中)中解析dom结构,并在浏览器内存中,渲染出一颗DOM树
(3)浏览器把DOM树渲染到页面上
2.如何实现页面的按需更新呢?
用传统的方式,可以通过拼接字符串或使用模板引擎art-template的方式将var str += ‘<h1></h1>’
这些元素进行拼接后,将页面整个重新渲染,怎样去实现页面的性能提升呢?实现页面的按需更新就vans了。
获取内存的新旧两个dom树,进行比较,得到需要更新的dom元素
浏览器并没有提供获取dom树的api,因此我们无法拿到内存中的dom树,程序员可以手动的模拟新旧两颗dom树。
<div id="myh1" title="说实话">
在哥好帅
<p>哈哈哈</p>
</div>
/*
虚拟出来的旧的dom如下:
var div = {
tagName:'div',
attrs:{
id:'myh1',
title:'说实话'
},
children:[
'在哥好帅',
{
tagName:'p',
childrens:[
'哈哈哈’
]
}
]
}
*/
<div id="myh1" title="说实话">
在哥好帅www
<p>哈哈哈qqq</p>
</div>
/*
虚拟出来的新的dom如下:
var div = {
tagName:'div',
attrs:{
id:'myh1',
title:'说实话'
},
children:[
'在哥好帅www', //新旧dom比较,不同的层次节点被标记改变
{
tagName:'p',
childrens:[
'哈哈哈qqq’ //新旧dom比较,不同的层次节点被标记改变
]
}
]
}
*/