ReactJS 和 React Native的区别

文章来源自stackoverflow,用户提问了React JS与React Native的区别,我选取两个票数最高的人来进行翻译:

原问题

我刚刚学习React并且和好奇想要明白两者的区别,但是在谷歌上并没有找到满意的答案,React 和 React Native的代码看起来相似,可不可以解释一下,这两者到底有什么区别呢?

Nader Dabit的回答

ReactJS 是一个JavaScript的库,既可以显示在页面中,也可以运行在服务器里。用于构建用户界面和web API。

React Native 是一个本地应用,用来编写移动端的框架,它允许你在JS中,使用RactJS的语法去建立一个原生应用(iOS,Android,Windows phone)。

这两个在Facebook上都是开源的。

prosti的回答

正如你说的,谷歌不能解释这个,但是如果是谷歌发明了React的话,结果就不一样了。
这里有一个React项目

Facebook发明了React,这让JavaScript操作虚拟的DOM对象更快的渲染在DOM模型中。

DOM的重绘是比操作React虚拟对象慢得多的,因为React只刷新了页面的一部分。称之为:部分重绘

你可能看了一些视频,了解到Facebook发明React并不是因为他们知道部分重绘的时间快于老的方式。他们只是需要一种工具用来减少由于Facebook应用重建的时间,幸运的是,他们催生了部分重绘。

React Native只是React下的产物,他给了使用JS进行创造原生APP一个舞台。

在React native之前,你需要去创造一个本地APP的话,你就需要知道Java是如何编写安卓程序的,Objective-C是如何编写IOS程序的。

使用React Native的目的是在网页上使用JavaScript去模仿原生APP的一些交互,你会获取一些React Native的独特的代码进行编写。如果在未来你想要优化你的应用的话,你甚至有可能将Native的代码和JS的代码混合使用。

正如Olivia Bishop所说在视频中所说的,85%的React native代码都共享与这个系统中,也许他会变成我们以后常用的组件和逻辑。

15%的代码是这个系统所特有的。

比较爽的是,这些系统特有的代码都是已经写好了的,所以你只管用就行了。