# 解释React是什么 or 谈一谈你对 React 的理解
在列优缺点的时候,不要踩一捧一。
# 1. react出现的原因和技术本质
Angular为前端带来的革新和痛点
Backbone出现了,他与前代的亲和性高,而且考虑了代码的组织性
但是与后端不同的是前端主要以UI组件为基础,需要一个可以使组件复用的开发方案。 前端工程越来越庞杂,组件作为基本单位应该是可以通过编写单元测试来维持稳定的。所以基于过去的模式很难实现上述。
那React的开发思维模式是完全不同的,概览极为简单。 用一个公式可以来概括: View = fn(props, state, context) react中只有组件,没有页面、没有控制器、没有模型。这些都可以用组件来充当。 fn函数可能是一个纯函数组件,也可能在函数中产生影响UI生成的副作用。在react中需要关心的是 数据与组件,在设计模式中有一个 组合优于继承。 在构建UI视图时,组合组件始终是最优的解决方案。
# 2.react的用途
构建视图,由于react虚拟DOM的关系再适用场景上远比传统框架更为广泛。
- PC网页、移动端网页都是完全支持的
- 可以用于开发 IOS 和 Android 应用
- 还有React360 可以开发 VR 应用
- 冷门的如 ink ,可以使用 react 开发命令行应用
核心思路有三大
声明式
- 声明式编程的优势在于直观,可以做到一目了然,也便于组合
组件化
- 组件化可以降低系统间功能的耦合性提高功能内部的聚合性
- 对前端工程化以及代码复用有极大的好处
通用性
- React将DOM抽象为虚拟DOM,开发者并不会直接操作DOM,使得React不再局限于 Web 开发。而能走向更宽广的平台,出现更繁荣的生态。
- 使用声明式的 JSX 来编写组件,而不是模板。
# 3.优缺点
- 声明式、组件化与通用性
- React并不是一个全包干的框架,导致在技术选型与学习使用上有比较搞的成本,像 路由、组件状态集中式管理 (redux、mobx)是由社区和官方共同来实现。比如还有 Dva.js