uni-app選型評(píng)估指南

2020-04-02 15:28 更新

uni-app選型評(píng)估23問(wèn)

如果你關(guān)心競(jìng)品對(duì)比,這里有幾份詳盡對(duì)比:

  1. 多端開(kāi)發(fā)框架對(duì)比橫評(píng),參考:https://juejin.im/post/5ca1736af265da30ae314248
  2. 只做App,flutter、react native等App跨平臺(tái)框架對(duì)比,參考:https://ask.dcloud.net.cn/article/36083
  3. 只做小程序,原生wxml開(kāi)發(fā)、wepy、mpvue、taro的對(duì)比,https://ask.dcloud.net.cn/article/35867
  4. uni-app和微信原生開(kāi)發(fā)的詳細(xì)比較評(píng)測(cè),參考:https://ask.dcloud.net.cn/article/36484

uni-app收費(fèi)嗎?

uni-app 是免費(fèi)并且屬于Apache2.0開(kāi)源協(xié)議的產(chǎn)品。DCloud官方承諾永遠(yuǎn)不會(huì)變更開(kāi)源協(xié)議。無(wú)論HBuilderX、uni-app、App,面向中國(guó)人永久免費(fèi)。大家可以放心使用。

DCloud的盈利方式在幫助開(kāi)發(fā)者進(jìn)行推廣和流量變現(xiàn)上,而不在開(kāi)發(fā)工具收費(fèi)上。

跨端會(huì)造成功能受限制嗎?

uni-app在跨平臺(tái)的過(guò)程中,不犧牲平臺(tái)特色,不限制平臺(tái)的能力使用。

應(yīng)用開(kāi)發(fā)中,90%的常規(guī)開(kāi)發(fā),比如界面組件、聯(lián)網(wǎng)等api,uni-app封裝為可跨多端的API。

各個(gè)端的特色功能,uni-app引入條件編譯??梢詢?yōu)雅的在一個(gè)項(xiàng)目里調(diào)用不同平臺(tái)的特色能力。比如push,微信小程序里不支持,但可以在App里使用,還有很多原生sdk,在App時(shí)難免涉及,這些都可以正常的在uni-app框架下使用。

下圖是uni-app產(chǎn)品功能框架圖,uni-app在保持uni規(guī)范跨平臺(tái)的前提下,還可實(shí)現(xiàn)每個(gè)平臺(tái)特有的平臺(tái)能力(如微信小程序平臺(tái),可繼續(xù)調(diào)用微信卡劵等微信特有業(yè)務(wù)API)。

在做小程序時(shí),小程序所有的api都可以使用;而輸出到App時(shí),原生渲染引擎、原生sdk集成和混寫都支持,使得原生的所有api都可以使用。

同時(shí)注意,條件編譯不同于代碼里if邏輯判斷。條件編譯塊里的代碼或指定的文件,只有在特定平臺(tái)才會(huì)被編譯進(jìn)去,不會(huì)把不能用的其他平臺(tái)代碼混在一個(gè)包里。如果大量使用if判斷,會(huì)增大體積和影響性能,而條件編譯則沒(méi)有這些問(wèn)題,減少包體積,減少互相的干擾。

uni-app的手機(jī)端用戶體驗(yàn)如何?

使用uni-app開(kāi)發(fā)的微信小程序,因?yàn)橹悄艿奶幚淼臄?shù)據(jù)的diff,比大多人手寫的原生小程序的性能還好。詳細(xì)數(shù)據(jù)評(píng)測(cè)參考:https://juejin.im/post/5ca1736af265da30ae314248

uni-app打包成App后,支持webview渲染和weex原生渲染這2種引擎,可以任由開(kāi)發(fā)者切換使用。

  • webview渲染方式,架構(gòu)和微信小程序一樣。微信小程序的Hybrid應(yīng)用框架是業(yè)內(nèi)體驗(yàn)上的標(biāo)桿,實(shí)踐證明這種體驗(yàn)足以承載一線互聯(lián)網(wǎng)開(kāi)發(fā)商獲得上億用戶。uni-app的App端體驗(yàn)同微信小程序,超過(guò)其他平臺(tái)的小程序,超過(guò)一般的hybrid框架。
  • 原生渲染方式,是DCloud改造了weex引擎,在weex上實(shí)現(xiàn)了uni-app的組件和API。達(dá)到更優(yōu)秀的用戶體驗(yàn)。

