移动APP是移动互联网时代的重要支柱,随着智能终端设备在全世界的普及,大大小小的公司都在设法把自身的业务往移动终端设备上转变,从而对于移动APP的开发与运营也有了极大的需求。本文将结合近年流行的技术,对四种移动APP开发模式进行探讨。
伴随着4G网络的发展与移动终端设备的普及,移动APP成为了企业在用户身边的重要表现形式,移动APP主要安装在用户的手机中,是公司宣传以及公司与用户开展业务的重要媒介。
经统计,中国的网民约有7.31亿,与全欧洲的人口总和相当,其中使用手机上网人群已高达95.1%。目前移动端APP开发拥有巨大的市场,并且未来随着智能穿戴设备、智能家居和人工智能的迅猛发展,移动APP还具有十分大的发展空间。
如今开发出一款成功的APP已经成为公司运营的重要一环,但APP的开发模式很多,不同模式的实现机理不同,因而会在APP的开发成本、运行性能、升级维护和用户体验等方面造成不同的影响。
1主要开发模式
APP的主要开发模式主要分为四类,第一类是原生应用开发,即Native App。原生应用开发由于手机操作系统的不同又分为成了?刹糠郑?基于Android平台的Java语言开发和基于iOS平台的Objective-C语言/Swift语言开发。第二类是移动网页应用开发,即Web App。网页应用开发是利用Web技术,使用HTML、CSS和JavaScript开发用于移动端显示的网页。第三类是把Native App和Web App结合的混合开发模式,即Hybrid App。第四类是基于React Native框架的JavaScript语言开发的类原生应用,即React Native App。
1.1 Native App开发模式
Native App是本地开发方式,基于手机操作系统进行开发,利用Java、Objective-C或Swift语言进行程序开发,然后编译成字节码或机器码后经操作系统调度运行。
由于操作系统不同以及开发语言的不同,当今最流行的两大移动端平台Android和iOS各有自己的一套独立的开发模式,两大平台差异较大。现以iOS平台为例简述下Native App的开发模式。首先需要在Mac OS X系统上安装苹果公司开发的IDE――Xcode。Xcode内拥有开发iOS Native App快捷高效的Cocoa Touch框架,是开发原生iOS程序的不二选择。在Xcode中创建一个Single View Application工程后选用Swift语言开发,会自动生成以Main.storyboard、AppDelegate.swift、ViewController.swift开发核心的若干文件。其中Main.storyboard用于构建各个页面之间跳转关系和具体页面布局,在Xcode的右下角有可拖拽的若干控件,拖拽控件到Main.storyboard后结合AutoLayout为各个控件添加各种布局约束,来保证界面在不同大小的屏幕上的适配。AppDelegate.swift是为iOS程序做一些初始化设置,主要用于在APP启动时为重要的数据结构进行初始化,以及响应APP运行时事件,如程序启动、程序运行内存不足、程序切换等。程序员可在AppDelegate.swift中的相关函数里对事件响应进行操作。ViewController.swift就是iOS程序中的初始界面,是UI控件和程序逻辑的控制器。程序员主要通过ViewController.swift中的viewDidLoad和viewWillAppear等方法对iOS程序的数据层和视图层进行控制,来表达APP的业务逻辑。
Native App开发模式的优势在于Native App是编译后的文件,执行速度快,界面动画十分流畅,对网络的依赖性小,用户体验很好。Native App基于平台层可以非常方便地调用操作系统提供的各种功能,如调用摄像头、推送信息和读取本地通讯录等。
Native App开发模式的劣势主要是:开发周期长,两套独立的知识体系复杂且学习成本高,依赖操作系统而无法进行跨平台开发,APP版本升级繁琐需要重新把源文件编译打包再由用户下载覆盖安装。
1.2 Web App开发模式
Web App是移动网页开发模式,借鉴了传统Web开发方式,利用HTML、CSS、JavaScript等技术模仿Native App的界面结构,开发适合于移动端显示的网页,并通过手机上的浏览器解释执行。
与Native App开发模式相比,Web App开发模式的优势有以下几点。首先,知识体系与原本开发网页的方式相似,便于大量的传统网页开发人员学习;其次,网页是跨平台的,相同的业务逻辑无须迎合操作系统的不同而开发Android和iOS两个APP;最后,Web App运营升级简单,只需要把服务器上的网页代码进行修改即可,用户不用重新安装,无须官方审核进入应用商店。
但Web App存在着很多致命缺陷,过度依赖于网络,没有网络的Web App几乎没有任何功能,页面跳转需要发送网络请求再通过浏览器解释执行交互时间长,而且Web App是基于浏览器开发的,所以无法很好地调用操作系统提供的功能,这些缺陷使得Web App的用户体验很差。
1.3 Hybrid App开发模式
Hybrid App是混合开发模式,这种模式将Native App与Web App进行混合开发,一部分基本界面用手机系统的原生语言开发,另一部分功能界面用Web技术开发移动端网页,利用原生语言中的WebView进行显示网页。 Hybrid App结合了Native App和Web App两种开发模式,把这两种开发模式的优点和缺点折中互补。基本界面是不会经常修改的,需要修改的功能界面用网页来实现,修改时只需更改服务器中的网页,实现了功能界面的跨平台,减轻了开发成本。基本界面常与用户进行交互,用原生语言进行开发,在功能和性能方面比Web App有了较大的提高,提高了用户体验。
这种混合开发的折中方式越来越受到重视,微信和移动QQ等程序都采用了这种方式,从各个方面迎合了需求。
1.4 React Native App开发模式
React Native App是采用React Native框架开发的跨平台移动应用。目前支持最流行的两大移动平台――iOS和Android。React Native App开发模式使用JavaScript、CSS和类似HTML的JSX进行开发,这个框架的原理是基于网页开发技术并利用JavaScript语言与两大平台上的原生语言Java和Objective-C进行交互,互相调用,从而达到使用JavaScript来写原生应用的目的。React Native App存在着原生模块和JavaScript模块,原生模块是一个或多个线程,JavaScript模块只是一个单线程与原生模块异步执行。程序最开始执行是在原生模块中,之后原生模块会调用JavaScript模块,程序员把程序代码用JavaScript语言写在JavaScript模块中,JavaScript代码由手机上的JS解释器执行。React Native内封装了原生的iOS组件和Android组件可在两大平台上很好的适配,并且利用Virtual DOM方式更好的渲染UI组件,再加上diff算法获得UI组件在事件响应时需要更新的部分,极大地提高了React Native App的性能,使其能与原生程序媲美。
React Native App几乎具备前几种开发模式所有的优点。JavaScript可与Java和Objective-C互相调用,从而可以方便地使用操作系统的功能。只学习React Native这套理论就可以开发两个主流平台的App。程序的JavaScript代码放在服务器上,用户在本地备份执行,在程序升级更新时客户端自动从服务器下载代码到本地解释执行,实现了热更新,JavaScript代码占用的空间很小相当于一份文档,如今的网络速度下载这份代码用户几乎察觉不到,而且React Native App的性能只比Native App差一点,比Web App和hybrid App强很多,用户体验较好。
2 结束语
移动互联网的浪潮,推动着移动开发技术的不断发展,移动App的开发模式也丰富了起来。本文探讨了目前主流的四种开发模式,这些模式都存在着自身的优势与不足,在实际开发前应仔细权衡开发人员的知识体系和开发成本。个人认为React Native App是发展趋势,适合学习。不过目前React Native框架还在实验发展阶段,还没有Native App开发模式成熟,最近几年内应还会以Hybrid App为主要开发模式。