本篇文章主要的向大家介绍了关于react的基础认识,你敢说你对react认识很多吗,没有的话那就来看看这篇文章吧
1、 facebook为什么要建造react?
facebook的工程师在做大型项目时,由于他们非常巨大的代码库和庞大的组织,使得mvc很快变得非常复杂,每当需要添加一项新的功能或特性时,系统的复杂度就成级数增长,致使代码变得脆弱和不可预测,结果导致他们的mvc正在土崩瓦解,所以facebook认为mvc不适合大规模应用,当系统中有很多的模型和相应的视图时,其复杂度就会迅速扩大,非常难以理解和调试,特别是模型和视图间可能存在的双向数据流动。
基于上面的原因,facebook认为mvc无法满足他们的扩展需求,为了解决上述问题需要“以某种方式组织代码,使其更加可预测”,于是他们提出的flux和react来实现。
2、 什么是react?
react 起源于 facebook 的内部项目,因为该公司对市场上所有 javascript mvc 框架,都不满意,就决定自己写一套,用来架设instagram 的网站。做出来以后,发现这套东西很好用,就在2013年5月开源了。
react 是一个用于构建用户界面的javascript 库。react主要用于构建ui,很多人认为 react 是 mvc 中的 v(视图)。react 拥有较高的性能,代码逻辑非常简单,越来越多的人已开始关注和使用它。
3、 react是解决什么问题?
we built react to solve one problem: building large applications with data that changes over time.构建那些数据会随时间改变的大型应用
4、react 特点
1.声明式设计 −react采用声明范式,可以轻松描述应用。
2.高效 −react通过对dom的模拟,最大限度地减少与dom的交互。
3.灵活 −react可以与已知的库或框架很好地配合。
4.jsx − jsx是 javascript语法的扩展。react开发不一定使用 jsx,但我们建议使用它。
5.组件 − 通过 react构建组件,使得代码更加容易得到复用,能够很好的应用在大项目的开发中。
6.单向响应的数据流 − react 实现了单向响应的数据流,从而减少了重复代码,这也是它为什么比传统数据绑定更简单。
5、react主要的原理
传统的web应用,操作dom一般是直接更新操作的,但是我们知道dom更新通常是比较昂贵的。而react为了尽可能减少对dom的操作,提供了一种不同的而又强大的方式来更新dom,代替直接的dom操作。就是virtualdom,一个轻量级的虚拟的dom,就是react抽象出来的一个对象,描述dom应该什么样子的,应该如何呈现。通过这个virtual dom去更新真实的dom,由这个virtual dom管理真实dom的更新。(想看更多就到react参考手册栏目中学习)
为什么通过这多一层的virtual dom操作就能更快呢? 这是因为react有个diff算法,更新virtualdom并不保证马上影响真实的dom,react会等到事件循环结束,然后利用这个diff算法,通过当前新的dom表述与之前的作比较,计算出最小的步骤更新真实的dom。
最明显的一点好处就是react所谓的 dom diff ,能够实现delta级别的dom更新。当有数据变动导致dom变动时,react不是全局刷新,而是通过它内部的dom diff 算法计算出不同点,然后以最小粒度进行更新。这也是react号称性能好的原因。
6、components 组件
在dom树上的节点被称为元素,在这里则不同,virtual dom上称为commponent。virtual dom的节点就是一个完整抽象的组件,它是由commponents组成。component的使用在 react 里极为重要, 因为 components 的存在让计算 dom diff 更高效。
7、应用情况
国外应用的较多,facebook、yahoo、reddit等。在github可以看到一个列表sites-using-react:https://github.com/facebook/react/wiki/sites-using-react国内的话,查了查,貌似比较少,目前知道的有一个杭州大搜车。大多技术要在国内应用起来一般是较慢的。
8、比较分析
和其他一些js框架相比,比如backbone、angular等,react怎样?
1、react不是一个mvc框架,它是构建易于可重复调用的web组件,侧重于ui, 也就是view层
2、其次react是单向的从数据到视图的渲染,非双向数据绑定
3、不直接操作dom对象,而是通过虚拟dom通过diff算法以最小的步骤作用到真实的dom上。
4、不便于直接操作dom,大多数时间只是对 virtual dom 进行编程
9、和react native的关系
由于 react的设计思想极其独特,属于革命性创新,性能出众,代码逻辑却非常简单。所以,越来越多的人开始关注和使用,认为它可能是将来web 开发的主流工具。
这个项目本身也越滚越大,从最早的ui引擎变成了一整套前后端通吃的 web app 解决方案。衍生的 react native 项目,目标更是宏伟,希望用写web app 的方式去写 native app。如果能够实现,整个互联网行业都会被颠覆,因为同一组人只需要写一次 ui ,就能同时运行在服务器、浏览器和手机。
本篇文章到这就结束了(想看更多就到react使用手册栏目中学习),有问题的可以在下方留言提问。
以上就是什么是react?react主要是做什么的?(问答篇)的详细内容。