HTML5負責前端展示,Weex負責前端與設備之間(jiān≥®)的(de)溝通(tōng)(獲取設備信息),Vue.JS負責執行(xíng₩×&)數(shù)據渲染
APP開(kāi)發使用(yòng)當前流行(xí®ng)的(de)WebApp技(jì)術(shù)
App雲平台使用(yòng)語言
App開(kāi)發框架
App緩存框架
App通(tōng)信
App傳輸
Native App開(kāi)發即我們所稱的(de)$€₽≈傳統APP開(kāi)發模式(原生(sh¶♦ēng)APP開(kāi)發模式),該開(k₩©¥āi)發針對(duì)IOS、Android等不(£λbù)同的(de)手機(jī)操作(zuò)系統要(yào)采用(yòα&≤ng)不(bù)同的(de)語言和(hé)框架進行(xí₹↓✔¥ng)開(kāi)發,
該模 式通(tōng)常是(shì)由“雲服務器(qì)數(shù)據+APP應用(yòng)客戶εσπ端”兩部份構成,APP應用(yòng)所有(yǒu)的(✘±de)UI元素、數(shù)據內(nèi)容、邏輯框架均安裝在手機(jī)終端上(shàng)• ↕α。
即原生(shēng)開(kāi)發模式,開(kāi)發出來(lái)的(de)是(shì±∑∞)原生(shēng)程序,不(bù)同平台上(₽σshàng),Android和(hé)iOS的↑±↓(de)開(kāi)發方法不(bù)同,開(kāi)發出來Ω€≥(lái)的(de)是(shì)一(yī)個(gè)獨立的(✘©δde)APP,能(néng)發布應用(yòng)商店(diàn),
有(yǒu)如(rú)下(xià)優點和(héσ∏¶∞)缺點:
直接依托于操作(zuò)系統,交互性雄厚, 性能(néng)知(zhī)名 相(xià±± ng)比于其它模式的(de)交互,原生(shēng)APP體(×♥¶tǐ)驗是(shì)優的(de)。
功能(néng)為(wèi)強大(dà),特别是(shì)在與系統交≥✔©Ω互中,
幾乎所有(yǒu)功能(néng)都(dōu)能(nén↑₹g)實現(xiàn)得(de)益于原生(shēng)是(shì)直π≈接依托于系統的(de),
所以可(kě)以直接調用(yòng)官方提供的(de)api,功能(né'∑Ωng)為(wèi)全面(比如(rú)本地(dì)資源操作(zuò),通(tōng)知(zhī•₽®§),動畫(huà)等)。
開(kāi)發成本高(gāo),無法跨平台,
不(bù)同平台Android和(hé)iOS上(shàng)都(dōu)要(yào<)各自(zì)獨立開(kāi)發Android上(shàng)基于Javaββ✘開(kāi)發,
iOS上(shàng)基于ObjectC或Swift開(kāi)發,相(xiàng)互之'♣'間(jiān)獨立,必須要(yào)有(yǒu)各自(zì)的(♦±de)開(kāi)發人(rén)員(yuán)
門(mén)檻較高(gāo),原生(shēng)人(rén)員(yuán)★φ↓&有(yǒu)一(yī)定的(de)入門(mén)門(mén)檻,
相(xiàng)比廣大(dà)的(de)前端人(rén)員(yu§∞án)而言較少(shǎo)02原生(shēng)的(de↑•)一(yī)個(gè)很(hěn)大(dà)α∏σ特點就(jiù)是(shì)獨立,
所以不(bù)太容易入門(mén),不(bù)像web前端一(yī)樣那(nà)麽廣泛,>₩而且Android,iOS都(dōu)需要(yào)獨立學習(xí)
維護成本高(gāo),同開(kāi)發一(yī)樣,↕>✔項目上(shàng)線後,維護起來(lái)也(yě)很(hěn)為(wèi)麻煩
Web App開(kāi)發即是(shì)一(y£•♠ī)種框架型APP開(kāi)發模式(HTML5 APP 框架開(kāi)發模式),該開(kāγ®✘i)發具有(yǒu)跨平台的(de)優勢,
該模式通(tōng)常由“雲服務器(qì)端+APP應用(yòng)λ♦↑客戶端”兩部份構成,APP應用(yòng)客戶端隻需安裝應用(¶←★yòng)的(de)框架部份,而應用(yòng)的(de)數(shù)據則是(shì)每次打開π α(kāi)APP的(de)時(shí)候,去©↕£(qù)雲端取數(shù)據呈現(xiàn)給手←β←機(jī)用(yòng)戶。
weex是(shì)阿裡(lǐ)開(kāi)源出來(lái)的(de)一(yī)≥♠α套APP開(kāi)發方案,底層原理(lǐ)是(shì☆£₽)通(tōng)過核心引擎将代碼編譯成原生(shēng)組件(↔×jiàn)。達到(dào)原生(shēng)APP的(de)體(tǐ)驗效果。
開(kāi)發成本小(xiǎo)于原生(shēng)模←£↕式,大(dà)部分(fēn)代碼可(kě)複用(yòng)
相(xiàng)比于其它模式的(de)交互,原&生(shēng)APP體(tǐ)驗是(shì)優的$♣(de)
相(xiàng)比于原生(shēng)模式,這(zhè)→γ種模式是(shì)統一(yī)用(yòng)JS寫代碼,所以往往隻需要(yào)♥ 一(yī)名成員(yuán)投入學習(xí),即可(kě)完成跨平台a€φpp的(de)開(kāi)發,而且後續代碼封裝的(de)₽± ←好(hǎo),很(hěn)多(duō)功能(néng)可(kě)複用(yòng)
性能(néng)體(tǐ)驗高(gāo)于Hybri® '♥d,不(bù)遜色與原生(shēng)
這(zhè)種模式的(de)view層是(shì)虛拟do↕"$→m,所以性能(néng)距離(lí)原生(shēng)差距不(b©<ù)大(dà)
這(zhè)種模式可(kě)以認為(wèi)是(shì)用(yòng)JS原生(s hēng),即頁面用(yòng)JS寫,然後原生(shēng)通("£tōng)過Bridge技(jì)術(shù)分(fēn)析JS,
将JS內(nèi)容單獨渲染成原生(shēng)Android和(hé)iOS,所以性能(Ω∏♣néng)不(bù)遜色原生(shēng)
開(kāi)發人(rén)員(yuán)單一(yī)技(jì)術 ¶π≥(shù)棧,一(yī)次學習(xí),跨平台開(kāi)發
這(zhè)種模式是(shì)統一(yī)由JS編寫,有(≤≠♦yǒu)著(zhe)獨特的(de)語法,
所以隻需要(yào)學習(xí)一(yī)次,即可(kě)同時(s←₹hí)開(kāi)發Android和(hé)iOS
一(yī)套代碼跨平台,隻要(yào)遵循特定的(de)語法規則,完全↕♠≈可(kě)以達到(dào)一(yī)套代碼β®多(duō)個(gè)平台運行(xíng)
o核心就(jiù)是(shì)在web環境下(xià),将源碼編譯成web中顯示的(de©©γ•)Html dom對(duì)象等,
在原生(shēng)環境下(xià)編譯 ≤♠γ成原生(shēng)組件(jiàn)。o而React-Native☆∏"↑中,它是(shì)JS寫原生(shēng)代碼,
不(bù)同平台代碼是(shì)不(bù)一(yī)樣的(de),雖然有(yǒu)大(÷ ×>dà)部分(fēn)可(kě)以複用(yòng),但(dàn)并不(bù)是(shìγ®→σ)完全一(yī)套代碼多(duō)個(gè)平台。
功能(néng)受限于WebView(但(dàn)是(shì)目前WebVApp發展勢頭迅猛,
除非是(shì)對(duì)于動畫(huà)要(yào)求非常高(g₩ ≥āo)的(de)遊戲類應用(yòng)之外(wài),完全可(kě)以滿足日(rì)↔¶常平台開(kāi)發)
對(duì)開(kāi)發人(rén)員(yuán)學習(xí)有(yǒu ♠∑÷)一(yī)定要(yào)求 , 才能(nén↕βg)寫出一(yī)套源碼兩端兼容
從(cóng)原理(lǐ)上(shàng)來(lái)講 ,↑α±★ NativeApp模式可(kě)以直接調用(yòng←α☆)OS底層API(例如(rú)設備信息,屏幕旋轉等) , 而WebAp≈ πp則需要(yào)通(tōng)過js briδ £dge調用(yòng)OS底層API
得(de)益于現(xiàn)在WebAPP的(de)發φ•↑展 , 目前WebApp開(kāi)發已經成為(wèi)一(yī)種趨♥©<™勢 , 而js bridge 随著(zhe)技(jì)術(shù)的(d∞©Ωεe)更新已經變得(de)非常強大(dà),
幾乎可(kě)以做(zuò)到(dào)和(hé)NativeAPP同樣✔的(de)事(shì)情 , 效率和(hé)體(tǐ)驗也(yě)與NativeA'$pp無異。