一殴泰、移動端應(yīng)用開發(fā)的方式
1谒主、原生應(yīng)用程序
原生應(yīng)用程序是某一個移動平臺(比如iOS或安卓)所特有的云头,使用相應(yīng)平臺支持的開發(fā)工具和語言(比如iOS平臺支持Xcode和Objective-C酒请,安卓平臺支持Eclipse和Java)绍赛。原生應(yīng)用程序看起來(外觀)和運行起來(性能)是最佳的蔓纠。
2、HTML5應(yīng)用程序
HTML5應(yīng)用程序使用標準的Web技術(shù)吗蚌,通常是HTML5腿倚、JavaScript和CSS。這種只編寫一次蚯妇、可到處運行的移動開發(fā)方法構(gòu)建的跨平臺移動應(yīng)用程序可以在多個設(shè)備上運行敷燎。雖然開發(fā)人員單單使用HTML5和JavaScript就能構(gòu)建功能復(fù)雜的應(yīng)用程序,但仍然存在一些重大的局限性箩言,具體包括會話管理懈叹、安全離線存儲以及訪問原生設(shè)備功能(攝像頭、日歷和地理位置等)分扎。
3澄成、混合應(yīng)用程序
混合應(yīng)用程序讓開發(fā)人員可以把HTML5應(yīng)用程序嵌入到一個細薄的原生容器里面,集原生應(yīng)用程序和HTML5應(yīng)用程序的優(yōu)點(及缺點)于一體。
二墨状、三種方法比較總結(jié)
1卫漫、原生移動應(yīng)用程序
原生應(yīng)用程序提供了最佳易用性、最佳特性以及最佳總體移動體驗肾砂。以下這些是只能通過原生應(yīng)用程序才能實現(xiàn)的功能:
?多點觸控:雙擊列赎、縮放及其他組合的用戶界面(UI)手勢。
?快速圖形API:原生平臺為你提供了顯示最快速的圖形镐确。如果你顯示只有寥寥幾個元素的靜態(tài)屏幕包吝,這個功能可能不太重要,但如果你使用大量數(shù)據(jù)源葫,需要快速刷新诗越,這項功能卻很重要。
?流暢動畫:與快速圖形API有關(guān)的是實現(xiàn)流暢動畫的功能息堂。這在動畫嚷狞、高度交互的報表或者轉(zhuǎn)換照片和聲音的計算密集型算法中顯得尤為重要。
?內(nèi)置部件:攝像頭荣堰、地址簿床未、地理位置及設(shè)備的其他原生功能可以無縫地整合到移動應(yīng)用程序中。另一個重要的內(nèi)置部件是加密的存儲裝置振坚,這方面稍后會有詳細介紹薇搁。
?易于使用:原生平臺是人們耳熟能詳?shù)钠脚_,所以如果你在這個熟悉的平臺上添加人們期望的所有原生功能渡八,也就擁有了一款使用起來完全更容易的應(yīng)用程序只酥。
?說明文檔:市面上僅僅介紹iOS和安卓開發(fā)的圖書就有2500多本,Stackoverflow等網(wǎng)站上還有不計其數(shù)的文章呀狼、博文和詳細的技術(shù)帖子裂允。
2、HTML5移動應(yīng)用程序
原生態(tài)的移動應(yīng)用程序開發(fā)已經(jīng)發(fā)展多年了哥艇,而且開發(fā)的人員也已經(jīng)發(fā)展成一個非常大的團體了绝编,特別是iOS開發(fā)的行情,真的“坑少蘿卜多”貌踏,?? 十饥!不過基于Web的移動應(yīng)用程序而言,我們?nèi)蕴幱谠缙陔A段祖乳,發(fā)展前景還是很好滴逗堵。值得小伙伴們?nèi)W(xué)習的,畢竟技多不壓身嗎眷昆!純生的Html5開發(fā)更容易蜒秤、支持更容易汁咏,覆蓋最廣泛的設(shè)備種類。
不過作媚,重大局限性在于離線存儲和安全攘滩,對企業(yè)移動應(yīng)用程序來說更是如此。雖然你可以通過將文件緩存在設(shè)備上纸泡,貌似實現(xiàn)離線功能漂问,但這根本不是一種很好的解決辦法。雖然底層數(shù)據(jù)庫可能經(jīng)過加密女揭,但是其不如用開發(fā)者證書保護每個應(yīng)用程序的原生鑰匙鏈加密方法來得充分分隔蚤假。此外,如果從桌面端啟動帶驗證機制的Web應(yīng)用程序吧兔,每當應(yīng)用程序被發(fā)送到后臺磷仰,它都需要用戶輸入登錄憑據(jù)。這對用戶來說是個糟糕的體驗掩驱。通常來說,在原生平臺上實現(xiàn)哪怕微不足道的安全措施對Web移動開發(fā)人員來說也是很復(fù)雜的任務(wù)冬竟。因此欧穴,要是安全至關(guān)重要,這個因素可能會決定你選擇哪一種移動技術(shù)泵殴。
3涮帘、混合移動應(yīng)用程序
混合開發(fā)集原生和HTML5兩者的優(yōu)點(及缺點)。我們定義的混合應(yīng)用程序是一種Web應(yīng)用程序笑诅,主要使用HTML5和JavaScript構(gòu)建而成调缨,然后封裝在細薄的原生容器里面,可通過容器來訪問原生平臺功能吆你。PhoneGap是最流行的構(gòu)建混合移動應(yīng)用程序的容器弦叶。
總的來說,混合應(yīng)用程序集兩者之所長妇多。如果現(xiàn)有的Web開發(fā)人員在優(yōu)化JavaScript伤哺,處理CSS從而設(shè)計漂亮布局以及編寫可在任何平臺上運行的兼容HTML代碼方面已成為行家里手,現(xiàn)在就能構(gòu)建功能復(fù)雜的移動應(yīng)用程序者祖,并不犧牲很酷的原生功能立莉。在某些情況下,原生應(yīng)用程序開發(fā)人員可以為圖像處理之類的任務(wù)編寫插件七问,但在這種情況下蜓耻,很多問題隱藏在細節(jié)中。
在iOS上械巡,嵌入式Web瀏覽器或UIWebView與Safari瀏覽器不一樣刹淌。雖然區(qū)別不大饶氏,但它們會在調(diào)試時帶來棘手問題。這就是為什么有必要使用克服了所有局限性的流行框架芦鳍。
三嚷往、混合應(yīng)用程序部署問題
作為一個移動開發(fā)人員,相信大家都應(yīng)該知道柠衅,原生應(yīng)用程序安裝在設(shè)備上皮仁, Html5應(yīng)用程序駐留在Web服務(wù)器上,那么你就會可能會想到混合應(yīng)用程序時部署將其文件存儲在設(shè)備上 or 部署到服務(wù)器上?是的菲宴,實際上就有兩種方式部署混合應(yīng)用程序的贷祈。
?本地:你可以將HTML和JavaScript代碼包裝成移動應(yīng)用程序二進制代碼,采用類似原生應(yīng)用程序結(jié)構(gòu)的方式喝峦。在這種場景下势誊,你使用REST API,在設(shè)備和云端之間來回轉(zhuǎn)移數(shù)據(jù)谣蠢。
?服務(wù)器:另外粟耻,你可以從服務(wù)器來部署標準的Web應(yīng)用程序(可采用可選的緩存機制,以提高性能)眉踱,只要將容器用作UIWebview上面那層細薄的外殼挤忙。
Netflix有一款很酷的應(yīng)用程序,它使用了一樣的代碼庫以便在所有設(shè)備上運行UI:平板電腦谈喳、手機册烈、智能電視、DVD播放機婿禽、冰箱和汽車赏僧。雖然大多數(shù)人不知道該應(yīng)用程序是如何部署的,也并不關(guān)心扭倾,但下面這一點很吸引你:他們可以迅速更改界面淀零,或者進行A/B測試,確定最佳的用戶交互膛壹。視頻解碼和流式傳送這些基本工作交給了原生層窑滞,以獲得最佳性能,所以這是一款運行快速恢筝、看似原生的應(yīng)用程序哀卫,確確實實集兩者之眾長。>