由于有豐富的插件市場(chǎng),以及支持所有小程序SDK在App端的使用,使得uni-app擁有更龐大的應(yīng)用生態(tài)。

只開(kāi)發(fā)小程序,需要uni-app嗎?

是的,單獨(dú)開(kāi)發(fā)小程序,也應(yīng)該使用uni-app。它比其他小程序框架或原生小程序開(kāi)發(fā)更有優(yōu)勢(shì)。原因如下:

  1. uni-app無(wú)需追隨微信升級(jí),可不受限在條件編譯里使用wx的現(xiàn)在或未來(lái)的所有api
  2. uni-app的性能比一般人手寫的微信原生代碼性能更高。就像vue操作比一般人寫js操作dom性能更高一樣。底層自動(dòng)diff差量更新數(shù)據(jù),比手動(dòng)setData性能更高。評(píng)測(cè)數(shù)據(jù)見(jiàn)下文
  3. uni-app是純vue語(yǔ)法,不必另學(xué)一種dsl。開(kāi)發(fā)不同項(xiàng)目時(shí),思維不用切換
  4. uni-app的組件、模板非常豐富,插件市場(chǎng)數(shù)千款插件。如富文本解析、圖表等組件,uni-app版插件性能均超過(guò)了wxparse、wx-echart等微信小程序組件
  5. HBuilderX比微信工具更強(qiáng)大,開(kāi)發(fā)效率更高。哪怕使用vscode等工具,由于這些工具對(duì)vue的支持強(qiáng)于對(duì)wxml的支持,所以開(kāi)發(fā)效果也會(huì)更高
  6. 微信原生開(kāi)發(fā)對(duì)webpack、預(yù)編譯語(yǔ)言、工程流程管理很多功能都不支持,大公司很少用微信原生開(kāi)發(fā),都是在用框架來(lái)提升開(kāi)發(fā)效率
  7. uni-app支持雙向數(shù)據(jù)綁定、vuex狀態(tài)管理,比小程序原生開(kāi)發(fā)方便的多
  8. 遲早會(huì)有多端需求,使用uni-app再無(wú)后續(xù)顧慮
  9. uni-app并非僅用于做跨端的,只用uni-app做小程序、只做H5、只做App的,案例是一樣多的,詳見(jiàn):https://uniapp.dcloud.io/case 關(guān)于uni-app和微信開(kāi)發(fā)的詳細(xì)比較評(píng)測(cè),參考:https://ask.dcloud.net.cn/article/36484
  10. 評(píng)測(cè)1、uni-app和原生wxml開(kāi)發(fā)、wepy、mpvue、taro的對(duì)比,https://ask.dcloud.net.cn/article/35867
  11. 評(píng)測(cè)2、uni-app和微信原生開(kāi)發(fā)的詳細(xì)比較評(píng)測(cè),參考:https://ask.dcloud.net.cn/article/36484

只開(kāi)發(fā)App,需要uni-app嗎?

uni-app是更好的跨平臺(tái)開(kāi)發(fā)框架,開(kāi)發(fā)一次iOS、Android都有了。體驗(yàn)好、開(kāi)發(fā)效率高。

uni-app在App端,基于能力層/渲染層分離的架構(gòu)設(shè)計(jì)(見(jiàn)下圖),渲染層是webview和weex二選一,能力調(diào)用都是共同的plus api,比如藍(lán)牙、掃碼等能力;也就是weex被內(nèi)置到uni-app中,并且被強(qiáng)化了。

過(guò)去weex有個(gè)很大的問(wèn)題是api太少,開(kāi)發(fā)時(shí)必須iOS、Android原生和前端3撥團(tuán)隊(duì)協(xié)作開(kāi)發(fā),實(shí)際上react native也如此,因?yàn)樗麄兊暮诵闹皇歉咝阅茕秩酒鳌?/p>

plus api的結(jié)合解決了這個(gè)問(wèn)題,大多數(shù)App的開(kāi)發(fā)不再需要原生介入了,從而把跨平臺(tái)開(kāi)發(fā)省成本這個(gè)核心目的落地了。

uni-app在App側(cè)可以使用豐富的小程序sdk,如網(wǎng)易云信、環(huán)信、七牛等眾多sdk廠商均原廠維護(hù)其小程序sdk版本,而這些sdk均可直接用于uni-app并發(fā)布為iOS、Android的App。

