1.1.1 一次学习,随处编写
- 使用React-Native可以为iOS/Android这两个操作系统开发应用程序,不同平台上的代码根据平台会有一些微小的区别,但是开发思路是相同的。只需要根据平台进行一些代码调整。React Native提出了“Learn Once,write anywhere”。
1.1.2 混合开发
- 混合开发是React Native的另一个重要特性。React Native允许开发者在React Native擅长的领域使用React Native开发,而在React Native不方便实现的领域(这些领域很小,并且与手机操作系统有密切的关联,如通讯录处理、通话记录处理、用户日历处理等)或者已经有原生代码实现好的领域直接使用原生代码。React Native代码开发的模块与原生代码开发的模块可以双向通信、无缝衔接。
- 通用的UI界面与业务逻辑由React Native开发,但与手机平台紧密关联的处理由原生代码来执行。
- 将原来使用原生代码实现的UI小部件包装成React Native的自定义组件。
- 应用界面在React Native开发的界面与原生代码开发的界面间切换。
1.1.3 高效的移动应用开发
- 使用RN开发移动应用,绝大部分UI界面与业务逻辑都是一套代码。并且使用React Native开发移动应用的UI界面比使用原生语言快捷高效,而业务逻辑部分开发效率与原生代码相仿。因此使用RN开发移动应用,比使用两个平台不同的开发语言个开发一个应用,能节省50%甚至更多的工作量。UI开发是React Native的强项,这体现在4个方面上。
- 独特的UI实现框架( 复杂UI界面开发难点的本质问题是:如何将来自于网络侧与用户侧的动态数据高效、实时、正确地呈现在复杂的用户界面上。Facebook的React框架是这个问题的一个优秀解决方案。)
- 组件化开发(React强调将应用划分成多个互不相关的组件,每个组件作为一个独立的视图。这使得开发者更容易进行软件迭代升级,因为不用在改动某一小部分时把整个系统都梳理一遍。最重要的是,React包装了复杂而易变的数据到对象的实现,改为提供一个声明式的结构,是的整个程序模型变得抽象而简单。这样开发出来的代码结构清晰、共用性高、可移植性高。)
- 跨平台移植代码迅速
- 自动匹配不同屏幕大小的手机(使用React Native开发,开发者无须为不同的屏幕分辨率准备不同的图片资源或者布局文件甚至可以不考虑屏幕大小的问题。通过灵活的布局方式,React Native可以做到在不同的手机屏幕上高效、清晰的UI呈现。)
1.1.4 高效的移动应用开发调试
- 在原生开发过程中,开发者的每一次改动都需要经理重新编译和构建,然后把安装包上传到手机的过程,这使得开发者在做很多工作时变得非常缓慢,尤其是当一个大工程的编译特别慢时。使用React Native开发,修改了代码后立刻可以在手机上看到效果,没有重新编译启动程序所需要的时间。并且可以打开一个Chrome窗口,所有的代码都移到Chrome里面运行,断点调试、但不调试、调用栈追踪这些常用的调试方法都可以进行操作。
1.1.5 灵活高效的应用热更新
- 使用React Native开发的移动应用可以灵活高效地进行版本热更新。用户不论是使用Android还是iPhone手机下载了应用之后,开发者都可以在用户基本无感知的情况下加入新界面、新功能与新的业务逻辑。每次热更新需要下载的数据量在200KB~1MB这个量级(视移动应用复杂程序而定)。与之相比,使用原生代码开发的应用在需要进行更新时,需要启动下载任务(Android系统)或者提醒用户去苹果应用市场下载新版本。需要下载的数据量是RN热更新下载数据量的10倍左右。
1.1.6 有效的降低移动应用安装包体积
- 对于普通复杂度的移动应用,使用RN实现的安装包会比原生代码实现的安装包大。但当移动应用复杂度不断上升时,RN就会显示出它的优势。当原生代码实现的安装包大于15MB后,开发者会惊奇的发现,使用RN改写代码后,安装包小于原生代码实现的安装包。移动应用功能越复杂,RN安装包相比原生代码安装包就越小。
1.1.7 学习门槛低、开发难度低
- 开发语言简单: React Native使用ECMAScript 2015(虽然它穿上了件很华丽的“马甲”,但我们还是一眼就认出来它就是JavaScript)语言(也简称为ES6),以及自创的JSX语言(通俗些说,就是在JavaScript中加入一些标签化的XML)来进行开发。JavaScript是一门使用很广泛的语言。也是一门很特殊的语言,它很简单但也可以非常复杂。React Native从一开始就注意到了JavaScript的不足之处,要求在React Native开发中使用JavaScript的“严格模式”, 并且采用更先进的ECMAScript 2015,能够做到取其精华,去其糟粕。
- 语法接近自然语言:React Native开发中的函数名、变量名都采用类似于自然语言的命名法,便于记忆。这种代码,语句的含义上基本上可以直接推断与理解。因此学习简单,容易上手。
- 积木式UI开发:使用React Native开发UI时,是一种类似于搭积木的方式。不论是设计还是实现,通过React Native框架都能做到逻辑结构清晰、开发难度低、可读性高、后期修改维护方便。
1.1.8 开发软硬件要求低
- 使用React Native开发对软硬件要求低,这意味着开发者不需要再掏钱购买电脑硬件与相关软件。React Native开发用软件都是免费下载、安装使用的正版软件,部分是开源软件。对硬件要求也不高。
1.1.9 使用React Native开发的代价
- 内存消耗略大 :使用React Native开发的程序运行的所需内存比原生代码开发的程序略多。开发者开发调试时,React Native项目通常运行在“开发者模式”下,这时最简单的Hello World程序会比原生代码的Hello World程序多用20MB内存,这是正常的。当使用发布模式编译项目后,React Native项目占用的内存会比开发模式小很多,最简单的Hello World程序会与原生代码的Hello World程序消耗的内存相差不大。
- 运行速度:使用React Native开发的代码的运行速度比原生代码略慢。速度慢的缺点可以通过两方面来弥补。一是普通的功能(如UI展示、HTTP请求等),React Native实现的速度比原省代码慢,但用户感觉不出来,因此不需要加快。二是核心的功能,通过原生代码来开发,也就是混合开发移动应用程序。需要特别指出的是,开发者开发调试时,React Native项目通常运行在“开发模式下”,因为有很多特殊的任务需要执行(例如:验证属性类型,产生各种调试信息与警告信息,显示这些信息),代码的运行速度要比“发布模式”下的代码运行速度慢。
网友评论