淺談移動應用的技術選型

在這個巨變的時代,技術選型是個很難做決定的事情,而移動應用技術領域在幾個巨頭(Google,F(xiàn)acebook虚茶,Apple etc.)的帶動下更是日新月異。所以說要選擇一個適合業(yè)務需求并且匹配開發(fā)人員能力的技術方案并不是一件簡單的事情仇参。我也只是在移動開發(fā)上做過一點微小的工作嘹叫,此處僅能拋個磚,希望各位有玉的大神盡管砸過來诈乒。

做移動應用開發(fā)罩扇,說起來技術方案不外乎HTML5(沒錯,做Mobile Web其實也算是一種移動應用)、Native(在Android上不管是用Java喂饥、Kotlin還是Scala消约,iOS上不管是用Objective-C還是Swift)和使用原生UI,用JavaScript來實現(xiàn)邏輯的諸如React Native一類的方案员帮。除此之外或粮,還有結(jié)合HTML5和Native的Hybird混合方案。不同的技術方案有著不同的適應場景捞高,至于具體如何選擇氯材,接下來我簡單地談談自己的理解。

1硝岗、HTML5

也就是Web App的方案氢哮。這種方案最大的優(yōu)點在于“Write Once, Run Everywhere”,不管你是Android還是iOS型檀,都可以用一套代碼搞定冗尤,在國內(nèi)的話還能對接微信公眾號,給用戶提供一個方便快捷的入口贱除,并且還有版本升級容易的優(yōu)勢(畢竟服務器是受自己控制的)生闲。但是這種方案的缺點也很明顯——無法使用系統(tǒng)級API,只能做為一個臨時的入口月幌,用戶很難留存碍讯,并且因為瀏覽器性能的原因,很難帶來很好的用戶體驗扯躺。

所以說Web App的主要適用場景還是在于作為對非核心業(yè)務在移動端的入口補足捉兴,或者是作為用戶輕量、低頻使用的體驗增強录语。

美團移動網(wǎng)站引導頁

美團移動網(wǎng)站首頁

美團的移動網(wǎng)頁就是很典型的例子倍啥,主要還是提供給不經(jīng)常使用的用戶一個入口,網(wǎng)站內(nèi)部還是在盡量引導用戶下載使用客戶端澎埠。

2虽缕、Hybird

Hybird是一種兼顧Native與HTML的開發(fā)模式,但根據(jù)實現(xiàn)的不同蒲稳,還可以再細分為兩種實現(xiàn)方案:

  • 在Native App中使用WebView加載遠端Web資源
  • 使用Cordova/PhoneGap等框架通過WebView加載本地資源進行頁面渲染

第一種方案其實已經(jīng)應用得非常普遍了氮趋,很多應用的展示頁面都是通過這種方式實現(xiàn)的。因為展示頁面需要的正是能夠輕易更換內(nèi)容及布局的格式江耀,并且這種純展示的頁面也并不需要復雜的動畫與特效剩胁,使用Web頁面是一個非常合適的解決方案。

而第二種方案前一段時間非诚楣火昵观,因為它在跨平臺,在高效開發(fā)以及快速發(fā)布上有著明顯的優(yōu)勢,畢竟Web內(nèi)容只需要開發(fā)一次就可以在各個平臺使用啊犬。而且將資源打包到本地也可以在一定程度上緩解從遠端加載靜態(tài)資源導致UI展示延遲的問題灼擂,并且還可以通過橋接Native和Web來調(diào)用一些Device的API。但其劣勢也很明顯觉至,一是通過WebView執(zhí)行代碼效率較低缤至,很難實現(xiàn)一些炫酷的效果,并且還存在不同設備的兼容性問題康谆;二是如果想調(diào)用相關平臺的API,需要針對平臺單獨進行開發(fā)嫉到,如果在應用中用到了大量的Device API沃暗,那么開發(fā)的效率將大大降低;三是很難應用到平臺相關的新特性何恶,比較難做出有特色的產(chǎn)品孽锥。

使用HTML頁面來實現(xiàn)純展示頁面是非常推薦的一種方案。而Cordova/PhoneGap則更適用于對Mobile預算有限的公司细层、創(chuàng)業(yè)團隊惜辑,或者對App進行快速的上線驗證。

正好之前有個項目就用到了這種方案疫赎,為一家業(yè)務轉(zhuǎn)型的零售商提供了使用一套基本代碼來完成Android和iOS兩個平臺的App和微信公眾號的相關頁面的技術方案盛撑。

零售商Android應用零售商微信端

3、React Native

把React Native單獨拿出來捧搞,是因為確實不能簡單的將它分到其它任意一種方案里面去抵卫。React Native確實是最近最火的跨平臺App解決方案了。它脫胎于React胎撇,因為React基于Virtual DOM來進行界面渲染介粘,所以用Native的View來替換掉原本React的HTML DOM就順理成章的引出了React Native的概念。