uni-app的插件市場(chǎng)里有非常多的ui庫(kù)、組件、模板,可以大幅提升開(kāi)發(fā)效率。

相比純?cè)_(kāi)發(fā),uni-app體驗(yàn)可商用,也不會(huì)限制功能調(diào)用,但開(kāi)發(fā)效率和開(kāi)發(fā)成本更優(yōu)于原生開(kāi)發(fā)。

如果你已經(jīng)有了原生App,那么可以局部使用uni-app,內(nèi)嵌SDK,讓工程逐步跨平臺(tái)化。

uni-app是多端寫在一個(gè)項(xiàng)目統(tǒng)一升級(jí)維護(hù),還是每個(gè)端不同的項(xiàng)目,只復(fù)用部分代碼

uni-app是多端寫在一個(gè)基礎(chǔ)項(xiàng)目下,差異使用條件編譯來(lái)管理。

這有個(gè)巨大的好處是一套工程代碼,升級(jí)時(shí)可多端同時(shí)更新。

如果把不同端的項(xiàng)目分開(kāi),那么維護(hù)升級(jí)時(shí)非常麻煩,無(wú)法方便同步升級(jí)。

所以u(píng)ni-app開(kāi)發(fā)微信小程序時(shí),不止編碼,包括域名校驗(yàn)等配置均在HBuilderX里完成,不需要在微信開(kāi)發(fā)者工具里二次調(diào)整。

uni-app 學(xué)習(xí)成本高嗎?基于什么技術(shù)棧?

uni-app簡(jiǎn)單來(lái)說(shuō)是 vue的語(yǔ)法 + 小程序的api。

它遵循Vue.js語(yǔ)法規(guī)范,組件和API遵循微信小程序命名,這些都屬于通用技術(shù)棧,學(xué)習(xí)它們是前端必備技能,uni-app沒(méi)有太多額外學(xué)習(xí)成本。

有一定 Vue.js 和微信小程序開(kāi)發(fā)經(jīng)驗(yàn)的開(kāi)發(fā)者可快速上手 uni-app 。

沒(méi)學(xué)過(guò)vue的同學(xué),也不用掌握vue的全部,只需了解vue基礎(chǔ)語(yǔ)法、虛擬dom、數(shù)據(jù)綁定、組件、vuex,其他如路由、loader 不用學(xué),cli、node.js、webpack也不需要學(xué)。

官方有入門培訓(xùn)視頻,且還有眾多培訓(xùn)渠道加入uni-app生態(tài),可參考培訓(xùn)教程資源匯總。

uni-app 開(kāi)發(fā)體驗(yàn)如何?支持現(xiàn)代前端開(kāi)發(fā)流程嗎?

uni-app 積極擁抱社區(qū)現(xiàn)有的現(xiàn)代開(kāi)發(fā)流程,包括但不限于:

  • 內(nèi)置了webpack
  • NPM 包管理系統(tǒng)
  • es6+ 語(yǔ)法(發(fā)布時(shí)會(huì)自動(dòng)編譯為es5)
  • 各種預(yù)處理器(less、scss、stylus、typescript)
  • uni-app的官方ide:HBuilderX,在vue、json、markdown、代碼提示、操作效率上,有非常明顯的優(yōu)勢(shì),可幫助開(kāi)發(fā)者大幅提高工作效率
  • uni-app同時(shí)也提供了cli方式,可使用其他開(kāi)發(fā)工具如vscode開(kāi)發(fā),當(dāng)然開(kāi)發(fā)效率不如HBuilderX。對(duì)比詳見(jiàn)https://ask.dcloud.net.cn/article/35451

uni-app 生態(tài)開(kāi)放性如何?能否直接利用現(xiàn)有前端社區(qū)資源?

uni-app 提供了開(kāi)放性的生態(tài):

  • 豐富的插件市場(chǎng)為開(kāi)發(fā)者提供數(shù)千款現(xiàn)成的輪子,https://ext.dcloud.net.cn
  • 兼容微信小程序 JS SDK,豐富的小程序生態(tài)內(nèi)容可直接引入uni-app,并且在App側(cè)通用
  • 兼容微信小程序自定義組件
  • 支持 NPM 包管理系統(tǒng)
  • 支持 mpvue 項(xiàng)目及組件
  • 支持原生插件,見(jiàn)插件市場(chǎng):https://ext.dcloud.net.cn
  • 支持App原生工程里嵌入uni-app的sdk。

