uni-app選型評估指南

小陳的筆記發表於2022-06-22

uni-app選型評估23問

如果你關心競品對比,這裡有幾份詳盡對比:

  1. 多端開發框架對比橫評,參考:跨端開發框架深度橫評-掘金
  2. 只做App,flutter、react native等App跨平臺框架對比,參考:flutter、rn、uni-app比較-DCloud問答

  3. 只做小程式,原生wxml開發、wepy、mpvue、taro的對比,跨端框架深度評測:微信原生、wepy、mpvue、uni-app、taro、chameleon-DCloud問答

  4. uni-app和微信原生開發的詳細比較評測,參考:使用uni-app開發小程式,比直接原生開發小程式好在哪裡?-DCloud問答

uni-app收費嗎?

uni-app 是免費並且屬於Apache2.0開源協議的產品。DCloud官方承諾永遠不會變更開源協議。無論HBuilderX、uni-app、App,面向中國人永久免費。大家可以放心使用。

DCloud的盈利方式在幫助開發者進行推廣和流量變現上,而不在開發工具收費上。

跨端會造成功能受限制嗎?

uni-app在跨平臺的過程中,不犧牲平臺特色,不限制平臺的能力使用。

應用開發中,90%的常規開發,比如介面元件、聯網等api,uni-app封裝為可跨多端的API。

各個端的特色功能,uni-app引入條件編譯 。可以優雅的在一個專案裡呼叫不同平臺的特色能力。比如push,微信小程式裡不支援,但可以在App裡使用,還有很多原生sdk,在App時難免涉及,這些都可以正常的在uni-app框架下使用。

下圖是uni-app產品功能框架圖,uni-app在保持uni規範跨平臺的前提下,還可實現每個平臺特有的平臺能力(如微信小程式平臺,可繼續呼叫微信卡劵等微信特有業務API)。

在做小程式時,小程式所有的api都可以使用;而輸出到App時,原生渲染引擎、原生sdk整合和混寫都支援,使得原生的所有api都可以使用。

同時注意,條件編譯不同於程式碼裡if邏輯判斷。條件編譯塊裡的程式碼或指定的檔案,只有在特定平臺才會被編譯進去,不會把不能用的其他平臺程式碼混在一個包裡。如果大量使用if判斷,會增大體積和影響效能,而條件編譯則沒有這些問題,減少包體積,減少互相的干擾。

uni-app的手機端使用者體驗如何?

使用uni-app開發的微信小程式,因為智慧的處理的資料的diff,比大多人手寫的原生小程式的效能還好。詳細資料評測參考:跨端開發框架深度橫評-掘金

uni-app打包成App後,支援webview渲染和weex原生渲染這2種引擎,可以任由開發者切換使用。

  • webview渲染方式,架構和微信小程式一樣。微信小程式的Hybrid應用框架是業內體驗上的標杆,實踐證明這種體驗足以承載一線網際網路開發商獲得上億使用者。uni-app的App端體驗同微信小程式,超過其他平臺的小程式,超過一般的hybrid框架。
  • 原生渲染方式,是DCloud改造了weex引擎,在weex上實現了uni-app的元件和API。達到更優秀的使用者體驗。

由於有豐富的外掛市場,以及支援所有小程式SDK在App端的使用,使得uni-app擁有更龐大的應用生態。

只開發小程式,需要uni-app嗎?

是的,單獨開發小程式,也應該使用uni-app。它比其他小程式框架或原生小程式開發更有優勢。原因如下:

  1. uni-app無需追隨微信升級,可不受限在條件編譯裡使用wx的現在或未來的所有api
  2. uni-app的效能比一般人手寫的微信原生程式碼效能更高。就像vue操作比一般人寫js操作dom效能更高一樣。底層自動diff差量更新資料,比手動setData效能更高。評測資料見下文
  3. uni-app是純vue語法,不必另學一種dsl。開發不同專案時,思維不用切換
  4. uni-app的元件、模板非常豐富,外掛市場數千款外掛。如富文字解析、圖表等元件,uni-app版外掛效能均超過了wxparse、wx-echart等微信小程式元件
  5. HBuilderX比微信工具更強大,開發效率更高。哪怕使用vscode等工具,由於這些工具對vue的支援強於對wxml的支援,所以開發效果也會更高
  6. 微信原生開發對webpack、預編譯語言、工程流程管理很多功能都不支援,大公司很少用微信原生開發,都是在用框架來提升開發效率
  7. uni-app支援雙向資料繫結、vuex狀態管理,比小程式原生開發方便的多
  8. 遲早會有多端需求,使用uni-app再無後續顧慮
  9. uni-app並非僅用於做跨端的,只用uni-app做小程式、只做H5、只做App的,案例是一樣多的,詳見:uni-app官網  關於uni-app和微信開發的詳細比較評測,參考:使用uni-app開發小程式,比直接原生開發小程式好在哪裡?-DCloud問答
  10. 評測1、uni-app和原生wxml開發、wepy、mpvue、taro的對比,跨端框架深度評測:微信原生、wepy、mpvue、uni-app、taro、chameleon-DCloud未達到
  11. 評測2、uni-app和微信原生開發的詳細比較評測,參考:使用uni-app開發小程式,比直接原生開發小程式好在哪裡?-DCloud問答

