Facebook 2013开源在github上的js库
把用户的界面抽象成一个个的组件,组件的组合得到丰富的交互页面
JSX语法让复用组件变得非常容易,结构清晰明了
组件的抽象,让代码和真实的渲染目标隔离开来,使得可以在浏览器渲染DOM,还可以在移动原生应用开发
专注视图层
React并不是完整的MVC/MVVM的框架,专注提供简洁清晰的View视图层解决方案 与模板引擎不同,React除了解决视图层问题,还是一个包括view和controller的库 复杂应用根据应用场景自行选择业务层框架,搭配Flux, Redux...来使用 React只提供组件化相关的少量的API React尽可能的让用户使用原生的js开发
Virtual DOM
真实的页面对应一个DOM树,传统开发模式中,每次更新页面需要手动操作DOM DOM操作,性能消耗非常大,也让项目变得难以维护 React把真实DOM转成JS对象树,即VirtualDom 每次的数据更新,重新计算VirtualDom,和上一次生成的VirtualDom进行对比,对发生变化的部分批量更新 VirtualDom最大的好处在于方便和其他平台的集成,react组件可以映射成原生的控件,平台可以决定输出时是webDom, 还是安卓控件或者IOS控件
函数式编程
过去以命令式编程,解决的是做什么的问题 函数式编程对应的是声明式的编程 当我们操作数组的每个元素并返回一个新数组时,如果是计算机的思考方式,则是需要一个新数组,然后遍历原数组,并计算赋值; 如果是人的思考方式,则是构建一个规则,这个过程就变成构建一个 f 函数作用在数组上,然后返回新数组。这样,计算可以被重复利用。 React 把过去不断重复构建 UI 的过程抽象成了组件,且在给定参数的情况下约定渲染对应的 UI 界面 React 能充分利用很多函数式方法去减少冗余代码 由于它本身就是简单函数,所以易于测试