React Native师出名门,于2015年11月初成为真正的跨平台移动应用开发框架。本书从零开始切入React Native开发,逐一讲解各个组件,包括页面导航、弹出框、OS平台Object c语言混合开发、flexbox布局、Image、View与可触摸组件等,适用 Android和苹果两系统手机开发,是移动开发者学习React Native不可多得的入门宝典。
React Native是Facebook公司最新推出的,强大的、开源的跨平台移动应用开发框架,它能大幅减少跨平台移动应用开发的工作量,并且代码结构清晰、简单易懂。同时React Native框架采用模块化结构,使应用版本的更新迭代非常简单。随着它的日趋成熟,React Native必然会成为移动应用开发的主流技术。 本书由浅入深、系统地介绍了使用React Native框架跨平台开发所需要用到的知识。本书每一章都专注于阐述某一方面的知识,配合若干个原创的、精小的例程,能让读者系统、快速地掌握该方面知识。 本书是按照有基本的编程基础知识,刚学习JavaScript基本语法的读者最佳学习路径来编写的。有一定基础的开发人员也可以将本书作为React Native开发的“字典”来使用,在开发时可以快速查找相关知识点的细节。
资深技术专家良心原创精品!
移动开发者学习React Native不可多得的入门宝典!
前 言
我对移动应用开发大势的粗浅理解
我必须向大家坦白:我现在是个没有良心的人。因为写这本书不仅把我的良心用完了,还透支了很多。本书共34万字,其中代码只占了16万字。在计算机语言编程类书籍中,这是一个比较低的比例了。本书所有的示例代码都是原创,并且在代码旁有注释解说,绝没有扔一大段代码给读者自己慢慢看的情况。
仔细想来,所有主流手机平台应用开发我都涉足过,它们是J2ME、Symbian、Series 60开发平台、Windows Mobile、Android、iOS、Windows Phone。许多年前我写过一本Series 60平台移动应用开发的书。当我写到一大半时,Symbian手机操作系统、Nokia手机、Series 60开发平台这片森林从地球表面消失了……
如果问这么多年我对移动应用开发最深的感触是什么,那就是移动应用开发太特么的难了!难就难在应用需要能运行在不同的手机上。开发者的代码要适配不同的手机操作系统(这意味着要使用不同的编程语言编写)、不同的手机硬件能力(比如开发者的应用需要使用GPS定位,然后发现某型号手机没有GPS定位功能)、不同的手机屏幕分辨率(想象一下当开发者发现应用程序在另一种屏幕分辨率下显示得乱七八糟时的惊喜)。
随着科技的发展,手机开发也在向好的方向不停地转变。Android与iOS两大手机操作系统称霸江湖(这种稳定对开发者是一件好事儿,相互竞争也让两大操作系统都在不断地提升完善)。手机硬件配置越来越强大,能力越来越强大,价格越来越平易近人。手机现在已经成为了普通老百姓无时无刻不随身携带的电脑。伴随着这种趋势,市场对移动应用开发的需求也越来越多,并且要求越来越高。
这么多年来,移动应用开发者做梦都希望有一个能跨平台的开发工具,让他们不要把同一个移动应用使用不同的开发语言写两遍(或者三四遍)。但跨平台开发工具的实现很难,很多先驱者倒在了这条路上。直到Facebook给大家带来了React Native。
让我以一个预言结束我的唠叨吧。在西方传说故事里那些没良心的巫师的预言忒准了,所以请读者对我的预言稍微有些信心。嗯,我的水晶球呢?啊,在这里。(装模作样好长一段时间)预言:我看到了一个新的伏地魔正在崛起,他会统治这个世界,他那高高的巫师帽上React Native这个名字不时地散发着邪恶的光芒!
写作本书的目的
React Native项目代码是开源的,项目代码中的例程也是开源的,项目文档也是在网上公开的,所有人都可以非常方便地获取浏览。但目前React Native的文档假设它的读者有相当深厚的开发方面的知识与经验,并且有React.js开发基础。也就是说,React Native的公开文档对初学者并不是非常友好的。React Native项目中的例程代码对初学者而言同样有些高深。在各个React Native论坛上,React Native的文档不够好是大家的共识。
笔者非常努力地把这本书写好,让它从简入深,通俗易懂。本书绝对不是粗制滥造、简单翻译的书籍。书中讲述的知识点结构、例程设计都倾注了笔者大量的心血,与网上公开文档的差别非常大。本书对读者最大的价值是:把读者通过阅读网上公开文档、项目例程学习RN开发技术所需要的800小时左右的时间(视个人基础有所不同)缩短为300小时左右。
本书中的6.5节、第11章、14.5节都是笔者精心整理调研出来的技术,在官方文档中没有提及,希望能让更多的开发者享受到React Native开发的便利性。
希望通过本书,能将React Native开发技术介绍给国内广大开发者,让国内移动应用开发进入一个新的时代,让开发者用比较少的精力就能高效、美观地完成移动应用开发。
读者对象
本书的读者对象如下:
? Android平台移动应用研发工程师
? iOS平台移动应用研发工程师
? JavaScript软件研发工程师
? 计算机相关专业的学生
如何阅读本书
React、React.js、React Native
对于初学者常见的困惑是弄不清React、React.js、React Native三者之间的关系。这是情有可原的。初学者经常发现在很多讨论React Native技术的资料中,怎么突然说到React.js上去了?过一会儿怎么又好象说到React基础框架上去了?因此在讨论如何阅读本书之前,有必要先说明一下这三者的关系。React是基础框架,是一套基础设计实现理念,开发者不能直接使用它来开发移动应用或者网页。在它之上发展出了React.js框架用来开发网页,发展出来React Native用来开发移动应用。因为React基础框架与React.js框架是同时出现、同时进化发展的,这就造成了React基础框架的基本概念、设计思想都是在React.js的相关文档中描述的。后来,Facebook推出React Native后,也没有把React的相关概念文档从React.js文档中分离出来。这就导致出现了学React Native要去看React.js文档,说React Native不时会说到React.js的情况。如果开发者只想关注移动应用开发,那么在React.js的如何开发网页的文档中整理出来React基础框架知识是个不轻松的活儿。现在,本书推出了,有了这本书,读者可以不用再去看React.js文档了。
预备知识
学习React Native开发需要基础的JavaScript编程知识。我估计有一部分读者可以在某个手机平台使用该平台原生语言进行移动应用开发,但对JavaScript只是有所耳闻。如果是这种情况,不用担心。读者只需要随便找一本JavaScript入门级的书籍(甚至是网上的教学性网页),阅读关于基础语法的章节,花上一天时间(包括找资料的时间)学习相关知识点,接下来就可以通过本书学习React Native开发了。所需要的知识点有:
(1)JavaScript语法。包括语句、注释、变量、数据类型、数组(注意关联数组,Java、C++的数组中没有这个概念)、对象的基本知识。
(2)操作运算符。这个与Java、C++基本上是一样的,读者快速过一下就行了。
(3)条件语句、循环语句、switch语句。这个与Java、C++基本上是一样的,读者快速过一下就行了。
(4)函数。JavaScript中函数也是一种变量,知道了这一点,其他与Java、C++基本上是一样的,读者快速过一下就行了。
(5)对象。JavaScript的对象定义、实现比Java、C++宽松很多。读者得稍微适应一下。
这些基本的知识点,大多与Java或者Objective-C的相关知识点很类似。如果读者有基础,阅读这些知识点最多只需要一天的时间(半天看完也不是难事儿)。读者不需要搭建JavaScript的开发环境来练习、巩固这些知识点。因为在React Native的开发环境中编写代码就可以练习这些基本的JavaScript知识点,在React Native学习中就会巩固这些JavaScript基本知识。
React Native在开发中用到了其他JavaScript的高级知识点与ES 6的一些新特性。但读者不需要马上去学习这些内容。在通过本书学习React Native开发过程中需要使用到的JavaScript高级知识点时,会指出在附录A的什么位置讲解了这些高级知识点,便于读者快速查看。附录A不是JavaScript知识点的全面讲解,只是让读者对React Native开发中需要使用到的JavaScript知识点的理解足够进行React Native开发。
相关下载地址
笔者希望读者在阅读本书时,能在理解的基础上将例程代码输入到电脑中。输入的过程是一个消化吸收的过程。输入完成后,运行代码,并且按照提示或者针对自己有疑虑的地方进行修改,以便深入理解各个知识点。
正因为如此,本书前面章节中那些短小精悍的例程并没有附在一张光盘上,或者在网上提供下载地址,而是需要读者自己手动输入进电脑。
本书还有一些不需要读者手动输入的代码,笔者在GitHub上提供了一个网址供读者自行下载。网址是:https://github.com/xitaoque。
本书结构
本书讨论的React Native开发特性覆盖了2016年3月2日发布的React Native 0.21.0版本的绝大部分特性。没有讨论的部分在书末有提及。
首先需要说明的是,本书讨论的知识以跨平台(Android平台与iOS平台)开发为主,书中各章节的绝大部分知识点都是跨平台实现的。只有极小部分是分平台实现的,这一小部分在讨论前都会说明该部分知识适用于哪个平台。
本书的结构是按一个有基本的编程基础知识,刚学习JavaScript基本语法的读者最佳学习路径来编写的。通过一个个精简的例程,阐述清楚一个个基本思想。例程尽可能地精简,并且所有例程都是笔者花了大量时间为初学者构思而成的。
本书体例说明
代码与代码说明
本书例程中有大量的代码说明,通过注释的方式与代码同时展示出来。例如:
var IncomingCall = React.createClass({
watcher: null, //用来记录监视器
startFromLeft:true, //用来判断用户最先按下的是最左侧还是最右侧
moveNeedhandle:false, //用来判断监测到的移动事件是否需要处理
注释以黑体字显示以提醒读者注意。读者在自己的开发环境中输入例程时不需要输入注释。
React Native代码中的JSX部分代码不能使用这种注释方式,本书为了统一注释风格还是使用了这种注释方式。读者明白了这一点后,在自己输入代码实验时,将代码中的注释自行去掉。
注意和提示
注意和提示,是需要提醒读者特别注意的内容。在本书中使用带背景色的字体显示。
致谢
感谢我的父亲阙光金老师与我的母亲袁雪英老师从小到大给我的无私的爱。很抱歉无论我如何努力,也无法回报二老深恩的万分之一。
感谢我的姐姐阙喜戎与姐夫王纯,没有你们的鼎力支持,就没有今天的我。
感谢王汝馨伯父与曾钰伯母,谢谢你们对我的关怀与照顾。
感谢廖建新教授、饶牧老师在我学习工作期间对我的关怀与指导。感谢在我七年北京邮电大学学习期间为我授业解惑的所有老师,谢谢你们!
感谢React Native开发团队,感谢所有参与React Native开发的贡献者。无数移动开发者因为你们无私的奉献而受益。
感谢电子工业出版社郭立总经理、孙学瑛编辑等审校此书的辛勤工作,以及为此书能快速出版而付出的巨大努力。你们辛苦了!
感谢在工作和生活中帮助过我的所有人,感谢你们,正是因为有了你们,才有了本书的面世。
关于勘误
虽然花了很多时间和精力去核对书中的文字、代码和图片,但因为时间仓促和水平有限,书中仍难免会有一些错误和纰漏,如果大家发现什么问题,请反馈给我,相关信息可在下载本书代码的GitHub页面反馈。