移動(dòng)app開(kāi)發(fā)有哪些框架?(移動(dòng)APP開(kāi)發(fā)框架盤(pán)點(diǎn))
總體概述
現在比較(jiao)流行(′_`)的移動(dòng)移動(dòng)移動(dòng)APP開(kāi)發(fā)框架有??以下六種:網(wǎng)頁(yè)、混合、開(kāi)框架P開(kāi)不僅、(′_`)發(fā)有發(fā)框(?????)原生、架盤(pán)橋接、移動(dòng)移動(dòng)自繪。開(kāi)框架P(′ω`)開(kāi)前三種體驗與Web的發(fā)有發(fā)框體驗相似,后三種與原生APP的架盤(pán)體驗相??似。這六種框架(′?_?`)形式,移動(dòng)移動(dòng)都有自己適用的開(kāi)框架P開(kāi)范圍。無(wú)所謂好壞(??-)?,發(fā)有發(fā)框適用就是架盤(pán)好。
l 網(wǎng)頁(yè)應用適用于傳統網(wǎng)站APP化??,移動(dòng)移動(dòng)比如淘寶、開(kāi)框架P開(kāi)京東,發(fā)有發(fā)框有大量WEB頁(yè)面嵌入到APP中。
l 混合應用適用于小成本應用開(kāi)發(fā),全部代碼都基于Web,好處是開(kāi)發(fā)ヽ(′▽?zhuān)?ノ快速、成本低。
l 漸進(jìn)應用適用于高機會(huì )成本的場(chǎng)合,邊下載邊使用,能快速獲取,快速體驗。
l 原生應用適用于大型和高體驗要求的應用,能做出讓人??滿(mǎn)意的體驗??效果。
l 橋接應用適用于高速迭代的創(chuàng )意類(lèi)應用,讓體驗與成本都處于可接受的范圍。
l 自繪應用適用于游戲和有特殊效果的應(ying)用,最大的好處是沒(méi)有平臺約束和表達瓶頸。
一、網(wǎng)頁(yè)(′ω`)WebApp
WebApp與傳統Web的主要區別,在于(yu)前端框架,特別(′?ω?`)是V-DOM框架的應用。此??類(lèi)前端框架使得WebApp與N(′_`)ativeApp在機理上已經(jīng)沒(méi)有任何區別了。在眾多的前端框??架中, React、Vue和Angular是最有競爭力的選擇。
React
V-Dom技術(shù)的開(kāi)創(chuàng )者,主流框架中的NO.1。React的貢獻都是開(kāi)創(chuàng )性的,在它基礎上,也有很多兼容框架,比如Anu,Nerv。用以解決React在性能或IE(′ω`)兼容性上的問(wèn)題。
主流技術(shù)方案:
React + Redux + ReactRouter + Material-UI/AntD/Semantic-UI
Vue
由國人創(chuàng )建,在中國擁有大量使用者,也有很多配套的開(kāi)源項目。它的主要特點(diǎn)是學(xué)習成本低,容易上手。
主流技術(shù)方案:
Vue + Vuex + Vu??e-Router + Vuet(╯°□°)╯ify/(??ヮ?)?*:???Qua(′?ω?`)sar/vux/ Mint-UI
Angular
大而全型的(/ω\)框架,為大型項目所推崇,深度整合Typescript和Rxjs。
主流技術(shù)方案:
Angular + Typescript
二、原生NativeApp
由于操作系統的限制,原生應用只有那么幾種。對于原生應(ying)用ヽ(′ー`)ノ,架構是基礎,框架是核心,加上海量的UI組件。
iO??S開(kāi)發(fā)已經(jīng)從OC全面轉向Swift(╬ ò﹏ó),最新的架構VIPER基本上可以視為MMVPP。
主流技術(shù)方案:
VIPER + RxSwift + Mo??ya + Alamofire + SwiftyJSON/Object??Mapper
Android
Android開(kāi)發(fā)語(yǔ)言從Java更換為Kotlin。編???譯時(shí)依賴(lài)??注入框架Dagger也成為不二法寶。
主流技術(shù)方案:
MVP + Dagger + RxKotlin + Retrofit + OkHttp + Kotson(Gson)
三、混合HybridApp
HybridApp的關(guān)鍵不在本身,而在WebApp。好的WebApp改為HybridApp很容易。所以混合應用框架實(shí)際是指WebApp的基礎設施庫,有Cordova(PhoneGap)就足夠了。??
Cordova
PhoneGap開(kāi)源而來(lái)。
四、橋接BridgeApp
橋接應用的特點(diǎn)在于使用原生界面,但應用邏輯使用腳本語(yǔ)言編寫(xiě),通用橋接來(lái)控制原生界??面。這???樣達到使用腳本編寫(xiě)原生應用的目的,甚至可以網(wǎng)頁(yè)與原生應用使用同一套代碼,節省大量開(kāi)發(fā)成本。但是操作手感比網(wǎng)頁(yè)應用強不少。
ReactNative與Weex代表了兩種不同的思路。React??Native提供工具,將平臺差異化開(kāi)放出來(lái)(Learn Once, Write Anywhere);而Weex提供框架,將平臺差異化屏(′?`*)蔽(Write Once, Run Everywhere)。所以ReactN???ative最大的痛點(diǎn)是使用難度大,必須熟悉所有平臺;Weex則注定功能ヽ(′?`)ノ相對弱小,并且坑比較多。( ???)
React Native小眾的框架,能不能壯大,關(guān)鍵在于學(xué)習者是否能有效率地編寫(xiě)應用。所以很多(duo)人認為文檔是決定一個(gè)開(kāi)源框架生死的關(guān)(guan)鍵。其實(shí)有幾個(gè)使用框架的開(kāi)源應用,比文檔還要關(guān)鍵。因為這些應用活著(zhù),間接地證明了框架還有生存的價(jià)值和能力,也能成為更好的文檔教材。Weex號稱(chēng)有一堆知名的應用,但開(kāi)源項目(?????)就乏善可陳了。
Xamarin(C#)Xamarin在IOS與Android中的實(shí)現方式不一致,在IOS中是AOT直接編譯,在A(yíng)ndroid中是使用橋接技術(shù)。
RubyMotion(Ruby)動(dòng)態(tài)語(yǔ)言編寫(xiě)移動(dòng)應用,對語(yǔ)言社區而言是能力問(wèn)題,必須要證明語(yǔ)言的優(yōu)越性和無(wú)所不能。但除開(kāi)狂熱愛(ài)好者,正確的做法是使用最有效??率的平臺和語(yǔ)言。Ruby的長(cháng)處在于Web后端,所以編寫(xiě)APP并無(wú)多少繼承性,編寫(xiě)效率也由于太過(guò)小眾而存在掉坑的風(fēng)險。有免費版本,但只支持最新的操作系統版本。
Titanium這個(gè)框架的核心就是使用JavaScript開(kāi)發(fā)應用,與W??eb開(kāi)發(fā)的在形式上區別很大。所以從根本上,這就是一種腳本語(yǔ)言框架,??和RubyMotion如出一轍。
五、自(╯°□°)╯︵ ┻━┻繪OwndrawApp
自繪一直以來(lái)都是游戲界面的勢力范圍,事實(shí)上除開(kāi)Flutter,其它的框架都是偏游戲開(kāi)發(fā)的。所以Flutter的橫空出世,吸引了很大的關(guān)注,畢竟這是真正跨平臺的唯一可行方案。
Flutter(Dart)除了使用Dart語(yǔ)言有些爭議外,Flutter是??真正值得關(guān)注的跨平臺方案,沒(méi)有之一。最近它的目標平臺除開(kāi)iOS 和 Android,Flutter Desktop Embedding項目將Flutter引入到桌面操作系統,Hummingbird項目將 Flutter 應用引入??瀏覽器。它(ta)利用 Dart 平臺的特性不僅可以編譯原生 ARM 代碼,還可以編譯JavaScript 。這使得 Flutter 代碼可以在基于標準的 Web 上運行而無(wú)需任何更改。
CrossApp(C++)CrossApp是基于Cocos2d-x引擎的,而Cocos2d-x是基于OpenGL的 。9秒社團是由手游社(′?`*)區發(fā)展而來(lái)的,由此可見(jiàn)CrossApp的背景,使用C++開(kāi)發(fā)也有一些忠實(shí)擁躉。
Corona(Lua)更適合做游戲,不適合做應用程序,主要是因為界面部分,官方提供的UI(?????)部分代碼非常不好用,自己實(shí)現又很耗時(shí)??耗力。
Kivy(Pytho(???)n)又一個(gè)動(dòng)態(tài)語(yǔ)言開(kāi)發(fā)框架,和游戲引擎結合起來(lái)使得它在特定領(lǐng)域還是很有市場(chǎng)的。而且它還跨windows平臺,可以在windows下直接運行,可以真??正實(shí)現跨平臺運行。
六、漸進(jìn)ProgressiveApp
不僅有邊下載邊使用這一層(╬?益?)意思,也有下載完成后不依賴(lài)網(wǎng)絡(luò )這一層意ヽ(′▽?zhuān)?ノ思。從類(lèi)型上??來(lái)講,有G(???)oogle主導的PWA(ProgressiveWebApp(′?ω?`)),還有微信主導的小程序。相比PWA一統天下的野心??,小程序明顯是實(shí)用主義導向,能用就好,沒(méi)有長(cháng)遠的布局。急于與微信競爭的百度、支付寶、中國九大手機廠(chǎng)商聯(lián)盟的QuickApp也復制了這種風(fēng)格。隨著(zhù)各種跨平臺轉譯工具(如Taro)的興起,各個(gè)小程序平臺也隨之變成了一個(gè)專(zhuān)有瀏覽器實(shí)現,變成了前端千框萬(wàn)架大戰中的小小注腳了(le)。
PWA
全稱(chēng)Progressive Web App,即漸進(jìn)式網(wǎng)頁(yè)應用。相對于國內廠(chǎng)商的私(′▽?zhuān)?有平臺,谷歌主導的PWA從一開(kāi)始就瞄準下一代瀏覽器標準。與傳統網(wǎng)頁(yè)最大的不同,是引入了Ser??vice Worker了,相當于本地服務(wù)器,能在( ?ω?)離線(xiàn)時(shí)替代網(wǎng)站服務(wù)器繼續工作。除此之外,PWA大致就是一個(gè)SPA(single page web app),開(kāi)放標準的繼承性還是比較高的??。不過(guò)由于各平臺廠(chǎng)商(如微軟,蘋(píng)果)對PWA的態(tài)度不明,PWA的推廣進(jìn)展緩慢。
MiniProg(O_O)ram微信小程序,由于微信的體量與使用頻度,使得小程序可以承載足夠的野心。不過(guò)從技術(shù)上講,也就是個(gè)使用人數較多的瀏覽器實(shí)現(xian)。小程序和大量的跟隨者,促使多端統一框架也發(fā)展起來(lái)了。?
TaroReact兼容的跨平臺多端統一開(kāi)發(fā)框架。一鍵生成可以在微信/??百度/支付寶/字節跳動(dòng)小程序、H5、React Native等端運行的代碼。雖然多端統一框架看似可以在不同類(lèi)型的平臺運行,但它還是要(′?ω?`)依賴(lài)那些平臺工具,還是寄居之上的小程序而已。
Nanachi司徒正美開(kāi)發(fā)的React兼容Anu框架的多端轉譯腳手架。但是對比Taro是一堆工具打包而成,nanachi僅是一個(gè)腳手架,未免寒酸。不包裝一下?
Chameleon類(lèi)Vue的(de)跨平臺多端統一開(kāi)發(fā)框架。專(zhuān)門(mén)拜讀了昨天出爐的ヽ(′ー`)ノ《Chameleon原理詳解:其它跨多端統一框架都是假的?》。它有神奇的多態(tài)組件,就是重新定義了一個(gè)組件聲明框架;嚴格全面的檢查,不會(huì )不讓你的代碼不能不跨平臺;更多的適配代碼,聽(tīng)說(shuō)有后端統一接口,而且還有一個(gè)后臺管理系統。好吧,祝您玩得愉快。
趨勢分析