只開發App,需要uni-app嗎?

uni-app是更好的跨平臺開發框架,開發一次iOS、Android都有了。體驗好、開發效率高。

uni-app在App端,基於能力層/渲染層分離的架構設計(見下圖),渲染層是webview和weex二選一,能力呼叫都是共同的plus api,比如藍芽、掃碼等能力;也就是weex被內建到uni-app中,並且被強化了。

過去weex有個很大的問題是api太少,開發時必須iOS、Android原生和前端3撥團隊協作開發,實際上react native也如此,因為他們的核心只是高效能渲染器。

plus api的結合解決了這個問題,大多數App的開發不再需要原生介入了,從而把跨平臺開發省成本這個核心目的落地了。

uni-app在App側可以使用豐富的小程式sdk,如網易雲信、環信、七牛等眾多sdk廠商均原廠維護其小程式sdk版本,而這些sdk均可直接用於uni-app併發布為iOS、Android的App。

uni-app的外掛市場裡有非常多的ui庫、元件、模板,可以大幅提升開發效率。

相比純原生開發,uni-app體驗可商用,也不會限制功能呼叫,但開發效率和開發成本更優於原生開發。

如果你已經有了原生App,那麼可以區域性使用uni-app,內嵌SDK,讓工程逐步跨平臺化。

uni-app是多端寫在一個專案統一升級維護,還是每個端不同的專案,只複用部分程式碼

uni-app是多端寫在一個基礎專案下,差異使用條件編譯來管理。

這有個巨大的好處是一套工程程式碼,升級時可多端同時更新。

如果把不同端的專案分開,那麼維護升級時非常麻煩,無法方便同步升級。

所以uni-app開發微信小程式時,不止編碼,包括域名校驗等配置均在HBuilderX裡完成,不需要在微信開發者工具裡二次調整。

uni-app 學習成本高嗎?基於什麼技術棧?

uni-app簡單來說是 vue的語法 + 小程式的api。

它遵循Vue.js語法規範,元件和API遵循微信小程式命名,這些都屬於通用技術棧,學習它們是前端必備技能,uni-app沒有太多額外學習成本。

有一定 Vue.js 和微信小程式開發經驗的開發者可快速上手 uni-app 。

沒學過vue的同學,也不用掌握vue的全部,只需瞭解vue基礎語法、虛擬dom、資料繫結、元件、vuex,其他如路由、loader 不用學,cli、node.js、webpack也不需要學。

官方有入門培訓影片,且還有眾多培訓渠道加入uni-app生態,可參考培訓教程資源彙總。

uni-app 開發體驗如何?支援現代前端開發流程嗎?

uni-app 積極擁抱社群現有的現代開發流程,包括但不限於:

  • 內建了webpack
  • NPM 包管理系統
  • es6+ 語法(釋出時會自動編譯為es5)
  • 各種前處理器(less、scss、stylus、typescript)
  • uni-app的官方ide:HBuilderX,在vue、json、markdown、程式碼提示、操作效率上,有非常明顯的優勢,可幫助開發者大幅提高工作效率
  • uni-app同時也提供了cli方式,可使用其他開發工具如vscode開發,當然開發效率不如HBuilderX。對比詳見

uni-app 生態開放性如何?能否直接利用現有前端社群資源?

uni-app 提供了開放性的生態:

  • 豐富的外掛市場為開發者提供數千款現成的輪子,
  • 相容微信小程式 JS SDK,豐富的小程式生態內容可直接引入uni-app,並且在App側通用
  • 相容微信小程式自定義元件
  • 支援 NPM 包管理系統
  • 支援 mpvue 專案及元件
  • 支援原生外掛,見外掛市場:
  • 支援App原生工程裡嵌入uni-app的sdk。

需要注意的是,uni-app 採用Vue.js方案,限制了dom操作,因此所有基於dom的前端庫都無法直接使用;所幸的是目前基於微信小程式的庫已經非常多了,這個生態也很完善,所有微信小程式的庫在uni-app 裡都能用,不止是在微信裡能用,在App下也能用。

uni-app 支援的手機版本最低到多少?

Android4.4、iOS8是官方會保障相容的。 要知道Android4.4已經是2013年釋出的手機了,正常使用者不會還在用這麼久遠的手機。

