首先让我们先来初步了解下React Native。
React Native是Facebook于2015年年初推出的一个开源框架,实现以JavaScript开发移动应用。该框架基于Facebook于2013年推出React框架,但是支持原生控件调用。框架目前只推出了iOS平台,但已经受到国内外移动开发者的追捧。从GitHub上的统计数据看,自React Native开源至现在的3个月时间,已经有170位贡献者对项目进行了1790余次的提交。
最近React Native吸引了越来越多的人去关注。渐渐的越来越多的App开始应用React Native来开发。究竟为什么React Native会受到众多企业的欢迎呢?
站在企业的就角度上分析,选择React Native的4个理由:
1. JavaScript使用门槛低
JavaScript是Netscape公司开发的一种基于浏览器客户端的、面向对象的、解释性的脚本语言,JavaScript语言的特点:
•语法简单、使用灵活
•跨平台:所有的移动、PC平台都集成了内置浏览器,对JavaScript有很好的支持
•事件驱动式的设计思想,使开发思路更清晰
•单线程处理,没有复杂的线程机制 由于JavaScript在WEB前端拥有强大的技术优势,几乎100%的网页脚本语言都采用的是JavaScript.
2. 使用JavaScript开发,开发成本低
使用JavaScript做开发,浏览器兼容问题一直是一个让开发者很棘手的问题。而在移动端(iOS和Android平台上),由于内置浏览器都采用Webkit内核,因而在使用JavaScript开发时,完全无需考虑浏览器兼容问题,进一步降低了JavaScript的开发成本,这也是众多跨平台开发工具采用JavaScript的原因之一。
React Native采用了JSX语法糖工具。JSX是一种语法转换工具,能够将XML标签转换为JavaScript代码。这意味着,你可以在JavaScript里像写XML一样去写JavaScript代码,不用手动拼接XML格式的字符串,不用显示地创建标签和执行插入标签操作,而且这样写出来的代码可读性非常强。
3.原生UI,UI交互效率高
在React Native之前,跨平台的JavaScript移动端解决方案,都是采用WEB开发模式,开发出来的都是增强版的WEB应用。但由于浏览器的限制:单线程、DOM渲染效率低等原因,WEB页面在移动端的交互体验非常差,和原生应用的体验相距甚远。这也是JavaScript跨平台解决方案有很多,但原生开发仍然不可替代的原因。
React Native另辟蹊径,未采用WEB模式,而是使用JavaScript去开发原生应用。React Native自己实现了一套与原生语言通讯的机制,将JavaScript视为数据源,用原生语言去调用数据源,然后用原生UI来展示,用原生语言来实现事件机制,这样便不再有浏览器单线程、DOM渲染效率低导致的交互体验差的问题。由于JavaScript和原生语言的运行效率很高,因而应用交互体验非常好,堪比原生应用。
4. Facebook的技术支撑
Facebook于13年5月份开源了React项目,而在15年才开源基于React的React Native项目,由此可见,Facebook在前端布局已久,React Native的面世、可谓厚积薄发。Facebook有很强大的开发团队在开发和维护React、React Native项目,而有这样背景的公司在支持,React Native项目势必会有飞速的发展。 React Native是一种思想,有太多值得借鉴的东西,同时,也是一个奇迹。然而,React Native也有很多不足:
- 对于开发者,他们更希望"Write Once,Run Anywhere",这样可以大大降低开发者的开发成本;然而React Native主张"Learn Once, Write Anywhere",这样就要求开发者为每个平台分别开发。相信这里面会有一些可以复用的模块,但是在其他平台都采用"Write Once,Run Anywhere"模式的情况下,React Native的开发成本还是相对较高。
- React Native只推出了iOS平台的开发工具,Android平台尚未推出(预计推出时间为2015年10月份)。Android平台的表现是否会向iOS平台这样优秀?是否需要单独的学习的成本?iOS代码在Android平台的复用性有多大?这些不确定性,必然会增加使用React Native的风险。
作为一个新生的产品,React Native能在移动开发领域创造如此多的概念式突破,俨然已经是一个奇迹。对这样一个产品,我们需要做的,应该是关注、期待,和支持.
工欲善其事,必先利其器。有了大概的了解,接下来我们进入本文的正题,搭建开发环境。
安装
必需的软件
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
Node
使用Homebrew来安装Node.js.
React Native目前需要NodeJS 5.0或更高版本。本文发布时Homebrew默认安装的是最新版本,一般都满足要求。
brew install node
安装完node后建议设置npm镜像以加速后面的过程(或使用科学上网工具)。注意:不要使用cnpm!cnpm安装的模块路径比较奇怪,packager不能正常识别!
npm config set registry https://registry.npm.taobao.org --
globalnpm config set disturl https://npm.taobao.org/dist --global
Yarn、React Native的命令行工具(react-native-cli)
Yarn是Facebook提供的替代npm的工具,可以加速node模块的下载。React Native的命令行工具用于执行创建、初始化、更新项目、运行打包服务(packager)等任务。
npm install -g yarn react-native-cli
安装完yarn后同理也要设置镜像源:
yarn config set registry https://registry.npm.taobao.org --
globalyarn config set disturl https://npm.taobao.org/dist --global
如果你看到EACCES: permission denied。这样的权限报错,那么请参照上文的homebrew译注,修复/usr/local
目录的所有权:
sudo chown -R `whoami` /usr/local
Xcode
React Native目前需要Xcode 8.0 或更高版本。你可以通过App Store或是到Apple开发者官网上下载。这一步骤会同时安装Xcode IDE和Xcode的命令行工具。
虽然一般来说命令行工具都是默认安装了,但你最好还是启动Xcode,并在Xcode | Preferences | Locations,菜单中检查一下是否装有某个版本的Command Line Tools。Xcode的命令行工具中也包含一些必须的工具,比如git等。
推荐安装的工具
Watchman
Watchman是由Facebook提供的监视文件系统变更的工具。安装此工具可以提高开发时的性能(packager可以快速捕捉文件的变化从而实现实时刷新)。
brew install watchman
Flow
Flow是一个静态的JS类型检查工具。译注:你在很多示例中看到的奇奇怪怪的冒号问号,以及方法参数中像类型一样的写法,都是属于这个flow工具的语法。这一语法并不属于ES标准,只是Facebook自家的代码规范。所以新手可以直接跳过(即不需要安装这一工具,也不建议去费力学习flow相关语法)。
brew install flow
Nuclide
Nuclide(此链接需要科学上网)是由Facebook提供的基于atom的集成开发环境,可用于编写、运行和 调试React Native应用。点击这里阅读Nuclide的入门文档。
译注:我们更推荐使用WebStorm或Sublime Text来编写React Native应用。
测试安装
react-native init AwesomeProjectcd AwesomeProjectreact-native run-ios
提示:你可以使用--version
参数创建指定版本的项目。例如react-native init MyApp --version 0.39.2。注意版本号必须精确到两个小数点。
你也可以在Nuclide中打开AwesomeProject
文件夹 然后运行,或是双击ios/AwesomeProject.xcodeproj文件然后在Xcode中点击Run按钮。
修改项目
现在你已经成功运行了项目,我们可以开始尝试动手改一改了:
使用你喜欢的编辑器打开index.ios.js并随便改上几行。
在iOS Emulator中按下⌘-R就可以刷新APP并看到你的最新修改!
网友评论