
基于MUI、H5+這一套技術(shù)開發(fā)APP,曾經(jīng)寫了幾篇相關(guān)文章關(guān)注的人還真不少,以至于我總感覺現(xiàn)在開發(fā)H5比原生的更火熱。今天就來分析下,算是以往的一個學習總結(jié)。無論是與非,好與壞,皆有它存在的道理。
概述
mui實現(xiàn)方式依賴系統(tǒng)webview,控件大多是HTML5控件,通過DOM渲染;
對比單純的webview加載頁面多了一些優(yōu)化,比如CSS動畫、頁面預(yù)加載、多頁面顯示隱藏模擬窗口切換,以至于在視覺上看起來不那么生硬。
H5+調(diào)用原生接口,也是通過js調(diào)用來實現(xiàn)的。
優(yōu)點:
優(yōu)點就是開發(fā)工具HBuilderX很好用,其他H5開發(fā)的優(yōu)點就不贅述了。
不足:
- 1、性能問題
通過webview來加載實現(xiàn)造成先天性不足,所以不要相信媲美原生性能等宣傳口號,包括MUI在內(nèi)的其他類似框架也都差不多,在頁面流暢度、性能等不管怎么優(yōu)化都是無法跨越的門檻。特別對于頁面復雜度、稍具有規(guī)模的項目效果很難讓人滿意。
- 2、原生調(diào)用
通過Native.js提供的接口加載原生類、方法,這就是很專業(yè)的事情了,你必須有iOS、Android原生的開發(fā)技術(shù)否則這一招數(shù)對你無效。
而且即使加載比如iOS的類文件等,加載系統(tǒng)本身的類庫還可以,你如果加載自定義的類貌似不行。
經(jīng)查詢,如果加載自己的類必須離線打包,在線打包無法實現(xiàn)。離線打包我熟悉但是我仍就沒搞明白自己的文件如何放、如何用,最后放棄,這一道道操作無疑又是一道門檻。
- 3、 關(guān)于跨平臺
一套代碼同時打包iOS、Android。是的、沒錯,確實可以同時打包。但也僅僅是打包,真正的APP實際運行效果又如何?我不管,反正我就是能打包多個平臺。
結(jié)論:
只要會前端開發(fā)就能開發(fā)APP了,對于沒有原生開發(fā)能力,對于一些簡單的、不那么復雜的應(yīng)用或者沒那么高要求的標準可以用MUI,因為上手簡單,開發(fā)速度快、成本低。
對于有點復雜的、要求性能的或者對原生依賴比較高的應(yīng)用還是原生吧。
未來:
我們使用MUI、H5+開發(fā)APP主要為了簡單方便快速,我們的APP復雜度也沒那么高,同時因為我們的客戶不確定有時要iOS的、有時要Android的,我們的隊伍原生人少,前端多。所以現(xiàn)有的項目如果沒有特殊情況一般都會用MUI。
跨平臺一直是我們的希望,我們也在不斷的摸索、學習、嘗試。
我個人使用MUI主要開發(fā)Android,因為我自己做了個小項目(dctt前面文章有介紹),單獨在Android上我認為效果還是可以的。
下一步:
- 公司的項目計劃轉(zhuǎn)uniapp
uni-app里vue文件是基于webview渲染的。它不在是一個網(wǎng)頁套殼應(yīng)用,它的js根本不運行在webview里(所以也沒有document等對象),也不受wkwebview的各種限制。而如果使用nvue的話,視圖層也不在webview里,和html5一點關(guān)系都沒有。
曾經(jīng)我也寫過一個demo簡單測試體驗下,無論在安卓還是iOS上感覺還不錯。
- 個人開始打算入坑Flutter了,以后有時間了把dctt寫個flutter版本的。