unibest ui 库选择
背景
unibest 作为最好的 uniapp 开发模板,那 UI 框架 的选择也是要仔细斟酌的。
unibest 作为 uniapp + vue3 + ts 的项目,自然也要选择满足 vue3 的 UI库,所以像 vue2 时代的 uview 就不考虑在内了。但是在 uview 的基础上衍生出来的支持 vue3 的 uview 系 的 ui框架 还有不少,而且热度很高。
再来说说官方维护的 uni-ui,支持全端,而且有类型提示,目前已经内置到 unibest 了,如果用户确实用不到里面的组件也可以删除,减少包体积。
TIPS:
uni-ui本身是js开发的,但是官方提供了完备的类型提示( by@uni-helper/uni-ui-types)所以看起来就像是ts开发的一样,开发体验很好。所有的组件都有提示,很方便,很贴心。
再次重申一下 uview 不支持 Vue3,不然又有人问我为啥不用 uview。(臣妾做不到啊~)
UI 框架
经过搜寻了一番,目前参加对比的 UI 框架有:
- uv-ui (uveiw 系) - 文档地址
- uview-plus (uveiw 系) - 文档地址
- Wot Design Uni (wot 系) - 文档地址
- TuniaoUI (图鸟系) - 文档地址
还有 2 个 UI 框架也很优秀,但是只有部分组件开源免费,大半组件收费:
温馨提示:
- 收费没有对错,开源作者也要恰饭,需要有收入,光为爱发电可能半路夭折,或者质量很差。只要做得好,别人愿意买,提供优质的服务,也是极好的。
2.当然了
unibest作为开源库,自然会选择免费的UI 框架,下面我们就来对比一下下~
UI 框架对比
1. 开源热度
截止到 2024-02-20 发表文章时的数据:
| UI 框架 | uv-ui | uview-plus | wot | TuniaoUI |
|---|---|---|---|---|
| github stars | 358 | 291 | 226 | 141 |
| gitee stars | 555 | 126 | 35 | - |
| github forks | 16 | 73 | 31 | 12 |
| gitee forks | 40 | 5 | 6 | - |
其实到这里就一决高下了,github star 数: uv-ui(358) > uview-plus(291) > wot(226) > TuniaoUI(141),其中 uv-ui 拔得头筹。再经过人眼观察和对比两者官网的组件,最终我们选定 uv-ui 作为我们的 UI 框架。
源码仓库地址展示如下,纯粹为了方便大家查阅 (虽然大概率你们也不会去访问,/手动狗头)
接着奏乐接着舞,我们继续正文 ^_^
2. 多端支持情况
| UI 框架 | uv-ui | uview-plus | wot | TuniaoUI |
|---|---|---|---|---|
| h5 | ✅ | ✅ | ✅ | ✅ |
| app(ios) | ✅ | ✅ | ✅ | ✅ |
| app(android) | ✅ | ✅ | ✅ | ✅ |
| 微信小程序 | ✅ | ✅ | ✅ | ✅ |
| 支付宝小程序 | ✅ | ✅ | ✅ | ✅ |
| QQ 小程序 | ✅ | ✅ | ❌ | ❌ |
| 百度小程序 | ✅ | ✅ | ❌ | ❌ |
| 头条小程序 | ✅ | ✅ | ❌ | ❌ |
3. 组件数量
| UI 框架 | uv-ui | uview-plus | wot | TuniaoUI |
|---|---|---|---|---|
| 总数 | 67 | 67 | 62 | 55 |
| 基础组件 | 8 | 11 | 8 | 5 |
| 表单组件 | 16 | 17 | 20 | 14 |
| 数据组件 | 13 | 4 | 18 | 4 |
| 反馈组件 | 8 | 10 | 16 | 8 |
| 布局组件 | 7 | 9 | - | 8 |
| 导航组件 | 8 | 8 | 7 | 5 |
| 其他组件 | 7 | 8 | - | 5 |
| 内容组件 | - | - | - | 6 |
组件数:uv-ui(67) = uview-plus(67) > wot(62) > TuniaoUI(55)
4. ts 支持情况
查看4个组件库的源码,可以了解到:
uv-ui和uView-plus都是js写的,并非ts,可以通过ttou/uv-typings提供类型支持(但是并没啥提示,不知道是不是使用不当)。wot和TuniaoUI都是ts写的,编码体验会好很多。
5.一个月后更新数据(2024-03-25)
下面数据是一个月后的
2024-03-25更新的。为啥更新,主要是
wot的star上升飞快,而且是vue3 + ts写的,编码体验好,已经考虑改用wot了。
| UI 框架 | uv-ui | uview-plus | wot | TuniaoUI |
|---|---|---|---|---|
| github stars | 448 | 310 | 303 | 163 |
目前 uv-ui 和 wot 趋势最猛,偷偷告诉大家,我跟2个UI库的作者都是好朋友。另外,我在 uv-ui 群里面是群主(uv-ui作者 授予我的),wot作者 是我的微信好友,且他在 unibest交流群 里,入群那天欢迎仪式很容重,哈哈。
star history 实时对比地址: star-history.com/#Moonofweis…
star history 实时对比图片: api.star-history.com/svg?repos=M…
小知识:代码里如何辨别一个库是否有ts支持,写代码的时候按
ctrl + i(Mac 里cmd + i),如果有提示就是有,啥都没有就是没有。举个例子,编写
<xx-button type="" ...,在type=""双引号里面按ctrl + i,看提示就知道了。
wot有提示
uv-ui无提示
把 tsconfig.json 文件里面 types 里面的 @ttou/uv-typings/v3 改为 @ttou/uv-typings/v2 就正常了(也是群友发现的),如下。
总结
很高兴我们已经为宇宙最强 uniapp 开发模板 unibest 选好了 UI 组件库,uv-ui 是最终的幸运儿。为此我特意去 uv-ui 官网里面捐赠了一杯咖啡钱给作者,开源不易,要支持一下。
一个月后,新的幸运儿变为 wot (wot-design-uni),同样捐了20元。
😭哎,我自己收到的钱不多,50不到,现在基本都捐出去了,囊中羞涩啊~