React是一个简单的javascript UI库,用于构建高效、快速的用户界面。它是一个轻量级库,因此很受欢迎。它遵循组件设计模式、声明式编程范式和函数式编程概念,以使前端应用程序更高效。它使用虚拟DOM来有效地操作DOM。它遵循从高阶组件到低阶组件的单向数据流。
为什么使用React?
- 传统方法频繁操作DOM,性能无法达到要求;React使用VDOM,性能高。
- 传统JS代码维护成本高,React基于组件开发。
- 需要支持移动端开发。
组件设计模式并不是编程通用的设计模式,如常说的单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式等。而是在设计 React 组件时的一些解决方案与技巧,包括以下几种:
- 容器与展示组件
- 高阶组件
- render props
- context 模式
- 组合组件
- 继承
声明式编程是一种编程范式,它关注的是你要做什么,而不是如何做。它表达逻辑而不显式地定义步骤。这意味着我们需要根据逻辑的计算来声明要显示的组件。它没有描述控制流步骤。声明式编程的例子有HTML、SQL等。
函数式编程是声明式编程的一部分。javascript中的函数是第一类公民,这意味着函数是数据,你可以像保存变量一样在应用程序中保存、检索和传递这些函数。
函数式编程有些核心的概念,如下:
- 不可变性(Immutability)
- 纯函数(Pure Functions)
- 数据转换(Data Transformations)
- 高阶函数 (Higher-Order Functions)
- 递归
- 组合
特点:
- 声明式设计:声明范式。
- 高效:使用VDOM,减少DOM的交互。
- 灵活:与已知的库或框架完好配合。
- JSX:一种独立的语言,试图解决很多JS的缺陷,ES6包含了几乎所有JSX的特性。
- 组件:代码复用。
- 单向响应数据流:比双向绑定更简单,更快。
缺点:
- 对于一直使用JS,jQuery的传统前端,React非常不友好。
- React强调组件和状态管理,其世界观是面向程序语言的。
- Vue.js强调视图的自动同步,其世界观是面向UI脚本的。
- React的学习成本较Vue.js高。
- React没有全家桶,只做UI。