uni-app就是基于vue開發(fā)的框架,如果你會vue的話,入門應(yīng)該是沒啥問題,如果上手去做項(xiàng)目的話,還是有些難度的。具體哪些難度我們得搞清楚uni-app到底是什么。
uni-app是一個使用Vue.js開發(fā)所有前端應(yīng)用的框架,開發(fā)者編寫一套代碼,可發(fā)布到iOS、Android、H5、以及各種小程序(微信/支付寶/百度/頭條/QQ/釘釘)等多個平臺
這是官網(wǎng)介紹的原話,咋一聽很厲害的樣子。發(fā)布到多個平臺只需要一套代碼,這樣的話效率高,成本又低。那為何大公司沒有采用uni-app進(jìn)行開發(fā)呢?
這就很像是java虛擬機(jī)了,不過java虛擬機(jī)是程序運(yùn)行時工作,而uni-app是編譯時工作。
可以這樣理解,
在編譯時解決平臺問題,這是目前很多跨平臺框架的首選解決方案,即保證效率又方便開發(fā)者。
但這種方案也有缺點(diǎn),如果平臺變動或更新,那么有可能導(dǎo)致你app某些功能無法使用,必須等著uni-app維護(hù)升級。
這就是uni-app的跨平臺原理,現(xiàn)階段的跨平臺方案沒有完美的,都是有利有弊。
是的,uni-app開發(fā)頁面用的就是Vue組件
上圖代碼是uni-app登陸模版項(xiàng)目里面的,可以看出來,用的就是Vue的template模版開發(fā)。
一般不涉及到平臺性的組件都是使用Vue開發(fā)的,所以如果你項(xiàng)目對跨平臺要求不高,而且會Vue的話可以直接上手開發(fā)uni-app
比如彈窗,我們用Vue的話一般在template寫個dialog,而uni-app可以直接通過uni.showModal實(shí)現(xiàn)彈窗。當(dāng)然這個例子不太嚴(yán)謹(jǐn),Vue也能封裝一個這樣實(shí)現(xiàn)。這里主要講的是跨平臺,使用uni-app提供的組件基本不用擔(dān)心平臺適配問題。
為什么會Vue上手uni-app仍然有難度
這里說的難度不是指寫代碼的難度,代碼都是用Vue寫的不存在啥難度。
uni-app代碼編譯打包后,移動端基本是運(yùn)行在安卓的webview或ios的WKWebView。但是安卓或ios平臺為了效率或者安全性,不會去支持H5的一些危險特性或者功能,當(dāng)然H5是安全的們這里的危險只是安卓和ios認(rèn)為的。
比如ios的WKWebview,對H5一些新的css不支持或者不會太早的更新適配。
如果你不了解移動端webview的差異性,那么很容易踩雷,而且這些錯誤都是無法通過debug發(fā)現(xiàn)的。
有些適配工作是uni-app無法通過編譯完成的,這就是需要開發(fā)者去實(shí)現(xiàn)了。
比如開發(fā)中,div、ul、li等得改為view,微信的wxcomponet不支持H5等等。
這里就增加了很多的開發(fā)成本,很多不支持跨平臺的vue組件用不了。
總結(jié)
如果你會Vue,使用uni-app開發(fā)的話,上手是比較簡單的,但是如果項(xiàng)目涉及到跨平臺的話,就得斟酌下了,會有很多坑,一旦影響到業(yè)務(wù)功能的實(shí)現(xiàn),就得不償失了。
如果你項(xiàng)目不涉及到移動端,就只在web和小程序上運(yùn)行的話,可以使用uni-app開發(fā)。
都說后端造語言,移動端造系統(tǒng),web端造框架。但在這個前端大融合的時代,系統(tǒng)框架已分的沒那么清楚。