React的工作方式:
React利用声明式的语法,让开发者专注于描述用户界面“显示成什么样子”,而不是重复思考“如何去显示”,这样大大提高开发效率,也让代码更加容易管理。
Virtual DOM:
要想了解Virtual DOM,首先要了解DOM,DOM是结构化文本的抽象表达式,特定于Web环境中,这个结构化文本就是HTML文本,HTML中的每个元素都对应DOM中的某个节点,这样,因为HTML元素的逐级包含关系,DOM节点自然就构成了一个树状结构,称为DOM树。
浏览器为了渲染HTML格式的网页,会先将HTML文本解析以构建DOM树,然后根据DOM树渲染出用户看到的界面,当要改变界面内容的时候,就去改变DOM树上的节点。
Web前端开发关于性能优化有一个原则:尽量减少DOM操作。虽然DOM操作也只是一些简单的JavaScript语句,但是DOM操作会引起浏览器对网页进行重新布局,重新绘制,这就是一个比JavaScript语句执行慢很多的过程。
虽然JSX看起来很像是一个模板,神奇之处在于,React并不是通过这些语句直接构建DOM树,而是首先构建Virtual DOM。
既然DOM树是对HTML的抽象,那么Virtual DOM就是对DOM树的抽象。Virtual DOM不会触及浏览器的部分,只是存在于JavaScript空间的树形结构,每次自上而下渲染React组件时,会对比这一次产生的Virtual DOM和上一次渲染的Virtual DOM,对比就会发现差别,然后修改真正的DOM树时就只需要触及差别中的那部分就行。