1.React Native 是什么?
成功案例.pngReact Native 是Facebook开源的一套框架,其目的在于使用JavaScript语言编写iOS native的控件。更直白的讲就是,你用JS(JavaScript,下同)写的代码通过react-native lib桥接到Xcode中写的标准iOS程序中。在JS程序中,开发者可以使用react native定义的一套和cocoa touch中UI控件类等价的类,来完成UI层的开发工作,Xcode 编译器 会利用 react-native lib将JS写的代码编译成iOS原生的UI组件,下图展示了利用Xcode的视图调试功能展示了JS代码编译的结果,可以看到,这些JS语言最终确实是被编译成了UIView等对象,而不是H5界面经常使用的webview,有了这个认识之后,我们对react native就不在那么陌生了。
优点
-
交互比web更加流畅;
-
基于状态驱动的界面更新机制,变量与UI进行绑定,前者改变时 后者会发生变化;
缺点
- 量级较大 客户端人员使用成本较大,学习JSX语法,React知识,学习ES6,函数式编程思想;
- 复杂交互效果可能支持不到位;
- iOS端上线几率降低(禁止热更新);
2.React Native 的开发环境 image
安装 Homebrew
Homebrew, Mac系统的包管理器,用于安装NodeJS和一些其他必需的工具软件。
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
在Max OS X 10.11(El Capitan)版本中,homebrew在安装软件时可能会碰到/usr/local目录不可写的权限问题。可以使用下面的命令修复
sudo chown -R `whoami` /usr/local
使用Homebrew来安装Node.js.
brew install node
安装完node后建议设置npm镜像以加速后面的过程(或使用科学上网工具)。注意:不要使用cnpm!cnpm安装的模块路径比较奇怪,packager不能正常识别!
Yarn、React Native的命令行工具(react-native-cli)
Yarn是Facebook提供的替代npm的工具,可以加速node模块的下载。React Native的命令行工具用于执行创建、初始化、更新项目、运行打包服务(packager)等任务。
npm install -g yarn react-native-cli
推荐安装的工具
-
Watchman是由Facebook提供的监视文件系统变更的工具。安装此工具可以提高开发时的性能(packager可以快速捕捉文件的变化从而实现实时刷新)。译注:此工具官方虽然是
推荐
安装,但在实践中,我们认为此工具是必须
安装,否则可能无法正常开发。
brew install watchman
- Flow是一个静态的JS类型检查工具。译注:你在很多示例中看到的奇奇怪怪的冒号问号,以及方法参数中像类型一样的写法,都是属于这个flow工具的语法。这一语法并不属于ES标准,只是Facebook自家的代码规范。所以新手可以直接跳过(即不需要安装这一工具,也不建议去费力学习flow相关语法)。
brew install flow
点击这里阅读Nuclide的入门文档。
译注:我们更推荐使用WebStorm或Sublime Text或Visual Studio Code来编写React Native应用。所有这些开发工具都是跨平台的。其中webstorm是收费的,体量较大,功能较多,基本无需配置。其他工具免费,相对轻量,但或多或少需要下载插件和配置。
测试安装
!!!注意!!!:init命令默认会创建最新的版本,而目前最新的0.45及以上版本需要下载boost等几个第三方库编译。这些库在国内即便翻墙也很难下载成功,导致很多人无法运行iOS项目
!!!中文网在论坛中提供了这些库的国内下载链接。如果你嫌麻烦,又没有对新版本的需求,那么可以暂时创建0.44.3
的版本。
提示:你可以使用--version参数(注意是两个杠)创建指定版本的项目。例如react-native init MyApp --version 0.44.3。注意版本号必须精确到两个小数点。
react-native init AwesomeProject
cd AwesomeProject
react-native run-ios
工程目录
工程目录.png属性以及使用
ReactNative iOS源码解析(一)
ReactNative iOS源码解析(二)
高仿美团客户端React-Native版,支持iOS、Android - React Native
个人意见
1.这个项目本身是开源驱动的,跟原生的比较起来缺失了很多特性和可定制化;
- 性能问题 通过框架转化中间多层调用没有直接调用快。
3.学习复杂度很高,还带有各种不可预知的坑。
网友评论