## react优势
- 组件化,而不是写一大堆HTML模板
js逻辑与HTML标签紧密相连并且极易理解
- 单向数据流
数据一旦更新,就直接重新渲染整个app,这是让react如此牛逼的关键点
### 管理ui的状态并不简单
修改DOM树
修改数据
接收用户的输入
异步API数据请求
### 和传统的服务器渲染相似
#### 传统方式
浏览器请求页面
服务器请求数据库
将数据传给模板
模板渲染页面
#### React的渲染方式
用户输入
从API获取数据
将数据传给顶层组件
React将每个组件渲染出来
将不再有:1.魔法般的双向数据绑定2.数据模型的肮脏检查(dirty checking)3.确切的DOM操作
好处:1.每个组件都是干啥的,很直观2.结果更可以预测3.组件之间的关系更清晰
#### 一个React组件可以理解成一个独立的函数
接受参数(props),可复用,可以传递,返回结果(渲染组件)
- 虚拟DOM树
JavaScript虽快,但是DOM操作会相当慢
react在每一次跟新都会做以下事件处理
- React重建DOM
- 找到与上个版本的DOM的差异
- 计算出最新的DOM跟新操作
- 从操作队列中批量地执行DOM跟新操作
- 组件化,而不是写一大堆HTML模板
js逻辑与HTML标签紧密相连并且极易理解
- 单向数据流
数据一旦更新,就直接重新渲染整个app,这是让react如此牛逼的关键点
### 管理ui的状态并不简单
修改DOM树
修改数据
接收用户的输入
异步API数据请求
### 和传统的服务器渲染相似
#### 传统方式
浏览器请求页面
服务器请求数据库
将数据传给模板
模板渲染页面
#### React的渲染方式
用户输入
从API获取数据
将数据传给顶层组件
React将每个组件渲染出来
将不再有:1.魔法般的双向数据绑定2.数据模型的肮脏检查(dirty checking)3.确切的DOM操作
好处:1.每个组件都是干啥的,很直观2.结果更可以预测3.组件之间的关系更清晰
#### 一个React组件可以理解成一个独立的函数
接受参数(props),可复用,可以传递,返回结果(渲染组件)
- 虚拟DOM树
JavaScript虽快,但是DOM操作会相当慢
react在每一次跟新都会做以下事件处理
- React重建DOM
- 找到与上个版本的DOM的差异
- 计算出最新的DOM跟新操作
- 从操作队列中批量地执行DOM跟新操作