它與之前的跨平臺方案有一個本質(zhì)的區(qū)別晚树,在于:其它方案都在追求寫一次code解決所有平臺的問題姻采,而React Native的理念在于“Learn Once, Write Anywhere”。雖然大部分代碼是平臺無關的爵憎,但是平臺相關的代碼都需要單獨實現(xiàn)慨亲,這雖然對跨平臺帶來了不便,但是引入的好處也是顯而易見的纲堵,View層的部分通過原生組件實現(xiàn)巡雨,性能比其他WebView的方案不知道高到哪去了。而且React Native整套的邏輯代碼都通過JavaScript實現(xiàn)席函,這樣就讓跨平臺應用能夠方便的復用邏輯代碼铐望。另外雖然React Native沒有支持使用CSS來實現(xiàn)樣式,但是提供了類似CSS的樣式表支持,有過UI開發(fā)經(jīng)驗的人都能夠非痴埽快的上手督弓。由于前端React也是非常的火,很多React社區(qū)的很多產(chǎn)出都可以在React Native上借鑒使用乒验。

React Native對于沒有復雜動畫效果的一般應用來說不失為一個很好的解決方案愚隧。而且對于一些小型的企業(yè)級應用也是非常適用的。但是锻全,React Native對于Android平臺的支持度是不如iOS平臺的狂塘,而且現(xiàn)有的非常成熟的應用也較少,所以說如果要在一些面向用戶量很大鳄厌,講求用戶體驗的App中使用還是要慎重考慮的荞胡。

但是,其實Facebook已經(jīng)在自家的App上用起來了了嚎,而且實測效果還是很好的泪漂。不過呢,人家畢竟是自家維護的歪泳,所以說真正要在項目上用可能還是得試了才知道效果萝勤。

facebook Androidfacebook iOS

4、原生應用

原生應用的開發(fā)真的是讓人又愛又恨呐伞。愛在于你可以在它上面施展拳腳敌卓、使用新特性、實現(xiàn)炫酷的效果荸哟。而恨則在于它跨平臺性幾乎為零假哎,除了資源外幾乎沒有可重用的東西,即使是相似架構(gòu)上的邏輯你也得再實現(xiàn)一遍鞍历。使用原生開發(fā)舵抹,能夠方便地添加動畫效果,調(diào)用底層硬件劣砍,所有的限制僅僅是來自平臺的限制惧蛹。但是正常情況下需要對不同的平臺搭配不同的開發(fā)人員,而且如果要追求良好的用戶體驗刑枝,整個應用的設計還得滿足相應平臺的設計規(guī)范香嗓,這不僅是對Dev的考驗,也是對UX的考驗装畅。不過如果真的對App的質(zhì)量有很高的要求靠娱,我覺得這一切的付出也還是都是值得的。

如果針對的是要求硬件性能掠兄、講究動畫效果像云、追求用戶體驗的應用锌雀,還是建議分平臺單獨設計,并且都使用原生的技術方案來實現(xiàn)迅诬。其實這也是目前市面上大部分企業(yè)做出的選擇腋逆。

使用原生開發(fā)我個人還有一個觀點,就是設計上要盡量遵守原生應用的設計規(guī)范侈贷,如果想要一套設計通吃所有平臺惩歉,最終只會搞一個不倫不類的應用出來。知乎算是國內(nèi)在這方面做得比較好的應用了俏蛮,也取得了不錯的效果撑蚌。

知乎

其實,在真正啟動項目之前搏屑,在進行技術選型時锨并,除了要考慮更符合業(yè)務的架構(gòu)外,還要考慮開發(fā)人員的能力及技術棧睬棚。畢竟最后App還是由Dev們開發(fā)的。如果僅僅考慮業(yè)務而不考慮開發(fā)人員的技術能力來選擇技術方案解幼,不僅有一種欽定的感覺抑党,而且最后往往坑到的還是自己。

我們常說:工具是死的撵摆,人是活的底靠。考慮多種因素特铝,在技術選型上做出更充分的考量暑中,才是真正正確的選擇。所以說又回到那句老話上:“It depends…”

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鲫剿,一起剝皮案震驚了整個濱河市鳄逾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌灵莲,老刑警劉巖雕凹,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異政冻,居然都是意外死亡枚抵,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門明场,熙熙樓的掌柜王于貴愁眉苦臉地迎上來汽摹,“玉大人,你說我怎么就攤上這事苦锨”破” “怎么了趴泌?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長圾旨。 經(jīng)常有香客問我踱讨,道長,這世上最難降的妖魔是什么砍的? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任痹筛,我火速辦了婚禮,結(jié)果婚禮上廓鞠,老公的妹妹穿的比我還像新娘帚稠。我一直安慰自己,他們只是感情好床佳,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布滋早。 她就那樣靜靜地躺著,像睡著了一般砌们。 火紅的嫁衣襯著肌膚如雪杆麸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天浪感,我揣著相機與錄音昔头,去河邊找鬼。 笑死影兽,一個胖子當著我的面吹牛揭斧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播峻堰,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼讹开,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了捐名?” 一聲冷哼從身側(cè)響起旦万,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎镶蹋,沒想到半個月后纸型,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡梅忌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年狰腌,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片牧氮。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡琼腔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出踱葛,到底是詐尸還是另有隱情丹莲,我是刑警寧澤光坝,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站甥材,受9級特大地震影響盯另,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜洲赵,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一鸳惯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧叠萍,春花似錦芝发、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至腹殿,卻和暖如春独悴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锣尉。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工绵患, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人悟耘。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像织狐,于是被迫代替她去往敵國和親暂幼。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容