在开始学习 React Native之前,必须要先知道另一个名词“React.js”;
此时,就有有疑问了,到底什么是React.js呢?它和React Native又是什么关系呢?
先来看看React.js官网对React的定义:
React is a javaScript library for building user interfaces
从上述官方的定义可以知道:React是一个用于前端UI开发的JavaScript库。和其他类似的前端框架相比,例如。老牌的Backbone,G oogle推出的Angular和以轻量级著称的Vue.js,React最大的不同是提出的Virtual DOM(虚拟DOM)的设计,可以大大提升页面渲染的效率。
Tips::
1-:在Web开发中,我们总需要将变化的数据实时反应到UI上,这时就需要对DOM进行操作。而复杂或频繁的DOM操作通常是性能瓶颈产生的原因(如何进行高性能的复杂DOM操作通常是衡量一个前端开发人员技能的重要指标)。React为此引入了虚拟DOM(Virtual DOM)的机制:在浏览器端用Javascript实现了一套DOM API。基于React进行开发时所有的DOM构造都是通过虚拟DOM进行,每当数据变化时,React都会重新构建整个DOM树,然后React将当前整个DOM树和上一次的DOM树进行对比,得到DOM结构的区别,然后仅仅将需要变化的部分进行实际的浏览器DOM更新。而且React能够批处理虚拟DOM的刷新,在一个事件循环(Event Loop)内的两次数据变化会被合并,例如你连续的先将节点内容从A变成B,然后又从B变成A,React会认为UI不发生任何变化,而如果通过手动控制,这种逻辑通常是极其复杂的。尽管每一次都需要构造完整的虚拟DOM树,但是因为虚拟DOM是内存数据,性能是极高的,而对实际DOM进行操作的仅仅是Diff部分,因而能达到提高性能的目的。这样,在保证性能的同时,开发者将不再需要关注某个数据的变化如何更新到一个或多个具体的DOM元素,而只需要关心在任意一个数据状态下,整个界面是如何Render的。
2-:虚拟DOM不仅带来了简单的UI开发逻辑,同时也带来了组件化开发的思想,所谓组件,即封装起来的具有独立功能的UI部件。React推荐以组件的方式去重新思考UI构成,将UI上每一个功能相对独立的模块定义成组件,然后将小的组件通过组合或者嵌套的方式构成大的组件,最终完成整体UI的构建。
React是一个全新思路的前端UI框架,它完全接管了UI开发中最为复杂的局部更新部分,擅长在在复杂场景下保证高性能;同时,它引入了基于组件的开发思想,从另一个角度来重新审视UI的构成。通过这种方法,不仅能够提高开发效率,而且可以让代码更容易理解,维护和测试。
但是,Facebook不仅仅满足于React对前端开发技术的革新,又将React的设计移植到原生开发中,从而诞生了React+Native结合的产物,即React Native.
所以:简单来说:可以总结一下几点:
1: React Native和React使用了相同的开发语言JavaScript和相同的JavaScript;
2:React Native和React运行的环境和平台却是完全不同的,React Native是基于移动平台(如iOS,Android),而React是基于浏览器。
Tips:
国内网络环境访问React Native官网可能较慢,可以访问国内的中文资源网站,例如React Native中文网(http://reactnative.cn/),或者自行搜索React Native官网访问速度的办法。