uni-app成熟度高嗎?

uni-app是目前最成熟的多端開發框架,已迭代幾十個版本,擁有幾十個開發者交流群,幾十萬應用案例。

阿里小程式IDE官方內嵌uni-app,uni-app沒有讓阿里巴巴失望,也不會讓你失望。詳見:

uni-app的社群活躍嗎?

加入uni-app的群就知道,幾十個QQ/微信群每天數萬條聊天記錄,非常活躍。論壇裡每天數百個帖子。

外掛市場內容也非常豐富,各種輪子方便可用。/,並且很多輪子的uni-app版,效能功能都強於微信小程式版。

基於uni-app的三方培訓也很多。騰訊課堂官方親自為uni-app製作了課程。

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

開發者分享的案例參考uni-app 應用案例

DCloud是傢什麼公司,是否可信賴

DCloud從2013年開始做HBuilder,目前380萬前端開發者在使用DCloud的開發工具,HBuilder百度指數與sublime、webstorm等全球知名工具相同。是中國唯一一家成功的開發工具廠商。

DCloud是明星創業公司,融資已經過了B2輪,且均為知名VC或戰略投資人。

DCloud是HTML5中國產業聯盟的發起單位和秘書單位。該聯盟隸屬於工信部信通院標準所。

DCloud產品中使用的HTML5Plus規範,為聯盟的標準規範而非私有api。

DCloud的產品技術一直引領業內,2015年就上線業內第一個"小程式":DCloud流應用。隨後DCloud廣泛推動業內各大公司上線"小程式",普及該技術廣泛應用。

數年來只有其他公司侵權DCloud,這些作惡公司已被法院判決給DCloud賠款道歉,DCloud從未有劣跡,誠信立足於行業。

阿里小程式IDE官方內嵌uni-app,uni-app沒有讓阿里巴巴失望,也不會讓你失望。詳見:阿里小程式IDE官方內嵌uni-app,為開發者提供多端開發服務-DCloud問答

App打包必須上傳DCloud雲端嗎?程式碼會洩露嗎?

程式碼可以雲打包,也可以離線打包。

即使使用雲打包,DCloud也不會保留開發者的程式碼,雲端打包完成後程式不會持久化儲存相關檔案,DCloud不願也不敢沾惹這方面的麻煩。

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

DCloud提供哪些技術支援?碰到框架bug影響業務怎麼辦?

uni-app 是DCloud全力打造的重點產品,不是非專業公司的KPI專案。不會因為某些負責人的流動導致框架爛尾。 uni-app 的github上的dev分支是日更的,可隨時修復bug。並且作為開源產品,開發者也可以修改原始碼。 uni-app 的app引擎,支援原生擴充套件,只要你會原生擴充套件,就不怕app引擎有限制,大不了自己補一個原生外掛進去。 uni-app 開發小程式,無需依賴微信等平臺升級。它們升級後,uni-app是可以直接使用的,不需要等待uni-app升級才能使用微信的新功能。

開發者碰到問題,可以透過如下途徑進行反饋交流:

  • ask社群:DCloud社群
  • QQ群:參考官網左側導航顯示的QQ群列表

另外,如果您確實需要商業化的保障才安心,也可以申請付費技術支援。

大型網際網路公司釋出的開源框架,是不是更有影響力?

大型網際網路公司在自用某個專案時,解決了某個問題,把它摘出來開源,這個是眾多大公司開源專案的來源和初衷。

而之所以把內部自用的框架開源出來,基本是為了在技術圈塑造形象和威望。對團隊而言,有助於招聘;對負責人個人而言,有助於晉升和提升名氣。

這類開源專案被戲稱為KPI專案,往往逃不開4個魔咒:

  1. 很多專案開源後一旦取得成績,負責人就升職調崗,或者因為其他原因最初立項負責人離職,於是之前的開源專案就慢慢變涼。
  2. 其設計初衷是為公司內部使用的,不是站在廣泛的開發者需求角度設計的,其他開發者使用時會遇到各種問題。
  3. 大型網際網路公司的主業都是toC的,而不是to開發者。投很多資源持續維護這些開源專案並不是其公司目標,也不會有回報。
  4. 優秀的程式設計師和優秀的開發框架設計者是2個層面的問題,不是說某些網際網路大廠的前端技術人員水平不足,而是他們缺少面向開發者設計產品的經驗,這種經驗需要長期為開發者提供服務的團隊才能具備。經驗不足者設計的產品不會好用。

而DCloud這家公司就是為開發者而生的,優秀的人才和資源全部是為開發者服務的,產品立項之初廣泛調研不同開發者的需求,產品釋出後持續迭代,讓開發者們使用的更便利。



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70018483/viewspace-2902100/,如需轉載,請註明出處,否則將追究法律責任。

相關文章