基础对比
1,环境搭建
a)首选你要选择开发平台macOS/Windows/Linux
b)其次选择你对应的目标平台iOS/Android,
不同目标平台要安装对应的环境依赖
比如iOS需要Node、Watchman、Xcode和 CocoaPods。
Android需要Node、JDK和 Android Studio。
c)创建项目
执行cmd命令 npx react-native init YourProjectName,这里我命名为AwesomeProject
项目创建成功后可以使用相关工具打开进行编程了
开发RN的工具有很多,选择性也比较多,比如Facebook专门为React开发的IDE:Nuclide,还有做前端比较熟悉的WebStorm、Sublime Text 3、VS Code等。

iOS/Android :对应的开发工具创建
2,开发语言
React Native本质上是JavaScript框架。
RN类似于Vue开发,运用JSX与一些标签对来进行一些流式布局
iOS:Object-C/Swift
Android:Java/Kotlin
3,Debug
大家才能够目录中可以看到,RN项目一般是包括iOS项目和Android项目,调试的时候需要用对应的开发工具调试不同的平台。
4,开发技能要求
我所理解的最能运用RN开发的coder需要掌握JS开发(对公用模块的绘制与功能处理)、iOS开发、Android开发(主要处理端对端与第三方的兼容交互,一些功能集成处理例如推送、支付等)
React Native 与原生开发的优劣
1,React Native原理
a)React属于JavaScript框架,每个HTML界面可以看做一个文档对象模型(DOM),React框架采用组件化方式简化Web开发,可以把一组相关的DOM和JavaScript单独封装到一个组件类中,便于复用。
b)RN底层是把React转换为对应的原生API,例如针对iOS,RN会在一开始生成Object-C模块表,然后把这个模块表传入JS中,JS参照模块表,就能间接调用OC的代码。
c)工作流程

2,React Native与原生的比较
a)相比原生各自维护一套(iOS、Android)业务逻辑大同小异的代码,React Native 只需要同一套javascript代码就可以运行于iOS和 Android两个平台,在开发、测试和维护的成本上要低很多。
b)能即时更新 App,原生发布更新则需要提交审核到不同的市场,发布和测试新功能的效率大幅提高。
c)动画性能。React Native在动画效率和性能的支持还存在一些问题,性能上不如原生Api。
d)React Native 严重依赖于Facebook的维护。苹果在iOS上每次技术的更新、政策的改变都会让原来使用了 React Native 代码库受到影响,等待 Facebook和社区的修复会妨碍 App 的更新和用户体验。
e)原生应用开发人员需要更多指定给原生应用构建的模块,如访问摄像头、推送通知和其他设备传感器。
f)性能。
写在最后
何时选择 React Native
a)你想构建一款简单的电子商务App。
c)你需要尽快进入市场,在人员不够的情况下。
d)你的项目预算较少。
参考文档
https://reactnative.cn/docs/environment-setup
https://www.jianshu.com/p/5cc61ec04b39
https://www.infoq.cn/article/t3ypfdi88*gkzwhr2bpt