react学习笔记

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比较,不同的层次节点被标记改变
    ]
  }
]
}
*/

程序员手动模拟的这两颗新旧dom树,就是react中虚拟dom的概念。

Diff算法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。