React是什么,为何要使用它?

  React是Facrbook内部的一个JavaScript类库,已于1年开源,可用于建立Web用户交互界面。它引入了一种新的方式来处理浏览器DOM。那些须要手动更新DOM、费力地记录每个状态的日子一去不复返了——这种老舅的方式既不具有扩展性,又很难加入新的功能,就算能够,也是有着冒着很大的风险。React使用很新颖的方式解决了这些问题。你只须要声明地定义各个时间点的用户界面,而无序关系在数据变化时,须要更新哪一部分DOM。在任什么时候间点,React都能以最小的DOM修改来更新整个应用程序。react

  React引入了一些激动人心的新概念,向现有的一些最佳实践发起了挑战。学习这些概念,将帮助你理解它们的优点,建立具有高扩展性的单页面应用(SPA)。React把主要的注意力放在了应用的“视图”部分,没有限定与服务端交互和代码组织的方式。web

背景介绍:算法

  在web应用开发的早期,构建Web应用的惟一方案就是向服务器发送请求,而后服务端响应请求而且返回一个完整的页面。从开发的角度上讲这种方法很是简单,由于开发者无须关心在浏览器端发生了什么。浏览器

  像PHP这种语言,更加简化了这种开发方式。使用PHP开发功能组件也很容易,这有助于开发者重用代码,掌握应用程序的行为。开发的简单性使得PHP成为了一门很是流行的Web应用开发语言。服务器

  不过,使用这种开发方式很难打造出极佳的用户体验。由于不管每次用户想要作点什么,都须要向服务端发送请求并等待服务端的响应,这会致使用户失去在页面上所积累的状态。框架

  为了实现更好的用户体验,人们开始开发类库,使用JavaScript在浏览器端渲染应用。这些类库使用的方法也不尽相同简单的会使用带参数的模板,复杂的就彻底掌握整个应用。随着开发者在愈来愈大的应用中使用这些类库,应用也变得愈来愈难于把握,由于这些应用是一系列互相做用的事件的结果。与PHP那样传统的应用开发方式比起来,这种客户端应用很难作好。函数

  React发源自Facebook的PHP框架XHP的一个分支。XHP做为一个PHP框架,旨在每次有请求进来时渲染整个页面。react的产生就是为了把这种从新渲染整个页面的PHP式工做流带到客户端应用中来。性能

  React本质上只关心两件事:学习

    1.更新DOM;spa

    2.响应事件。

  React不处理Ajax、路由和数据存储,也不规定数据组织的方式。它不是一个Model-View-Controller框架。若是非要问它是什么,他就是MVC里的“V”。React的精简容许你将它集成到各类各样的系统中 。

  每次状态改变时,使用JavaScript从新渲染整个页面会很是慢,这应该归咎于读取和更新DOM的性能问题。React运用一个虚拟的DOM实现了一个很是强大的渲染系统,在React中对DOM只更新不读取。

工做状态:

  React以渲染函数为基础。这些函数读入当前的状态,将其转换为目标页面上的一个虚拟表现。只要React被告知状态有变化,他就会从新运行这些函数,计算出页面的一个新的虚拟表现,接着自动把结果转换成必要的DOM更新来反映新的表现。

  这种方式看上去应该比一般的JavaScript方案——按须要更新每个元素——要慢,可是React确实是这么作的:它使用了很是高效的算法,计算出虚拟页面当前版本和新版间的差别,基于这些差别对DOM进行必要的最少更新。React赢就赢在了最小化了重绘,而且避免了没必要要的DOM操做,这两点都是公认的性能瓶颈。