張帥桐
摘要:移動APP是移動互聯(lián)網(wǎng)時代的重要支柱,隨著智能終端設(shè)備在全世界的普及,大大小小的公司都在設(shè)法把自身的業(yè)務(wù)往移動終端設(shè)備上轉(zhuǎn)變,從而對于移動APP的開發(fā)與運營也有了極大的需求。本文將結(jié)合近年流行的技術(shù),對四種移動APP開發(fā)模式進行探討。
關(guān)鍵詞:APP開發(fā)模式;Web App;Native App;Hybrid App;React Native App
中圖分類號:TP393 文獻標(biāo)識碼:A 文章編號:1009-3044(2017)06-0087-02
伴隨著4G網(wǎng)絡(luò)的發(fā)展與移動終端設(shè)備的普及,移動APP成為了企業(yè)在用戶身邊的重要表現(xiàn)形式,移動APP主要安裝在用戶的手機中,是公司宣傳以及公司與用戶開展業(yè)務(wù)的重要媒介。
經(jīng)統(tǒng)計,中國的網(wǎng)民約有7.31億,與全歐洲的人口總和相當(dāng),其中使用手機上網(wǎng)人群已高達(dá)95.1%。目前移動端APP開發(fā)擁有巨大的市場,并且未來隨著智能穿戴設(shè)備、智能家居和人工智能的迅猛發(fā)展,移動APP還具有十分大的發(fā)展空間。
如今開發(fā)出一款成功的APP已經(jīng)成為公司運營的重要一環(huán),但APP的開發(fā)模式很多,不同模式的實現(xiàn)機理不同,因而會在APP的開發(fā)成本、運行性能、升級維護和用戶體驗等方面造成不同的影響。
1主要開發(fā)模式
APP的主要開發(fā)模式主要分為四類,第一類是原生應(yīng)用開發(fā),即Native App。原生應(yīng)用開發(fā)由于手機操作系統(tǒng)的不同又分為成了兩部分,基于Android平臺的Java語言開發(fā)和基于iOS平臺的Objective-C語言/Swift語言開發(fā)。第二類是移動網(wǎng)頁應(yīng)用開發(fā),即Web App。網(wǎng)頁應(yīng)用開發(fā)是利用Web技術(shù),使用HTML、CSS和JavaScript開發(fā)用于移動端顯示的網(wǎng)頁。第三類是把Native App和Web App結(jié)合的混合開發(fā)模式,即Hybrid App。第四類是基于React Native框架的JavaScript語言開發(fā)的類原生應(yīng)用,即React Native App。
1.1 Native App開發(fā)模式
Native App是本地開發(fā)方式,基于手機操作系統(tǒng)進行開發(fā),利用Java、Objective-C或Swift語言進行程序開發(fā),然后編譯成字節(jié)碼或機器碼后經(jīng)操作系統(tǒng)調(diào)度運行。
由于操作系統(tǒng)不同以及開發(fā)語言的不同,當(dāng)今最流行的兩大移動端平臺Android和iOS各有自己的一套獨立的開發(fā)模式,兩大平臺差異較大。現(xiàn)以iOS平臺為例簡述下Native App的開發(fā)模式。首先需要在Mac OS X系統(tǒng)上安裝蘋果公司開發(fā)的IDE——Xcode。Xcode內(nèi)擁有開發(fā)iOS Native App快捷高效的Cocoa Touch框架,是開發(fā)原生iOS程序的不二選擇。在Xcode中創(chuàng)建一個Single View Application工程后選用Swift語言開發(fā),會自動生成以Main.storyboard、AppDelegate.swift、ViewController.swift開發(fā)核心的若干文件。其中Main.storyboard用于構(gòu)建各個頁面之間跳轉(zhuǎn)關(guān)系和具體頁面布局,在Xcode的右下角有可拖拽的若干控件,拖拽控件到Main.storyboard后結(jié)合AutoLayout為各個控件添加各種布局約束,來保證界面在不同大小的屏幕上的適配。AppDelegate.swift是為iOS程序做一些初始化設(shè)置,主要用于在APP啟動時為重要的數(shù)據(jù)結(jié)構(gòu)進行初始化,以及響應(yīng)APP運行時事件,如程序啟動、程序運行內(nèi)存不足、程序切換等。程序員可在AppDelegate.swift中的相關(guān)函數(shù)里對事件響應(yīng)進行操作。ViewController.swift就是iOS程序中的初始界面,是UI控件和程序邏輯的控制器。程序員主要通過ViewController.swift中的viewDidLoad和viewWillAppear等方法對iOS程序的數(shù)據(jù)層和視圖層進行控制,來表達(dá)APP的業(yè)務(wù)邏輯。
Native App開發(fā)模式的優(yōu)勢在于Native App是編譯后的文件,執(zhí)行速度快,界面動畫十分流暢,對網(wǎng)絡(luò)的依賴性小,用戶體驗很好。Native App基于平臺層可以非常方便地調(diào)用操作系統(tǒng)提供的各種功能,如調(diào)用攝像頭、推送信息和讀取本地通訊錄等。
Native App開發(fā)模式的劣勢主要是:開發(fā)周期長,兩套獨立的知識體系復(fù)雜且學(xué)習(xí)成本高,依賴操作系統(tǒng)而無法進行跨平臺開發(fā),APP版本升級繁瑣需要重新把源文件編譯打包再由用戶下載覆蓋安裝。
1.2 Web App開發(fā)模式
Web App是移動網(wǎng)頁開發(fā)模式,借鑒了傳統(tǒng)Web開發(fā)方式,利用HTML、CSS、JavaScript等技術(shù)模仿Native App的界面結(jié)構(gòu),開發(fā)適合于移動端顯示的網(wǎng)頁,并通過手機上的瀏覽器解釋執(zhí)行。
與Native App開發(fā)模式相比,Web App開發(fā)模式的優(yōu)勢有以下幾點。首先,知識體系與原本開發(fā)網(wǎng)頁的方式相似,便于大量的傳統(tǒng)網(wǎng)頁開發(fā)人員學(xué)習(xí);其次,網(wǎng)頁是跨平臺的,相同的業(yè)務(wù)邏輯無須迎合操作系統(tǒng)的不同而開發(fā)Android和iOS兩個APP;最后,Web App運營升級簡單,只需要把服務(wù)器上的網(wǎng)頁代碼進行修改即可,用戶不用重新安裝,無須官方審核進入應(yīng)用商店。
但Web App存在著很多致命缺陷,過度依賴于網(wǎng)絡(luò),沒有網(wǎng)絡(luò)的Web App幾乎沒有任何功能,頁面跳轉(zhuǎn)需要發(fā)送網(wǎng)絡(luò)請求再通過瀏覽器解釋執(zhí)行交互時間長,而且Web App是基于瀏覽器開發(fā)的,所以無法很好地調(diào)用操作系統(tǒng)提供的功能,這些缺陷使得Web App的用戶體驗很差。
1.3 Hybrid App開發(fā)模式
Hybrid App是混合開發(fā)模式,這種模式將Native App與Web App進行混合開發(fā),一部分基本界面用手機系統(tǒng)的原生語言開發(fā),另一部分功能界面用Web技術(shù)開發(fā)移動端網(wǎng)頁,利用原生語言中的WebView進行顯示網(wǎng)頁。
Hybrid App結(jié)合了Native App和Web App兩種開發(fā)模式,把這兩種開發(fā)模式的優(yōu)點和缺點折中互補?;窘缑媸遣粫?jīng)常修改的,需要修改的功能界面用網(wǎng)頁來實現(xiàn),修改時只需更改服務(wù)器中的網(wǎng)頁,實現(xiàn)了功能界面的跨平臺,減輕了開發(fā)成本?;窘缑娉Ec用戶進行交互,用原生語言進行開發(fā),在功能和性能方面比Web App有了較大的提高,提高了用戶體驗。
這種混合開發(fā)的折中方式越來越受到重視,微信和移動QQ等程序都采用了這種方式,從各個方面迎合了需求。
1.4 React Native App開發(fā)模式
React Native App是采用React Native框架開發(fā)的跨平臺移動應(yīng)用。目前支持最流行的兩大移動平臺——iOS和Android。React Native App開發(fā)模式使用JavaScript、CSS和類似HTML的JSX進行開發(fā),這個框架的原理是基于網(wǎng)頁開發(fā)技術(shù)并利用JavaScript語言與兩大平臺上的原生語言Java和Objective-C進行交互,互相調(diào)用,從而達(dá)到使用JavaScript來寫原生應(yīng)用的目的。React Native App存在著原生模塊和JavaScript模塊,原生模塊是一個或多個線程,JavaScript模塊只是一個單線程與原生模塊異步執(zhí)行。程序最開始執(zhí)行是在原生模塊中,之后原生模塊會調(diào)用JavaScript模塊,程序員把程序代碼用JavaScript語言寫在JavaScript模塊中,JavaScript代碼由手機上的JS解釋器執(zhí)行。React Native內(nèi)封裝了原生的iOS組件和Android組件可在兩大平臺上很好的適配,并且利用Virtual DOM方式更好的渲染UI組件,再加上diff算法獲得UI組件在事件響應(yīng)時需要更新的部分,極大地提高了React Native App的性能,使其能與原生程序媲美。
React Native App幾乎具備前幾種開發(fā)模式所有的優(yōu)點。JavaScript可與Java和Objective-C互相調(diào)用,從而可以方便地使用操作系統(tǒng)的功能。只學(xué)習(xí)React Native這套理論就可以開發(fā)兩個主流平臺的App。程序的JavaScript代碼放在服務(wù)器上,用戶在本地備份執(zhí)行,在程序升級更新時客戶端自動從服務(wù)器下載代碼到本地解釋執(zhí)行,實現(xiàn)了熱更新,JavaScript代碼占用的空間很小相當(dāng)于一份文檔,如今的網(wǎng)絡(luò)速度下載這份代碼用戶幾乎察覺不到,而且React Native App的性能只比Native App差一點,比Web App和hybrid App強很多,用戶體驗較好。
2 結(jié)束語
移動互聯(lián)網(wǎng)的浪潮,推動著移動開發(fā)技術(shù)的不斷發(fā)展,移動App的開發(fā)模式也豐富了起來。本文探討了目前主流的四種開發(fā)模式,這些模式都存在著自身的優(yōu)勢與不足,在實際開發(fā)前應(yīng)仔細(xì)權(quán)衡開發(fā)人員的知識體系和開發(fā)成本。個人認(rèn)為React Native App是發(fā)展趨勢,適合學(xué)習(xí)。不過目前React Native框架還在實驗發(fā)展階段,還沒有Native App開發(fā)模式成熟,最近幾年內(nèi)應(yīng)還會以Hybrid App為主要開發(fā)模式。
參考文獻:
[1] 楊毅.移動APP開發(fā)模式探討[J].福建電腦,2014(6):86-87.
[2] 高晶.校園業(yè)務(wù)中混合模式移動應(yīng)用軟件架構(gòu)的實現(xiàn)[J].中國信息技術(shù)教育,2015(15):119-121.
[3] 黃悅深.基于HTML5的移動WEB APP開發(fā)[J].圖書館雜志,2014(7):72-76.
[4] 嚴(yán)新巧.基于移動開發(fā)現(xiàn)狀探討React Native[J].電腦知識與技術(shù),2016(32):76-82.
[5] 潘婷婷.React Native在APP開發(fā)中的應(yīng)用研究[J].無線互聯(lián)科技,2016(19):142-143.