日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

native APP,hybrid APP和web APP

發(fā)布時間:2024/8/1 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 native APP,hybrid APP和web APP 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

<1>native APP,hybrid APP和web APP三者的區(qū)別

隨著智能手機的普及,移動端應(yīng)用幾乎成為每個互聯(lián)網(wǎng)產(chǎn)品的標配。在快速迭代的互聯(lián)網(wǎng)戰(zhàn)場中高效開發(fā)、低成本上線產(chǎn)品,是每個應(yīng)用開發(fā)團隊追求的目標。此時,選擇合適的應(yīng)用類型和開發(fā)模式便至關(guān)重要。移動應(yīng)用可以粗分為三種:原生應(yīng)用(native app), 網(wǎng)頁應(yīng)用(web app,或HTML5 app),以及它們的混血兒——混合模式移動應(yīng)用(hybrid app)。今天的博文就來和大家簡單聊聊近年來蓬勃發(fā)展的hybrid app。
?

Source:?http://s3.rainmaker-labs.com/wp-content/uploads/Mobile-hybrid-app1.jpg

一、什么是Hybrid Mobile App

Hybrid app從外觀上來看是一個native app,實則只有一個UIWebView,里面訪問的是一個web app,如新聞類和視頻類的應(yīng)用普遍采取該策略:native的框架加上web的內(nèi)容。不同于native app需要針對不同的平臺使用不同的開發(fā)語言(如使用Objective-C、Swift開發(fā)iOS應(yīng)用,使用Java等開發(fā)Android應(yīng)用,使用C#開發(fā)Windows Phone應(yīng)用),hybrid app允許開發(fā)者僅使用一套網(wǎng)頁語言代碼(HTML5+CSS+JavaScript),即可開發(fā)能夠在不同平臺上部署的類原生應(yīng)用 。由于hybrid app結(jié)合了native app良好用戶交互體驗和web app跨平臺開發(fā)的優(yōu)勢,能夠顯著節(jié)省移動應(yīng)用開發(fā)的時間和成本,hybrid app得到越來越多公司的青睞。
?

Source:?Native, HTML5, or Hybrid: Understanding Your Mobile Application Development Options

按照網(wǎng)頁語言和程序語言的混合,hybrid app通常可以分為三種類型:

  • 多View混合型:native view和web view獨立展示,交替出現(xiàn)。 其應(yīng)用主體通常是native app,web技術(shù)作為補充。即在需要的時候,將web view作為獨立的view運行,在web view內(nèi)完成相關(guān)的展示操作。開發(fā)難度與native app相當。舉個栗子:Instagram的timeline使用的是web view。
  • 單View混合型:在同一個view內(nèi),native view和web view為層疊關(guān)系,同時出現(xiàn)。開發(fā)成本較高,難度較大,但是體驗較好。舉個栗子:百度搜索同時實現(xiàn)充分的靈活性和較好的用戶體驗。
  • Web主體型:應(yīng)用主體是web view,穿插native功能,主要以網(wǎng)頁語言編寫。整體開發(fā)難度低,基本可以實現(xiàn)跨平臺;而用戶體驗好壞,主要取決于底層中間件的交互與跨平臺能力。舉個栗子:項目管理工具 Basecamp使用web view呈現(xiàn)內(nèi)容,調(diào)用系統(tǒng)原生API實現(xiàn)界面導航等功能來提高用戶體驗。

  • Hybrid app也并非是完美的解決方案。由于其使用HTML5,某些依賴于復(fù)雜的原生功能或者繁重的過渡動畫的應(yīng)用會出現(xiàn)卡頓;同時,為了模擬native app的UI和感官,需要投入額外的時間和精力;盡管可以跨平臺,但是并不能完全支持所有的設(shè)備和操作系統(tǒng);最后,如果應(yīng)用的體驗不夠原生化,如一個簡單的網(wǎng)站,則還有被Apple App Store拒絕的風險。

    二、 什么時候選擇Hybrid App

    在hybrid app備受追捧的今天,我們也許會隨大流優(yōu)先考慮開發(fā)hybrid app。但是,每個產(chǎn)品各具特色,還沒有哪一種解決方案可以完美地應(yīng)萬變。hybrid app的中庸讓它大放異彩,也限制了它的應(yīng)用場景 。在決定采用一種開發(fā)模式之前,有許多因素需要考慮,諸如:

    • 你希望針對哪個平臺做開發(fā)?
    • 你希望通過應(yīng)用商店發(fā)布應(yīng)用么?
    • 你希望利用手機特有的性能么?
    • 你的團隊技術(shù)能力如何?
    • 你的項目周期和預(yù)算是多少?


    如果要設(shè)計Angry Birds一類對圖形要求很高的游戲,那么在暫不考慮技術(shù)團隊能力的情況下,native app是最優(yōu)選擇;如果要設(shè)計如Yelp一類內(nèi)容導向的應(yīng)用,那么hybrid app會是很好的選擇;如果項目時間緊張,沒有足夠的人手和資金,對圖形和系統(tǒng)原生特性沒有要求,那么web app將是性價比最高的解決方案。
    表一對比了native app, hybrid app和web app在不同方面的表現(xiàn),可以幫助你根據(jù)實際情況選擇最佳的解決方案。

    InfoQ上高嘉峻的一篇文章分享了幾個hybrid app開發(fā)的誤區(qū),也是開發(fā)過程中應(yīng)該盡量避免的:

  • 為了HTML5而hybrid app:HTML5是HTML4.0.1和XHTML1.0的升級版,有更強大的表現(xiàn)功能,并加入了local storage等技術(shù),為web頁面提供了更大的想象空間和更多的可能性。但是,作為發(fā)展中的技術(shù),HTML5收到瀏覽器兼容性和手機硬件水平的影響,能提供的功能和native app扔有一定的差距。開發(fā)應(yīng)用時,首先是要滿足用戶需求,而不是追趕技術(shù)革新的大潮。所以開發(fā)應(yīng)用時,應(yīng)從應(yīng)用本身功能和團隊開發(fā)資源綜合考量,決定是否采用hybrid app開發(fā)模式。
  • 忽略關(guān)鍵因素:Web是基于PC的一種開發(fā)模式,而mobile app運行于移動端。通常,web開發(fā)者使用PC瀏覽器模擬app中的web view進行調(diào)試,而不是直接使用手機上的web view。 二者能支配的CPU資源,最大占有內(nèi)存,運行網(wǎng)絡(luò)環(huán)境,和鼠標/觸控操作,瀏覽器對CSS/JS的解析和對事件的處理有著巨大的差別。而這些差別常常是web頁面能否正常運行于app中的關(guān)鍵因素。
  • 富交互導致體驗差:這主要體現(xiàn)在兩個方面:(1)web與手機平臺默認交互習慣不一致:iOS和Android各有一套交互習慣,包括視覺風格,界面切換,操作習慣等。比如手機端系統(tǒng)風格是左右滑屏來進入或者退出界面,而舊界面保持狀態(tài);web則是默認無論加載還是后退,都會刷新舊界面,造成體驗上的損失。如果模擬native的交互方式,那么會提高開發(fā)成本,卻也難以達到native的流暢性。(2)與native相比同樣的功能在性能上存在差距:Web界面上JS對HTML Node的操作需要消耗大量的CPU資源。首先,手機的CPU性能普遍低于PC端;其次,不同手機之間的硬件水平也參差不齊,比如在iPhone6s上可以流暢運行的界面,在iPhone5、MX5上可能就無法達到同樣的流暢度。
  • 跨平臺:Hybrid app的優(yōu)勢之一是繼承web跨平臺的特性。然而,在智能手機軟硬件版本眾多的今天,兼容性是個不容忽視的問題。不同的安卓操作系統(tǒng)其瀏覽器內(nèi)核對JS和CSS的解析、事件處理會有不同;iOS不同版本之間也存在較大差異。所以,在跨平臺開發(fā)時,兼容性也是需要重點考慮的問題。
  • 交互一致性:這里的一致性并非指同一應(yīng)用在不同平臺上的一致性體驗,而是指在同一平臺上,hybrid app和native平臺的一致性。比如“返回”操作,在iOS平臺上頁面頂部留有一個44像素高的導航欄,左側(cè)的返回按鈕用于返回操作,可以通過絕對地址的方式鏈接到任何其它界面;而Android通常使用設(shè)備提供的返回鍵,返回上一個界面,如果自行配置平臺返回按鈕,那么它會和設(shè)備提供的返回鍵指向不同的位置。
  • ?

    <2>區(qū)分三者

    nativeapp是一個原生程序,一般運行在機器操作系統(tǒng)上,有很強的交互,一般靜態(tài)資源都是在本地的。瀏覽使用方便,體驗度高。在實現(xiàn)上要么使用Objecttive-c和cocoaTouch Framework撰寫iOS程序,要么選擇java+Android Framework撰寫android應(yīng)用程序。

    hybridapp是一個半原生程序,偽造了一個瀏覽器的apk/ipa原生程序,把地址寫死了,然后里面運行了一個webapp。里面是WebView UI 。但是還是運行在機器的操作系統(tǒng)上,交互較弱,資源一般在本地或者網(wǎng)絡(luò)都可以。瀏覽體驗度次之。

    webapp是生存在瀏覽器里的應(yīng)用,所以只能運行在瀏覽器里,宿主是瀏覽器,不再是操作系統(tǒng)。資源一般都在網(wǎng)絡(luò)上。說的根本點就是一個觸屏版的網(wǎng)站

    什么叫做原生App?
    原生App是專門針對某一類移動設(shè)備而生的,它們都是被直接安裝到設(shè)備里,而用戶一般也是通過網(wǎng)絡(luò)商店或者賣場來獲取例如 The App Store 與 Android Apps on Google Play . 隨便說幾個原生App的例子,比如iOS 的 Camera+ 以及Android 的 KeePassDroid

    什么叫做移動Web App?
    一般說來,移動Web App都是都是需要用到網(wǎng)絡(luò)的,它們利用設(shè)備上的瀏覽器(比如iPhone的Safari)來運行,而且它們不需要在設(shè)備上下載后安裝。

    什么是混合app?
    Hybrid App是指介于web-app、native-app這兩者之間的app,它雖然看上去是一個Native App,但只有一個UI WebView,里面訪問的是一個Web App,比如街旁網(wǎng)最開始的應(yīng)用就是包了個客戶端的殼,其實里面是HTML5的網(wǎng)頁,后來才推出真正的原生應(yīng)用。再徹底一點的,如掌上百度和淘寶客戶端Android版,走的也是Hybrid App的路線,不過掌上百度里面封裝的不是WebView,而是自己的瀏覽內(nèi)核,所以體驗上更像客戶端,更高效。
    綜合一下就是:“Hybrid App同時使用網(wǎng)頁語言與程序語言開發(fā),通過應(yīng)用商店區(qū)分移動操作系統(tǒng)分發(fā),用戶需要安裝使用的移動應(yīng)用”??傮w特性更接近Native App但是和Web App區(qū)別較大。只是因為同時使用了網(wǎng)頁語言編碼,所以開發(fā)成本和難度比Native App要小很多。因此說,Hybrid App兼具了Native App的所有優(yōu)勢,也兼具了Web App使用HTML5跨平臺開發(fā)低成本的優(yōu)勢。

    Web App是指基于Web的系統(tǒng)和應(yīng)用,運行在高端手機的網(wǎng)絡(luò)和瀏覽器上,用網(wǎng)頁技術(shù)開發(fā)實現(xiàn)特定功能的應(yīng)用,對手機性能要求比較高。

    Native App(原生開發(fā)):目前較為成熟,各大公司均采用此方式。但是其人工成本較高,同一個項目,至少需要Android端、iOS端、Web端三個開發(fā)團隊。

    Hybrid App(混合開發(fā)),基于第三方跨平臺移動應(yīng)用引擎框架進行開發(fā)。使用HTML5和JS作為開發(fā),調(diào)用引擎封裝的底層功能如照相機、傳感器、通訊錄等。

    拿酒來形象化這三種模式的話:

    Web App就像白酒那樣渾厚甘醇,度數(shù)高,但不適合任何人的口味,制造成本低,

    Native App就是葡萄酒,分紅白類型,對葡萄品質(zhì)要求高,口味大眾化,比較成熟,

    Hybrid App就是雞尾酒,混合了多種酒的優(yōu)勢,非常適合跨平臺,是以后的一個App開發(fā)趨勢。

    ?

    <3>區(qū)分native APP ,web APP,hybrid APP

    1、Native App

    Native App是一種基于智能手機本地操作系統(tǒng)如iOS、Android、WP并使用原生程式編寫運行的第三方應(yīng)用程序,也叫本地app。一般使用的開發(fā)語言為JAVA、C++、Objective-C。
    想創(chuàng)建Native App,開發(fā)者必須編寫源代碼,使用由操作系統(tǒng)開發(fā)商提供的工具,對源代碼進行編譯。代碼編譯之后以2進制或者字節(jié)碼的形式運行在操作系統(tǒng)上,直接調(diào)用操作系統(tǒng)的Device API。
    雖然不同操作系統(tǒng)上進行的開發(fā)過程常常很相似,但是每一種移動操作系統(tǒng)都隨帶各自的獨特工具。平臺之間的這些區(qū)別導致了Native開發(fā)方法的最重大缺點之一:為一種移動平臺編寫的代碼無法在另一種平臺上使用。Native App的優(yōu)缺點總結(jié)如下:
    優(yōu)點

    1、提供最佳的用戶體驗,最優(yōu)質(zhì)的用戶界面,最華麗的交互
    2、針對不同平臺提供不同體驗
    3、下載到本地,可節(jié)省帶寬成本
    4、可訪問本地資源
    5、直接訪問系統(tǒng)級API
    6、操作速度更快
    7、用戶留存率高

    缺點

    1、移植到不同平臺上比較麻煩
    2、需要維護多個版本
    3、發(fā)布新版本需要通過store或market的確認
    4、盈利需要與第三方分成
    5、開發(fā)的成本比較大,需要針對不同平臺開發(fā)相應(yīng)的版本
    6、更新體驗較差、同時也比較麻煩(每一次發(fā)布新的版本,都需要做版本打包,且需要用戶手動更新,或一個讓用戶反感的提示)。

    2、Web App

    Web App是運行于網(wǎng)絡(luò)和標準瀏覽器上,以HTML+JS+CSS等WEB技術(shù)開發(fā)實現(xiàn)特定功能的應(yīng)用。通過瀏覽器來調(diào)用Device API,但是只有數(shù)量有限的這些API向瀏覽器里面運行的Web App公開?;诋斚麻_始普及流行的HTML5,Web App可以實現(xiàn)很多原本Native App才可以實現(xiàn)的功能,,比如LBS的功能、本地數(shù)據(jù)存儲、音視頻播放的功能,甚至還有調(diào)用照相機和結(jié)合GPU的硬件加速功能。
    由于它不依賴于操作系統(tǒng),因此開發(fā)了一款Web App后,基本能應(yīng)用于各種系統(tǒng)平臺。并且還有版本升級容易的優(yōu)勢(畢竟服務(wù)器是受自己控制的)。但是這種方案的缺點也很明顯——無法使用系統(tǒng)級API,只能做為一個臨時的入口,用戶很難留存。Web App的優(yōu)缺點總結(jié)如下:
    優(yōu)點

    (1)開發(fā)成本低;
    (2)更新快;
    (3)更新無需通知用戶,不需要手動升級;
    (4)能夠跨多個平臺和終端;
    (5)維護比較簡單。

    缺點

    (1)臨時性的入口;
    (2)無法獲取系統(tǒng)級別的通知,提醒,動效等等;
    (3)用戶留存率低;
    (4)需要依賴網(wǎng)絡(luò),體驗較差。

    3、Hybrid App

    Hybrid App是一種用Native技術(shù)來搭建App的外殼,殼里的內(nèi)容由Web技術(shù)來提供的移動應(yīng)用,兼具“Native App良好交互體驗的優(yōu)勢”和“Web App跨平臺開發(fā)的優(yōu)勢”。
    根據(jù)實現(xiàn)的不同,可以細分為兩種實現(xiàn)方案:
    (1)在Native App中使用WebView加載遠端Web資源

    這種方案的Web資源放置在服務(wù)器上,開發(fā)者不必經(jīng)歷提交和批準過程——有些App商店要求這個過程,就可以對App進行小幅更新。遺憾的是,這個方法擯棄了任何離線可用性,因為設(shè)備與網(wǎng)絡(luò)沒有連接時,無法訪問設(shè)備。

    (2)將一組HTML、JavaScript、CSS和媒體文件,封裝到App代碼中,存儲在設(shè)備本地,使用Cordova/PhoneGap等框架通過WebView加載本地資源進行頁面渲染

    把Web代碼封裝到App里面在一定程度上緩解從遠端加載靜態(tài)資源導致UI展示延遲的問題,可以提高性能和可訪問性,并且還可以通過橋接Native和Web來調(diào)用一些Device的API。
    但是其劣勢也很明顯,一是不允許遠程更新;二是安裝包變大;三是如果想調(diào)用相關(guān)平臺的API,需要針對平臺單獨進行開發(fā),如果在應(yīng)用中用到了大量的Device API,那么開發(fā)的效率將大大降低。

    Hybrid App同時使用網(wǎng)頁語言與程序語言開發(fā),但其總體特性更接近Native App。只是因為同時使用了web語言編碼,所以開發(fā)成本和難度比Native App要小很多。因此,Hybrid App兼具了Native App的優(yōu)勢,也兼具了Web App使用HTML5跨平臺開發(fā)低成本的優(yōu)勢。

    三種App之間的比較

    特征Native AppWeb AppHybrid App
    適用場景(1)偏操作互動多的工具類應(yīng)用; </br>(2)需要訪問特定的原生API;</br>(3)對速度要求較高。(1)作為對非核心業(yè)務(wù)在移動端的入口補足;</br>(2)作為用戶輕量、低頻使用的體驗增強;</br>(3)作為吸引用戶安裝Native App的引導頁。(1)Native App中提到的適用場景;</br>(2)需要頻繁小幅度更新。
    開發(fā)語言只用native開發(fā)語言native和web開發(fā)語言只用web開發(fā)語言
    開發(fā)成本
    維護更新復(fù)雜簡單介于二者之間
    體驗優(yōu)優(yōu)
    安裝需要不需要需要
    升級靈活性低</br>總通過應(yīng)用商店來升級中</br>web部分的升級不需要通過應(yīng)用商店來完成
    資源存儲本地服務(wù)器本地和服務(wù)器

    ?

    參考文獻:

  • 閆曉芬, 郭銀章. 基于移動Agent與P/S混合模式的分布對象中間件異步通信研究[J]. 計算機工程與設(shè)計, 2008, (24).
  • WebAPP與Native APP到底有什么區(qū)別
  • http://www.uisdc.com/web-hybrid-native-app
  • http://blog.jobbole.com/87834/?utm_source=blog.jobbole.com&utm_medium=relatedPosts
  • http://blog.jobbole.com/95641/?utm_source=blog.jobbole.com&utm_medium=relatedPosts
  • http://blog.jobbole.com/106157/?utm_source=blog.jobbole.com&utm_medium=relatedPosts

  • <4>選擇哪個做項目比較合適

    ?當前的APP開發(fā)模式注意有以下四大類型:

    • Native App

      即傳統(tǒng)的原生APP開發(fā)模式,Android基于Java語言,底層調(diào)用Google的 API;iOS基于OC或者Swift語言,底層調(diào)用App官方提供的API。體驗最后。

    • Web App

      即移動端的網(wǎng)站,將頁面部署在服務(wù)器上,然后用戶使用各大瀏覽器訪問。一般泛指 SPA(Single Page Application)模式開發(fā)出的網(wǎng)站。體驗最差。

    • Hybrid App

      即混合開發(fā),由Native通過JSBridge等方法提供統(tǒng)一的API,然后用Html5+JS來寫實際的邏輯,調(diào)用API,這種模式下,由于Android,iOS的API一般有一致性,而且最終的頁面也是在webview中顯示,所有有跨平臺效果

    • React Native App

      Facebook發(fā)起的開源的一套新的APP開發(fā)方案,使用JS+部分原生語法來實現(xiàn)功能。初次學習成本較高,但是在入門后,經(jīng)過良好的封裝也能夠?qū)崿F(xiàn)大部分的跨平臺。而且體驗很好。

    ? ? ?腦圖地址:?

    ? ? ?http://naotu.baidu.com/file/1eb556f3380e8189be859348527ec518?token=a5a049eb4c618e70

    Native App

    ? ? ? 即原生開發(fā)模式,開發(fā)出來的是原生程序,不同平臺上,Android和iOS的開發(fā)方法不同,開發(fā)出來的是一個獨立的APP,能發(fā)布應(yīng)用商店,有如下優(yōu)點和缺點。

    優(yōu)點

    • 直接依托于操作系統(tǒng),交互性最強,性能最好

      相比于其它模式的交互,原生APP體驗是最優(yōu)的

    • 功能最為強大,特別是在與系統(tǒng)交互中,幾乎所有功能都能實現(xiàn)

      得益于原生是直接依托于系統(tǒng)的,所以可以直接調(diào)用官方提供的api,功能最為全面(比如本地資源操作,通知,動畫等)

    缺點

    • 開發(fā)成本高,無法跨平臺,不同平臺Android和iOS上都要各自獨立開發(fā)

      Android上基于Java開發(fā),iOS上基于OC或Swift開發(fā),相互之間獨立,必須要有各自的開發(fā)人員

    • 門檻較高,原生人員有一定的入門門檻,相比廣大的前端人員而言,較少

      原生的一個很大特點就是獨立,所以不太容易入門,不像web前端一樣那么廣泛,而且Android,iOS都需要獨立學習

    • 更新緩慢,特別是發(fā)布應(yīng)用商店后,需要等到審核周期

      原生應(yīng)用更新是一個很大的問題,Android中還能直接下載整包APK進行更新,但是iOS中,如果是發(fā)布AppStore,必須通過AppStore地址更新,而每次更新都需要審核,所以無法達到及時更新

    • 維護成本高

      同開發(fā)一樣,項目上線后,維護起來也很為麻煩

    Web App

    ? ? ?即移動端的網(wǎng)站,將頁面部署在服務(wù)器上,然后用戶使用各大瀏覽器訪問,不是獨立APP,無法安裝和發(fā)布Web網(wǎng)站一般分兩種,MPA(Multi-page Application)和SPA(Single-page Application)。而Web App一般泛指后面的SPA形式開發(fā)出的網(wǎng)站(因為可以模仿一些APP的特性),有如下優(yōu)點和缺點。

    優(yōu)點

    • 開發(fā)成本低,可以跨平臺,調(diào)試方便

      web app一般只需要一個前端人員開發(fā)出一套代碼,然后即可應(yīng)用于各大主流瀏覽器(特殊情況可以代碼進行下兼容),沒有新的學習成本,而且可以直接在瀏覽器中調(diào)試

    • 維護成本低

      同上,如果代碼合理,只需要一名前端就可以維護多個web app

    • 更新最為快速

      由于web app資源是直接部署在服務(wù)器端的,所以只需要替換服務(wù)器端的文件,用戶訪問是就已經(jīng)更新了(當然需要解決一些緩存問題)

    • 無需安裝App,不會占用手機內(nèi)存

      通過瀏覽器即可訪問,無需安裝,用戶就會比較愿意去用

    缺點

    • 性能低,用戶體驗差

      由于是直接通過的瀏覽器訪問,所以無法使用原生的API,操作體驗不好

    • 依賴于網(wǎng)絡(luò),頁面訪問速度慢,耗費流量

      Web App每次訪問都需要去服務(wù)端加載資源訪問,所以必須依賴于網(wǎng)絡(luò),而且網(wǎng)速慢時訪問速度很不理想,特別是在移動端,如果網(wǎng)站優(yōu)化不好會無故消耗大量流量

    • 功能受限,大量功能無法實現(xiàn)

      只能使用Html5的一些特殊api,無法調(diào)用原生API,所以很多功能存在無法實現(xiàn)情況

    • 臨時性入口,用戶留存率低

      這既是它的優(yōu)點,也是缺點,優(yōu)點是無需安裝,確定是用完后有時候很難再找到,或者說很難專門為某個web app留存一個入口,導致用戶很難再次使用

    Hybrid App

    ? ? ?即混合開發(fā),也就是半原生半Web的開發(fā)模式,有跨平臺效果,當然了,實質(zhì)最終發(fā)布的仍然是獨立的原生APP(各種的平臺有各種的SDK),有如下優(yōu)點和缺點。

    優(yōu)點

    • 開發(fā)成本較低,可以跨平臺,調(diào)試方便

      Hybrid模式下,由原生提供統(tǒng)一的API給JS調(diào)用,實際的主要邏輯有Html和JS來完成,而由于最終是放在webview中顯示的,所以只需要寫一套代碼即可,達到跨平臺效果,另外也可以直接在瀏覽器中調(diào)試,很為方便

      最重要的是只需要一個前端人員稍微學習下JS api的調(diào)用即可,無需兩個獨立的原生人員

      一般Hybrid中的跨平臺最少可以跨三個平臺:Android App,iOS App,普通webkit瀏覽器

    • 維護成本低,功能可復(fù)用

      同上,如果代碼合理,只需要一名前端就可以維護多個app,而且很多功能還可以互相復(fù)用

    • 更新較為自由

      雖然沒有web app更新那么快速,但是Hybrid中也可以通過原生提供api,進行資源主動下載,達到只更新資源文件,不更新apk(ipa)的效果

    • 針對新手友好,學習成本較低

      這種開發(fā)模式下,只需要前端人員關(guān)注一些原生提供的API,具體的實現(xiàn)無需關(guān)心,沒有新的學習內(nèi)容,只需要前端人員即可開發(fā)

    • 功能更加完善,性能和體驗要比起web app好太多

      因為可以調(diào)用原生api,所以很多功能只要原生提供出就可以實現(xiàn),另外性能也比較接近原生了

    • 部分性能要求的頁面可用原生實現(xiàn)

      這應(yīng)該是Hybrid模式的最多一個好處了,因為這種模式是原生混合web,所以我們完全可以將交互強,性能要求高的頁面用原生寫,然后一些其它頁面用JS寫,嵌入webview中,達到最佳體驗

    缺點

    • 相比原生,性能仍然有較大損耗

      這種模式受限于webview的性能桎梏,相比原生而言有不少損耗,體驗無法和原生相比

    • 不適用于交互性較強的app

      這種模式的主要應(yīng)用是:一些新聞閱讀類,信息展示類的app;但是不適用于一些交互較強或者性能要求較高的app(比如動畫較多就不適合)

    React Native App

    ? ? ? Facebook發(fā)起的開源的一套新的APP開發(fā)方案,Facebook在當初深入研究Hybrid開發(fā)后,覺得這種模式有先天的缺陷,所以果斷放棄,轉(zhuǎn)而自行研究,后來推出了自己的“React Native”方案,不同于H5,也不同于原生,更像是用JS寫出原生應(yīng)用,有如下優(yōu)點和缺點,其實很多大公司都已經(jīng)轉(zhuǎn)React Native開發(fā)了,已經(jīng)很成熟了。

    優(yōu)點

    • 雖然說開發(fā)成本大于Hybrid模式,但是小于原生模式,大部分代碼可復(fù)用

      相比于原生模式,這種模式是統(tǒng)一用JS寫代碼,所以往往只需要一名成員投入學習,即可完成跨平臺app的開發(fā),而且后續(xù)代碼封裝的好,很多功能可復(fù)用

    • 性能體驗高于Hybrid,不遜色與原生

      這種模式和Hybrid不一樣,Hybrid中的view層實際上還是dom,但是這種模式的view層是虛擬dom,所以性能要高于Hybrid,距離原生差距不大

      這種模式可以認為是用JS寫原生,即頁面用JS寫,然后原生通過Bridge技術(shù)分析JS,將JS內(nèi)容單獨渲染成原生Android和iOS,所以也就是為什么性能不遜色原生

    • 開發(fā)人員單一技術(shù)棧,一次學習,跨平臺開發(fā)

      這種模式是統(tǒng)一由JS編寫,有著獨特的語法,所以只需要學習一次,即可同時開發(fā)Android和iOS

    • 社區(qū)繁榮,遇到問題容易解決

      這應(yīng)該是React Native的很大一個優(yōu)勢,不像Hybrid模式和原生模式一樣各自為營,這種模式是Facebook統(tǒng)一發(fā)起的,所以有一個統(tǒng)一的社區(qū),里面有大量資源和活躍的人員,對開發(fā)者很友好

    缺點

    • 雖然可以部分跨平臺,但并不是Hybrid中的一次編寫,兩次運行那種,而是不同平臺代碼有所區(qū)別

      這種模式實際上還是JS來寫原生,所以Android和iOS中的原生代碼會有所區(qū)別,如果需要跨平臺,對開發(fā)人員有一定要求

      當然了,如果發(fā)展了有一定時間,組件庫夠豐富了,那么其實影響也就不大了,甚至會比Hybrid更快

    • 開發(fā)人員學習有一定成本

      雖然社區(qū)已經(jīng)比較成熟了,但是一個新的普通前端學習起來還是有一定學習成本的,無法像Hybrid模式一樣平滑

    分析

    各大開發(fā)模式直觀對比

    ? ? ? 以下是各大模式的直觀對比分析

    ?Native AppWeb AppHybrid AppReact Native App
    原生功能體驗優(yōu)秀良好接近優(yōu)秀
    渲染性能非???/td>接近快
    是否支持設(shè)備底層訪問支持不支持支持支持
    網(wǎng)絡(luò)要求支持離線依賴網(wǎng)絡(luò)支持離線(資源存本地情況)支持離線
    更新復(fù)雜度高(幾乎總是通過應(yīng)用商店更新)低(服務(wù)器端直接更新)較低(可以進行資源包更新)較低(可以進行資源包更新)
    編程語言Android(Java),iOS(OC/Swift)js+html+css3js+html+css3主要使用JS編寫,語法規(guī)則JSX
    社區(qū)資源豐富(Android,iOS單獨學習)豐富(大量前端資源)有局限(不同的Hybrid相互獨立)豐富(統(tǒng)一的活躍社區(qū))
    上手難度難(不同平臺需要單獨學習)簡單(寫一次,支持不同平臺訪問)簡單(寫一次,運行任何平臺)中等(學習一次,寫任何平臺)
    開發(fā)周期較短中等
    開發(fā)成本昂貴便宜較為便宜中等
    跨平臺不跨平臺所有H5瀏覽器Android,iOS,h5瀏覽器Android,iOS
    APP發(fā)布App StoreWeb服務(wù)器App StoreApp Store

    如何選擇開發(fā)模式

    ? ? ?目前有多種開發(fā)模式,那么我們平時開發(fā)時如何選擇用哪種模式呢?如下

    選擇純Native App模式的情況

    • 性能要求極高,體驗要求極好,不追求開發(fā)效率

      一般屬于吹毛求疵的那種級別了,因為正常來說如果要求不是特別高,會有Hybrid

    選擇Web App模式的情況

    • 不追求用戶體驗和性能,對離線訪問沒要求

      正常來說,如果追求性能和體驗,都不會選用web app

    • 沒有額外功能,只有一些信息展示

      因為web有限制,很多功能都無法實現(xiàn),所以有額外功能就只能棄用這種方案了

    選擇Hybrid App模式的情況

    • 大部分情況下的App都推薦采用這種模式

      這種模式可以用原生來實現(xiàn)要求高的界面,對于一些比較通用型,展示型的頁面完全可以用web來實現(xiàn),達到跨平臺效果,提升效率

      當然了,一般好一點的Hybrid方案,都會把資源放在本地的,可以減少網(wǎng)絡(luò)流量消耗

    選擇React Native App模式的情況

    • 追求性能,體驗,同時追求開發(fā)效率,而且有一定的技術(shù)資本,舍得前期投入

      React Native這種模式學習成本較高,所以需要前期投入不少時間才能達到較好水平,但是有了一定水準后,開發(fā)起來它的優(yōu)勢就體現(xiàn)出來了,性能不遜色原生,而且開發(fā)速度也很快

    另類的app方案

    ? ? ? 除了以上的幾種常見app開發(fā)模式,其實還有一些其它的類似方案

    微網(wǎng)頁

    ? ? ? 比如在進行微信網(wǎng)頁開發(fā)時,可以調(diào)用一些微信的特殊api,這其實就是算是微信的Hybrid模式,實質(zhì)上仍然是在瀏覽器中(只不過是騰訊的X5內(nèi)核)

    ? ? ? 當然了,微信在這方面做了很多限制,比如權(quán)限認證等等,所以導致開發(fā)起來效果不是很完美。這里不再贅述其功能

    微信小程序

    ? ? ? 微信小程序是微信新推出的一種新的app方案,2016年9月開始進行內(nèi)測,2016年11月準備全面面向開發(fā)者需要注意的是,這種模式是“反HTML5”的,相當于是微信提供的一套封閉開發(fā)模式,有自己的語法和IDE,有的類似于iOS開發(fā)的感覺。具體也不贅述,請參考引用來源中的文章

    參考資料

    • 對當前主流hybrid app、web app與native app工具的初步比較與分析
    • H5、React Native、Native應(yīng)用對比分析
    • 如何評價 React Native
    • 論Web App、Hybrid App以及Native App的設(shè)計差異
    • H5、React Native、Native應(yīng)用對比分析
    • HybridApp解決方案_No1_混合模式(Hybrid)App開發(fā)概述
    • 聊聊Web App、Hybrid App與Native App的設(shè)計差異
    • 微信小程序,大多數(shù)人誤解的8個問題

    ?

    總結(jié)

    以上是生活随笔為你收集整理的native APP,hybrid APP和web APP的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。