React Native - 搭建开发环境

首先让我们先来初步了解下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也有很多不足:

  1. 对于开发者,他们更希望"Write Once,Run Anywhere",这样可以大大降低开发者的开发成本;然而React Native主张"Learn Once, Write Anywhere",这样就要求开发者为每个平台分别开发。相信这里面会有一些可以复用的模块,但是在其他平台都采用"Write Once,Run Anywhere"模式的情况下,React Native的开发成本还是相对较高。
  2. 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的入门文档
译注:我们更推荐使用WebStormSublime 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并看到你的最新修改!

恭喜!你已经成功运行并修改了你的第一个React Native应用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容