React的实践是“响应式编程”(Reactive Programming)的思想,这呀就是React为什么叫React的原因。
创建一个简单的React应用。
类似于react-native那样。 react-native init 项目名。我们可以先导入create-react-app
npm install --global create-react-app
安装完之后,执行创建一个React的项目
crete-react-app first_react_app
之后启动服务
cd first_react_app
npm start
项目结构截图:
Virtual DOM
要了解Virtual DOM,首先要了解DOM,DOM是结构化文本的抽象表达形式,特定于Web环境中,这个结构化文本就是HTML文本,HTML中的每个元素都对应DOM中某个节点,这样,因为HTML元素的逐级包含关系,DOM借点自然就构成了一个树形结构,称为DOM树。
浏览器为了渲染HTML格式的网页,先会将HTML文本解析以构建DOM树,然后根据DOM树渲染出用户看到的界面,当要改变界面内容的时候,就去改变DOM树上的节点。
Web前端开发关于性能优化有一个原则:尽量减少DOM操作,虽然DOM操作也只是一些简单的JS语句,但是DOM操作会引起浏览器对网页进行重新布局,重新绘制。
既然DOM树是对HTML的抽象,那么Virtual DOM就是DOM树的抽象。
设计高质量的React组件
- 划分组件边界的原则;
- React组件的数据种类;
- React组件的生命周期;
软件设计的通则:高内聚低耦合
- 高内聚 :指的是把逻辑紧密相关的内容放在一个组件中。用户界面无外乎内容、交互行为和样式。React天生具有高内聚的特点。
- 低耦合 : 指的是不同组件之间的依赖关系要尽量弱化,也就是每个组件要尽量独立。保持整个系统的低耦合度,需要对系统中的功能有充分的认识,然后根据功能点划分模块。
prop和state的对比
- prop用于定义外部接口,state用于记录内部状态;
- prop的赋值在外部世界使用组件时,state的赋值在组件内部;
- 组件不应该prop的值,而state存在的目的就是让组件来改变的
- 组件的state,就相当与组件的记忆,其存在的意义就是被修改,每一次 通过this.setState函数修改state就改变了组件的状态,然后通过渲染过程,把这种变化体现出来。