網站首頁 編程語言 正文
uni-app
框架轉眼已經發布了一年多,使用uni-app
的開發者也是與日俱增。因為uni-app
是一個跨端框架,所以我們大多使用它就是為了同時一套代碼跨多端,選擇uni-app
可以算是眼下一個比較好的選擇。
無疑,uni-app
是一個冉冉升起的新星,同樣帶給我們的一個問題就是與之配套的 UI 組件庫卻沒有那么多的選擇。而我們開發應用,組件庫又是一個不可或缺的輔助開發的利器。
那么有沒有一個好用,且性能又比較不錯的組件庫供我們在uni-app
中使用呢?
1
組件庫選擇
首先一個問題就是UI組件庫怎么選擇?
1
vue 組件庫
因為uni-app
是基于vue
開發所有前端應用的框架,那么我們肯定首先想到的就是vue
組件庫可不可以用。
首先排除PC端的組件庫如ElementUI
、iview
這些,可供我們選擇移動端的 vue 組件庫也有很多。
比如說 Mint UI
、Vant
、Mui
、vonic
等等。
我們知道uni-app
雖然基于vue
開發,但是同時還要遵循小程序的開發規范。
所以像小程序開發一樣,uni-app
中同樣的沒有document
、window
對象。
而且我們看到官方文檔中有提及到:
uni-app只支持vue單文件組件(.vue組件)。其他的諸如:動態組件,自定義 render,和 <script type="text/x-template">
字符串模版等,在非H5端不支持。
這就導致我們不能在uni-app
中使用許多通常前端開發中的操作。所以純前端開發的 vue
組件庫在我們的uni-app
中用起來,就顯得有些困難了??赡苄枰膭釉S多代碼,才能在uni-app
中正常運行,或者干脆跑不起來。
2
小程序自定義組件庫
既然說 vue 組件庫不能使用,那么小程序組件庫可以支持么 ?
答案是可以,小程序組件是得到官方支持的,詳看小程序組件支持。
但是需要注意的是,雖然支持了小程序組件,并不是說就能在全平臺都能運行。我們選擇 uni-app
本來就是為了跨端,而使用小程序組件庫,卻只能在對應的小程序平臺使用,這顯然也不再我們的預期內。
如果只兼容微信小程序平臺這里推薦兩個好用的組件庫:
- Vant Weapp
- iView Weapp
3
uni-app 組件庫
那么想要在 uni-app
中開心的使用組件庫,還是使用 uni-app
框架開發的組件庫用起來更順手。
好在 uni-app
有插件市場,給我們提供了很多的組件,但總歸沒有太多成體系的組件庫。
那可供我們選擇的只有官方的 uni-ui
組件庫。
2
uni-ui
剛開始的時候,使用 uni-ui
簡直是一言難盡,總感覺誠意不足。不過隨著 uni-app
的版本迭代,似乎官方也開始在 uni-ui
上花心思了。
一改之前的 BUG
不斷,性能不足的窘迫。也開始奮起直追,目前 uni-ui
內組件還在不斷的更新、優化,基本上可以維持我們項目的基本開發。
現在我為什么要推薦大家使用 uni-ui
而不是使用其他三方的組件庫呢?
1
跨端能力
上述我們我們已經提到,使用 vue
組件庫,基本上是行不通的,除非你有能力改造大量組件,來兼容 uni-app
,所以目前我們不推薦使用,看之后官方的更新,以及對 vue
前端組件的支持 。
小程序端的組件是可以支持的,但是也僅僅是支持對應平臺。例如 Vant Weapp
、iView Weapp
等小程序組件庫也只是能在微信小程序平臺運行,跨端能力遠遠滿足不了我們的需求。
而 uni-ui
畢竟是 uni-app
親兒子,能力雖有些不足,但是它也有自己的有優點,這點就表現在跨端能力上。
uni-ui
的組件都是多端自適應的,底層會抹平很多小程序平臺的差異或 bug
。
比如 uni-swiper-action
組件,在 app
、h5
和微信小程序上會使用交互體驗更好的 wxs
技術,但在不支持 wxs
的其他小程序端會使用 js
模擬達到類似效果,使我們在跨端的同時,而性能還能得到保障。而以上這些我們開發者只要拿來組件開箱即用。
不僅如此,uni-ui
的組件還支持了 nvue
的原生渲染,媽媽終于不用擔心我在 nvue
中沒有組件可以用了。
2
更新數據
雖然uni-app
支持小程序自定義組件。但小程序自定義組件的組件庫都需要使用 setData
手動更新數據,在大數據量時、或高頻更新數據時,很容易產生性能問題。
而uni-u
i屬于vue
組件,uni-app
引擎底層自動diff
更新數據。哪怕遇到大數據和高頻更新數據時,表現都會比手動setData
要好很多。
在插件市場里眾多 vue
組件都具備這個特點。
3
優化邏輯層和視圖層通訊折損
目前不論小程序還是app
的webview
渲染,全都是邏輯層和視圖層分離的。
這樣就會涉及到邏輯層和視圖層的一個通訊問題。比如在視圖層拖動一個可跟手的組件,由于通訊的損耗,用 js
監聽很難做到實時跟手的操作。
這時就需要使用css
動畫以及平臺底層提供的wxs
、bindingx
等技術。不過這些技術都比較復雜,所以uni-ui
在在需要跟手式操作的ui
組件里做了封裝,比如uni-swiper-action
列表項左滑菜單,就在底層使用了這些技術,實現了高性能的交互體驗。
3
總結一下
盡管現在 uni-ui
可能在某些方面還不是很完美,但是在 uni-app
框架中無疑是優先的選擇。
無論是 uni-ui
的跨端能力還是性能,在小程序和混合 app
領域,暫時還沒有比 uni-ui
更好的選擇。
如果大家有什么更好的建議,或者很棒的實現,都可以到 uni-ui
的 github
上提 Issues 和 PR,共同維護起來一個好用的 UI 組件庫。
原文鏈接:https://blog.csdn.net/qq_47443027/article/details/119734230
相關推薦
- 2023-01-20 .Net執行SQL存儲過程之易用輕量工具詳解_ASP.NET
- 2022-07-10 springboot 將logback日志根據不同類輸入到不同路徑下
- 2022-05-26 C++的深淺拷貝和寫時拷貝你了解嗎_C 語言
- 2022-03-11 .NET6中使用CuteEditor詳解_實用技巧
- 2022-06-12 Python取讀csv文件做dbscan分析_python
- 2022-09-09 使用?React?Hooks?重構類組件的示例詳解_React
- 2022-05-17 ubuntu切換python版本解決語法不匹配問題(SyntaxError: invalid syn
- 2022-03-27 關于Android?Device?Monitor?無法打開問題_Android
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支