react native 和react js的区别

JavaScript04

react native 和react js的区别,第1张

首先要明白react native 和react js的定义

ReactNative: 可以基于目前大热的开源JavaScript库React.js来开发iOS和Android原生App。而且React Native已经用于生产环境——Facebook Groups iOS 应用就是基于它开发的。

React Native的原理是在JavaScript中用React抽象操作系统原生的UI组件,代替DOM元素来渲染,比如以<View>取代<div>,以<Image>替代<img>等

在幕后,React Native在主线程之外,在另一个背景线程里运行JavaScript引擎,两个线程之间通过一批量化的async消息协议来通信(有一个专门的React插件)。

(1),React Js的目的是为了使前端的V层更具组件化,能更好的复用,它能够使用简单的html标签创建更多的自定义组件标签,内部绑定事件,同时可以让你从操作dom中解脱出来,只需要操作数据就会改变相应的dom。

(2),React Native的目的是希望我们能够使用前端的技术栈就可以创建出能够在不同平台运行的一个框架。可以创建出在移动端运行的app,但是性能可能比原声app差一点。

2 . 原理略有不同:

ReactJs和React Native的原理是相同的,都是由js实现的虚拟dom来驱动界面view层渲染。只不过ReactJs是驱动html dom渲染; React Native是驱动android/ios原生组件渲染。其实在React Native推出之前,就已经存在这种使用js驱动app原生组件的技术了,比如Native Script。

3 . 编程思路会有所不同:

react 直接渲染dom,而rn生成id,用bridge(最新用c++实现了)变成一个表,等待 native 去调用,写react可以用前端知识直接上手,rn虽然也可以,但是深入下去没有native知识支持很难.

https://github.com/crazycodeboy/RNStudyNotes/tree/master/React%20Native%E5%8E%9F%E7%94%9F%E6%A8%A1%E5%9D%97%E5%90%91JS%E4%BC%A0%E9%80%92%E6%95%B0%E6%8D%AE%E7%9A%84%E5%87%A0%E7%A7%8D%E6%96%B9%E5%BC%8F

有时需要在native和js之间传递数据,有以下几种方式

Callback是最常用的设计模式之一。无论是java,oc,c#,还是js等都会看到Callback的身影;

native支持Callback类型的参数,该Callback对应js中的function。

Promises是es6的一个新的特性,在rn中非常重要。native也支持Promise。

native支持以事件的方式向js发送数据,像Android中的广播,iOS中的通知中心;接收方注册接收该事件即可接收到native发送的事件。