需要注意的是,uni-app 采用Vue.js方案,限制了dom操作,因此所有基于dom的前端庫(kù)都無(wú)法直接使用;所幸的是目前基于微信小程序的庫(kù)已經(jīng)非常多了,這個(gè)生態(tài)也很完善,所有微信小程序的庫(kù)在uni-app 里都能用,不止是在微信里能用,在App下也能用。

uni-app 支持的手機(jī)版本最低到多少?

Android4.4、iOS8是官方會(huì)保障兼容的。 要知道Android4.4已經(jīng)是2013年發(fā)布的手機(jī)了,正常用戶不會(huì)還在用這么久遠(yuǎn)的手機(jī)。

uni-app成熟度高嗎?

uni-app是目前最成熟的多端開(kāi)發(fā)框架,已迭代幾十個(gè)版本,擁有幾十個(gè)開(kāi)發(fā)者交流群,幾十萬(wàn)應(yīng)用案例。

阿里小程序IDE官方內(nèi)嵌uni-app,uni-app沒(méi)有讓阿里巴巴失望,也不會(huì)讓你失望。詳見(jiàn):https://ask.dcloud.net.cn/article/36485

uni-app的社區(qū)活躍嗎?

加入uni-app的群就知道,幾十個(gè)QQ/微信群每天數(shù)萬(wàn)條聊天記錄,非?;钴S。論壇里每天數(shù)百個(gè)帖子。

插件市場(chǎng)內(nèi)容也非常豐富,各種輪子方便可用。https://ext.dcloud.net.cn/,并且很多輪子的uni-app版,性能功能都強(qiáng)于微信小程序版。

基于uni-app的三方培訓(xùn)也很多。騰訊課堂官方親自為uni-app制作了課程。

uni-app 有哪些已上線的成功案例?

開(kāi)發(fā)者分享的案例參考uni-app 應(yīng)用案例

DCloud是家什么公司,是否可信賴

DCloud從2013年開(kāi)始做HBuilder,目前380萬(wàn)前端開(kāi)發(fā)者在使用DCloud的開(kāi)發(fā)工具,HBuilder百度指數(shù)與sublime、webstorm等全球知名工具相同。是中國(guó)唯一一家成功的開(kāi)發(fā)工具廠商。

DCloud是明星創(chuàng)業(yè)公司,融資已經(jīng)過(guò)了B2輪,且均為知名VC或戰(zhàn)略投資人。

DCloud是HTML5中國(guó)產(chǎn)業(yè)聯(lián)盟的發(fā)起單位和秘書單位。該聯(lián)盟隸屬于工信部信通院標(biāo)準(zhǔn)所。

DCloud產(chǎn)品中使用的HTML5Plus規(guī)范,為聯(lián)盟的標(biāo)準(zhǔn)規(guī)范而非私有api。

DCloud的產(chǎn)品技術(shù)一直引領(lǐng)業(yè)內(nèi),2015年就上線業(yè)內(nèi)第一個(gè)"小程序":DCloud流應(yīng)用。隨后DCloud廣泛推動(dòng)業(yè)內(nèi)各大公司上線"小程序",普及該技術(shù)廣泛應(yīng)用。

數(shù)年來(lái)只有其他公司侵權(quán)DCloud,這些作惡公司已被法院判決給DCloud賠款道歉,DCloud從未有劣跡,誠(chéng)信立足于行業(yè)。

阿里小程序IDE官方內(nèi)嵌uni-app,uni-app沒(méi)有讓阿里巴巴失望,也不會(huì)讓你失望。詳見(jiàn):https://ask.dcloud.net.cn/article/36485

App打包必須上傳DCloud云端嗎?代碼會(huì)泄露嗎?

代碼可以云打包,也可以離線打包。

即使使用云打包,DCloud也不會(huì)保留開(kāi)發(fā)者的代碼,云端打包完成后程序不會(huì)持久化存儲(chǔ)相關(guān)文件,DCloud不愿也不敢沾惹這方面的麻煩。

之所以提供云打包,是方便不熟悉原生的前端工程師直接生成App安裝包。包括讓沒(méi)有mac電腦的工程師也可以打出iOS的包。

