文中涉及到的幾個(gè)概念(信息來(lái)自百度百科和百度知道):
- Native App(原生APP)開(kāi)發(fā):該開(kāi)發(fā)針對(duì)IOS歧杏、Android等不同的手機(jī)操作系統(tǒng)要采用不同的語(yǔ)言和框架進(jìn)行開(kāi)發(fā),該模式通常是由“云服務(wù)器數(shù)據(jù)+APP應(yīng)用客戶端”兩部份構(gòu)成迷守,APP應(yīng)用所有的UI元素犬绒、數(shù)據(jù)內(nèi)容、邏輯框架均安裝在手機(jī)終端上兑凿。
- Web App開(kāi)發(fā):即是一種框架型APP開(kāi)發(fā)模式(HTML5 APP 框架開(kāi)發(fā)模式)凯力,該開(kāi)發(fā)具有跨平臺(tái)的優(yōu)勢(shì),該模式通常由“HTML5云網(wǎng)站+APP應(yīng)用客戶端”兩部份構(gòu)成礼华,APP應(yīng)用客戶端只需安裝應(yīng)用的框架部份咐鹤,而應(yīng)用的數(shù)據(jù)則是每次打開(kāi)APP的時(shí)候,去云端取數(shù)據(jù)呈現(xiàn)給手機(jī)用戶圣絮。
- Hybrid App:是指介于web-app祈惶、native-app這兩者之間的app,它雖然看上去是一個(gè)Native App,但只有一個(gè)UI WebView扮匠,里面訪問(wèn)的是一個(gè)Web App捧请。
一、Web App體驗(yàn)
最近因?yàn)楸荣愋枰羲眩捎跁r(shí)間不怎么充裕疹蛉,便利用PHP寫(xiě)了服務(wù)器端,jQuery Mobile寫(xiě)了一個(gè)整個(gè) APP的框架(只是簡(jiǎn)單的框架)和內(nèi)容力麸,然后再借助android的WebView控件顯示頁(yè)面可款,就這樣傳說(shuō)中的Web App就新鮮出爐了。當(dāng)然這只是簡(jiǎn)單的一個(gè)小應(yīng)用末盔,真正的Web App開(kāi)發(fā)還牽涉到更多的知識(shí),這里我們不做討論座慰。
雖然是如此簡(jiǎn)單的一個(gè)小應(yīng)用陨舱,卻也五臟俱全。實(shí)現(xiàn)了按鈕版仔,頁(yè)面切換游盲,列表信息顯示等功能误墓。而且想要更改頁(yè)面布局或者內(nèi)容,直接在服務(wù)器端更改益缎,更改后不用重新打包谜慌,打開(kāi)APP就能直接更新。
綜上所述莺奔,Web App有以下幾個(gè)特點(diǎn)
- (1) 框架型APP應(yīng)用的安裝包小巧欣范,只包含框架文件,而大量的UI元素令哟、數(shù)據(jù)內(nèi)容剛存放在服務(wù)器端恼琼;
- (2) APP用戶每次都可以訪問(wèn)到實(shí)時(shí)的最新的服務(wù)器端數(shù)據(jù);
- (3)APP用戶無(wú)須頻繁更新APP應(yīng)用屏富,與服務(wù)器端實(shí)現(xiàn)的是實(shí)時(shí)數(shù)據(jù)交互晴竞;
Web App雖然開(kāi)發(fā)起來(lái)簡(jiǎn)單好用,但是隨著需要用到的涉及手機(jī)的功能越來(lái)越多狠半,Web App漸漸顯得力不從心了噩死,于是只好采用Native App開(kāi)發(fā)。
二神年、Native App開(kāi)發(fā)
因?yàn)槭且粋€(gè)人開(kāi)發(fā)已维,為了開(kāi)發(fā)節(jié)省時(shí)間,我便開(kāi)始在網(wǎng)上瘋狂的找APP框架瘤袖。一開(kāi)始感覺(jué)怎么著也得是那種狂拽酷炫屌炸天的效果吧衣摩,運(yùn)行了一個(gè)有一個(gè),卻發(fā)現(xiàn)很多都是徒有其表捂敌,為了效果把代碼弄的是各種復(fù)雜艾扮,實(shí)用性一點(diǎn)都不強(qiáng)。只好退而求其次占婉,找簡(jiǎn)單的泡嘴。
終于找到一個(gè)合適的,又費(fèi)了半天的功夫調(diào)試安裝后卻發(fā)現(xiàn)資料不全逆济,能不能繼續(xù)下去都是個(gè)問(wèn)題酌予。很想放棄然而已經(jīng)花費(fèi)了這么多的精力不能說(shuō)放棄就放棄吧,于是就咬著牙把代碼重新梳理整合了一下奖慌,總算把整體框架搭建好了抛虫,不過(guò)想要調(diào)用之前的腳本實(shí)現(xiàn)與服務(wù)器端交互,效果卻不是很理想简僧,只能重新構(gòu)建服務(wù)器端邏輯了,造成的結(jié)果是生成的APP應(yīng)用的安裝包是之前的兩倍多建椰。
綜上所述,Native App有以下幾個(gè)特點(diǎn):
- (1)原生型APP應(yīng)用的安裝包相對(duì)較大岛马,包含UI元素棉姐、數(shù)據(jù)內(nèi)容屠列、邏輯框架;
- (2)手機(jī)用戶無(wú)法上網(wǎng)也可訪問(wèn)APP應(yīng)用中以前下載的數(shù)據(jù)伞矩。
- (3)原生型的APP可以調(diào)用手機(jī)終端的硬件設(shè)備(語(yǔ)音笛洛、攝像頭、短信乃坤、GPS苛让、藍(lán)牙、重力感應(yīng)等)
三侥袜、Hybrid App開(kāi)發(fā)
如你所見(jiàn)蝌诡,Web APP無(wú)法調(diào)用手機(jī)終端的硬件設(shè)備,訪問(wèn)速度受手機(jī)終端上網(wǎng)的限制枫吧,而Native App雖然可以充分利用設(shè)備的特性浦旱,但是開(kāi)發(fā)起來(lái)難度和代價(jià)卻大。Hybrid App卻綜合了二者的特點(diǎn)九杂。下面就一ionic的使用體驗(yàn)颁湖,談?wù)凥ybrid App開(kāi)發(fā)體驗(yàn)。
ionic 是一個(gè)專注于用WEB開(kāi)發(fā)技術(shù)例隆,基于HTML5創(chuàng)建類似于手機(jī)平臺(tái)原生應(yīng)用的一個(gè)開(kāi)發(fā)框架甥捺。綁定了AngularJS和Sass。這個(gè)框架的目的是從web的角度開(kāi)發(fā)手機(jī)應(yīng)用镀层,基于PhoneGap的編譯平臺(tái)镰禾,可以實(shí)現(xiàn)編譯成各個(gè)平臺(tái)的應(yīng)用程序。
首先安裝ionic唱逢,確保電腦已經(jīng)安裝:Node.js(下載包)吴侦,JDK(webstorm 運(yùn)行環(huán)境),Android SDK (Android編譯)坞古,Android Studio备韧。(具體教程請(qǐng)參照 輕松學(xué)習(xí)Ionic (一) 搭建開(kāi)發(fā)環(huán)境,并創(chuàng)建工程)
$ npm install -g ionic cordova
$ionic start iotApp tabs
cd iotApp
ionic platform add android
然后痪枫,打開(kāi)Android studio導(dǎo)入E:\Android\iotApp\platforms\android(這是本人電腦上的路徑)织堂,導(dǎo)入后就可以編輯APP了。
如你所見(jiàn)奶陈,僅僅修改HTML文件就可以直接在APP上顯示了易阳,當(dāng)然還有很多功能等待大家探索,本人只是拋磚引玉吃粒。
四潦俺、總結(jié)
雖然水平有限,只是簡(jiǎn)單地帶大家和我一起體驗(yàn)了三種開(kāi)發(fā)方式,現(xiàn)在回到原題(不然會(huì)被罵標(biāo)題黨的)黑竞,那么純Native App開(kāi)發(fā)模式還能走多久呢?個(gè)人覺(jué)得隨著技術(shù)的更新迭代應(yīng)該走不了多久疏旨,雖然最近“微軟發(fā)招很魂、蘋(píng)果發(fā)飆:React Native遭躺槍”這樣的新聞很火(PS.React Native也是一個(gè)移動(dòng)應(yīng)用開(kāi)發(fā)框架),但是還是阻擋不了混合應(yīng)用開(kāi)發(fā)的腳步檐涝。
上面這張圖片可以看出遏匆,Hybrid App的原生體驗(yàn)相對(duì)于Web App,已經(jīng)有了不小的進(jìn)步谁榜,再加上其對(duì)JS與生俱來(lái)的支持幅聘,相信不久的將來(lái)其體驗(yàn)會(huì)越來(lái)越好。
以上僅屬于個(gè)人實(shí)際體驗(yàn)和觀點(diǎn)窃植。最后以 Atwood定律結(jié)尾:
凡是能用JavaScript寫(xiě)出來(lái)的帝蒿,最終都會(huì)用JavaScript寫(xiě)出來(lái)。