React Native
是Facebook开源的基于React技术进行开发移动应用的技术。
React Native
着力于提高多平台开发的开发效率 —— 仅需学习一次,编写任何平台。 (Learn once, write anywhere
), 要注意的是:他的目标是让开发不同端的语言变成一样的语言,都使用JSX
,降低学习成本。 他的目的不是White once, run anywhere
,对于Android和iOS要分别开发,因为他们的UI
控件是不一样的,当然有公共的部分。
React Native
开发的应用并不是运行在WebView
中, 而是通过JavaScript engine将DOM元素
与原生控件
进行映射,最终使用原生控件渲染的,所以相比WebView
运行是流畅, 但是由于存在中间的JavaScript engine翻译的过程,所以,没有完全使用原生开发的应用流畅。
2015
年Facebook召开的F8
大会上把iOS版的React Native
开源了。
2015/09月/15
又正式开源了React Native For Android
。 意味着React
同时支持了各大主流平台。 真正做到了learn once,write everywhere!
React Native
官网:http://facebook.github.io/react-native
React Native
中文网:http://reactnative.cn
React Native
在GitHub上的网址:https://github.com/facebook/react-native
React Native
开发环境只能搭建在macOS系统之上。 这是因为,我们搭建的React Native
工程,既有iOS工程, 也有Android工程,iOS
工程只能在macOS系统中操作。
1、安装watchman、JDK(推荐AdoptOpenJDK)、AndroidSDK、AndroidStudio、Xcode、command line developer tools、CocoaPods、Node.js
2、设置npm仓库使用国内的镜像:
npm config set registry https://registry.npm.taobao.org
3、使用npm全局安装flow、react-native-cli
:
npm install flow react-native-cli -g
4、检验是否安装成功。查看react-native
命令的帮助:
使用react-native init
命令创建工程:
react-native init ReactNativeTest
这个过程需要从npm仓库下载很多模块,所以过程可能会比较慢,请耐心等待。
完成后,进入工程,查看文件内容:
工程结构说明:
package.json | npm包的配置文件 |
babel.config.js | babel的配置文件 |
metro.config.js | metro 的配置文件 |
node_modules | 项目依赖的npm包存放目录 |
android | Android工程,与Android原生开发的工程一模一样。 |
ios | iOS工程,与iOS原生开发的工程一模一样。 |
index.js | 程序的入口 |
App.js | 被index.js 调用 |
在此工程目录中查看react-native
命令的帮助:
我们发现,在工程内部和工程外部react-native
命令的帮助是不一样的。
运行iOS程序:
react-native run-ios
这个命令做了如下4件事情:
Metro Bundler
服务,这个服务监听了一个端口,默认是8081
, 这个端口很可能被占用,您可以换成其他端口,在metro.config.js
进行配置。运行效果如下:
运行Android程序:
react-native run-android
这个命令会自动编译程序,完成后会尝试安装,所以应该事先连接上Android设备,如下:
以后,我们可以像开发Node.js程序一样进行开发了。