DCloud提供哪些技術(shù)支持?碰到框架bug影響業(yè)務(wù)怎么辦?

uni-app 是DCloud全力打造的重點(diǎn)產(chǎn)品,不是非專業(yè)公司的KPI項(xiàng)目。不會(huì)因?yàn)槟承┴?fù)責(zé)人的流動(dòng)導(dǎo)致框架爛尾。 uni-app 的github上的dev分支是日更的,可隨時(shí)修復(fù)bug。并且作為開(kāi)源產(chǎn)品,開(kāi)發(fā)者也可以修改源碼。 uni-app 的app引擎,支持原生擴(kuò)展,只要你會(huì)原生擴(kuò)展,就不怕app引擎有限制,大不了自己補(bǔ)一個(gè)原生插件進(jìn)去。 uni-app 開(kāi)發(fā)小程序,無(wú)需依賴微信等平臺(tái)升級(jí)。它們升級(jí)后,uni-app是可以直接使用的,不需要等待uni-app升級(jí)才能使用微信的新功能。

開(kāi)發(fā)者碰到問(wèn)題,可以通過(guò)如下途徑進(jìn)行反饋交流:

  • ask社區(qū):https://ask.dcloud.net.cn/explore/category-12
  • QQ群:參考官網(wǎng)左側(cè)導(dǎo)航顯示的QQ群列表

另外,如果您確實(shí)需要商業(yè)化的保障才安心,也可以申請(qǐng)付費(fèi)技術(shù)支持。

大型互聯(lián)網(wǎng)公司發(fā)布的開(kāi)源框架,是不是更有影響力?

大型互聯(lián)網(wǎng)公司在自用某個(gè)項(xiàng)目時(shí),解決了某個(gè)問(wèn)題,把它摘出來(lái)開(kāi)源,這個(gè)是眾多大公司開(kāi)源項(xiàng)目的來(lái)源和初衷。

而之所以把內(nèi)部自用的框架開(kāi)源出來(lái),基本是為了在技術(shù)圈塑造形象和威望。對(duì)團(tuán)隊(duì)而言,有助于招聘;對(duì)負(fù)責(zé)人個(gè)人而言,有助于晉升和提升名氣。

這類開(kāi)源項(xiàng)目被戲稱為KPI項(xiàng)目,往往逃不開(kāi)4個(gè)魔咒:

  1. 很多項(xiàng)目開(kāi)源后一旦取得成績(jī),負(fù)責(zé)人就升職調(diào)崗,或者因?yàn)槠渌蜃畛趿㈨?xiàng)負(fù)責(zé)人離職,于是之前的開(kāi)源項(xiàng)目就慢慢變涼。
  2. 其設(shè)計(jì)初衷是為公司內(nèi)部使用的,不是站在廣泛的開(kāi)發(fā)者需求角度設(shè)計(jì)的,其他開(kāi)發(fā)者使用時(shí)會(huì)遇到各種問(wèn)題。
  3. 大型互聯(lián)網(wǎng)公司的主業(yè)都是toC的,而不是to開(kāi)發(fā)者。投很多資源持續(xù)維護(hù)這些開(kāi)源項(xiàng)目并不是其公司目標(biāo),也不會(huì)有回報(bào)。
  4. 優(yōu)秀的程序員和優(yōu)秀的開(kāi)發(fā)框架設(shè)計(jì)者是2個(gè)層面的問(wèn)題,不是說(shuō)某些互聯(lián)網(wǎng)大廠的前端技術(shù)人員水平不足,而是他們?nèi)鄙倜嫦蜷_(kāi)發(fā)者設(shè)計(jì)產(chǎn)品的經(jīng)驗(yàn),這種經(jīng)驗(yàn)需要長(zhǎng)期為開(kāi)發(fā)者提供服務(wù)的團(tuán)隊(duì)才能具備。經(jīng)驗(yàn)不足者設(shè)計(jì)的產(chǎn)品不會(huì)好用。

而DCloud這家公司就是為開(kāi)發(fā)者而生的,優(yōu)秀的人才和資源全部是為開(kāi)發(fā)者服務(wù)的,產(chǎn)品立項(xiàng)之初廣泛調(diào)研不同開(kāi)發(fā)者的需求,產(chǎn)品發(fā)布后持續(xù)迭代,讓開(kāi)發(fā)者們使用的更便利。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)