1.ReactNative介绍
React.js Conf 2015会议上,Facebook发布了React Native,可以基于目前大热的开源JavaScript库React.js来开发iOS和Android原生App。它的特点就是脱离传统Hybrid App的思路,基于HTML,CSS,JavaScript重新定义了一套规则。当然FaceBook也同时开源了Nuclide,它是一个针对ReactNative,web,以及原生移动开发的IDE。它基于跨平台文本编辑器Atom构建。
如果你之前用过热修复框架JSPatch,那么对于ReactNative你的理解成本可能会降低。
2.特点
1.我觉得它的最大特点就是易用性,这也是它被推崇的原因,降低了开发成本,它允许我们使用JavaScript来开发近乎原生体验的应用。当然一些手势识别操作,Native App可能更好一些。
开发者可使用标准平台的组件,例如iOS平台上的UITabBarController和UINavigationController,其实直接调用的是ReactNative封装过的原生组件。他能保证我们在不同平台下提供相同的用户体验。它的集成方式也很简单。var React = require('react-native');
var {TabBarIOS,NavigationIOS} = React;
var App = React.createClass({
render:function() {
);
};
});
2.异步执行JavaScript应用代码和原生平台之间的所有操作都是异步执行的,原生模块还可以使用额外的线程,从而利用React Native开发出来的应用性能比较高。此外,开发者还能够在模拟器或者物理设备上运行应用的同时利用Chrome Developer Tools调试JavaScript代码;
3.触摸处理iOS有一个非常强大的系统Responder Chain,可以用来响应复杂视图层级中的事件,但并没有类似功能的web工具。ReactNative可实现类似的响应系统并提供高质量的组件,比如TouchableHighlight,无需额外配置即可与滚动视图和其他元素适度整合。
4.引入了Flebox布局模型和样式Flexbox布局模型有利于构建常见的UI布局,如stacked和nested boxes布局。React Native还支持常见的Web样式,如fontWeight、font-size等。样式表(StyleSheet)抽象提供了一种优化机制来声明组件所用到的所有样式和布局
5.具有PolyfillsPolyfills功能是的开发者编写单独应用的代码而不用担心其他浏览器原生是不是支持。React Native专注于改变试图(Views)代码编写的方式,开发者能够使用npm安装JavaScript Library,并将这些Library融入React Native,如 XMLHttpRequest、window.requestAnimationFrame等。
3.环境需求
OS X - 本向导假设您的操作系统是OS X,因为这是开发iOS应用所必须的。
推荐使用
Homebrew
来安装Watchman和Flow
安装
Node.js
4.0或更高版本(译注:如果你并不使用Node.js开发网站,只是用于React Native的开发,那么请先安装homebrew,然后直接使用
brew install node
安装即可,不必按照下面的nvm的安装步骤)
- 安装 nvm(安装向导在这里)。然后运行
nvm install node && nvm alias default node
,这将会默认安装最新版本的Node.js并且设置好命令行的环境变量,这样你可以输入node
命令来启动Node.js环境。nvm使你可以同时安装多个版本的Node.js,并且在这些版本之间轻松切换。 - 如果你从未接触过npm,推荐阅读npm的文档
在命令行中输入
brew install watchman
,我们推荐安装
watchman
,否则你可能会遇到一个Node.js监视文件系统的BUG。
如果你希望使用
flow
来为js代码加上类型检查,那么在命令行中输入
brew install flow
来安装flow。(译注:新手可以跳过这一步)
我们推荐您定期运行brew update && brew upgrade
来保持上述几个程序为最新版本。
iOS开发环境准备
你需要安装Xcode 7.0或者更高版本。你可以在App Store中找到并安装Xcode。
译注:如果您选择从第三方网站/镜像下载Xcode,请务必从正规镜像网站下载验证文件Hash以防止类似XcodeGhost的安全风险发生,不要信任论坛、百度空间等分享渠道
Android开发环境准备
要使React Native应用支持Android,首先需要安装Android SDK (如果你不想连接安卓设备,那么还需要一个安卓模拟器)。参见 Android开发指南 了解如何搭建安卓开发环境。
注: 现在Windows和Linux也在实验性的支持Android开发。
译注: Windows用户可以参考这个帖子来搭建环境。
快速开始
$ npm install -g react-native-cli
$ react-native init AwesomeProject
译注:由于众所周知的网络原因,react-native命令行从npm官方源拖代码时会遇上麻烦。请将npm仓库源替换为国内镜像:
npm config set registry https://registry.npm.taobao.org
npm config set disturl https://npm.taobao.org/dist
另,执行init时切记不要在前面加上sudo(否则新项目的目录所有者会变为root而不是当前用户,导致一系列权限问题,请使用chown修复)。
本站论坛区提供了完整的绿色纯净新项目包。完整打包全部iOS和Android的第三方依赖,只要环境配置正确,无需科学上网漫长等待,解压即可直接运行。
运行iOS应用
$ cd AwesomeProject
用XCode打开
ios/AwesomeProject.xcodeproj
并点击Run按钮。
使用你喜欢的文本编辑器打开
index.ios.js
并随便改上几行。
在iOS Emulator中按下
⌘-R
就可以刷新APP并看到你的最新修改!
运行Android应用
$ cd AwesomeProject
$ react-native run-android
使用你喜欢的文本编辑器打开
index.android.js
并随便改上几行
⌘+M
)然后选择 Reload JS 就可以看到你的最新修改。adb logcat *:S ReactNative:V ReactNativeJS:V
可以看到你的应用的日志。注:: 如果你打算在真实设备而非模拟器上运行,参见在设备上运行
恭喜!现在你已经成功运行并修改了你的第一个React Native应用!
如果你在以上过程中遇到了任何问题,可以看看论坛里总结的常见问题。
为已有的React Native工程添加Android支持
如果你已经有了一个只有iOS版本的React Native工程,并且希望添加Android支持,你需要在你的工程目录下运行以下命令:
package.json
文件,在dependencies项中找到react-native
,并将其后的版本号修改为最新版本。$ npm install
$ react-native android