uni-app框架转眼已经发布了一年多,使用uni-app的开发者也是与日俱增。因为uni-app是一个跨端框架,所以我们大多使用它就是为了同时一套代码跨多端,选择uni-app 可以算是眼下一个比较好的选择。

无疑,uni-app是一个冉冉升起的新星,同样带给我们的一个问题就是与之配套的 UI 组件库却没有那么多的选择。而我们开发应用,组件库又是一个不可或缺的辅助开发的利器。

那么有没有一个好用,且性能又比较不错的组件库供我们在uni-app中使用呢?

1

组件库选择

首先一个问题就是UI组件库怎么选择?

1

vue 组件库

因为uni-app是基于vue开发所有前端应用的框架,那么我们肯定首先想到的就是vue组件库可不可以用。

首先排除PC端的组件库如ElementUIiview这些,可供我们选择移动端的 vue 组件库也有很多。

比如说 Mint UIVantMuivonic等等。

我们知道uni-app虽然基于vue开发,但是同时还要遵循小程序的开发规范。

所以像小程序开发一样,uni-app中同样的没有documentwindow对象。

而且我们看到官方文档中有提及到:

uni-app只支持vue单文件组件(.vue组件)。其他的诸如:动态组件,自定义 render,和 <script type="text/x-template"> 字符串模版等,在非H5端不支持。

这就导致我们不能在uni-app中使用许多通常前端开发中的操作。所以纯前端开发的 vue组件库在我们的uni-app中用起来,就显得有些困难了。可能需要改动许多代码,才能在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 WeappiView Weapp 等小程序组件库也只是能在微信小程序平台运行,跨端能力远远满足不了我们的需求。

uni-ui 毕竟是 uni-app 亲儿子,能力虽有些不足,但是它也有自己的有优点,这点就表现在跨端能力上。

uni-ui 的组件都是多端自适应的,底层会抹平很多小程序平台的差异或 bug

比如 uni-swiper-action 组件,在 apph5和微信小程序上会使用交互体验更好的 wxs 技术,但在不支持 wxs 的其他小程序端会使用 js 模拟达到类似效果,使我们在跨端的同时,而性能还能得到保障。而以上这些我们开发者只要拿来组件开箱即用。

不仅如此,uni-ui 的组件还支持了 nvue 的原生渲染,妈妈终于不用担心我在 nvue 中没有组件可以用了。

2

更新数据

虽然uni-app支持小程序自定义组件。但小程序自定义组件的组件库都需要使用 setData手动更新数据,在大数据量时、或高频更新数据时,很容易产生性能问题。

uni-ui属于vue组件,uni-app引擎底层自动diff更新数据。哪怕遇到大数据和高频更新数据时,表现都会比手动setData要好很多。

在插件市场里众多 vue 组件都具备这个特点。

3

优化逻辑层和视图层通讯折损

目前不论小程序还是appwebview渲染,全都是逻辑层和视图层分离的。

这样就会涉及到逻辑层和视图层的一个通讯问题。比如在视图层拖动一个可跟手的组件,由于通讯的损耗,用 js 监听很难做到实时跟手的操作。

这时就需要使用css动画以及平台底层提供的wxsbindingx等技术。不过这些技术都比较复杂,所以uni-ui在在需要跟手式操作的ui组件里做了封装,比如uni-swiper-action列表项左滑菜单,就在底层使用了这些技术,实现了高性能的交互体验。

3

总结一下

尽管现在 uni-ui 可能在某些方面还不是很完美,但是在 uni-app 框架中无疑是优先的选择。

无论是 uni-ui 的跨端能力还是性能,在小程序和混合 app 领域,暂时还没有比 uni-ui 更好的选择。

如果大家有什么更好的建议,或者很棒的实现,都可以到 uni-uigithub 上提 Issues 和 PR,共同维护起来一个好用的 UI 组件库。

如何在uni-app中选择一个合适的UI组件库相关推荐

  1. mpvue项目中使用第三方UI组件库

    原文链接 最新声明 本文编写时间较早,随着时间的推移,mpvue及其周边生态越来越完善,文中的案例已经不适合在项目使用.希望大家参考其他更新的文章~ 简介 微信小程序上线已有一年多时间啦,自美团的mp ...

  2. 如何在React Native中写一个自定义模块

    前言 在 React Native 项目中可以看到 node_modules 文件夹,这是存放 node 模块的地方,Node.js 的包管理器 npm 是全球最大的开源库生态系统.提到npm,一般指 ...

  3. 如何在 React Native 中写一个自定义模块

    前言 在 React Native 项目中可以看到 node_modules 文件夹,这是存放 node 模块的地方,Node.js 的包管理器 npm 是全球最大的开源库生态系统.提到npm,一般指 ...

  4. 做视频自媒体,选择一个合适的剪辑软件很重要,这些或许适合你

    做视频自媒体,选择一个合适的剪辑软件很重要,这些或许适合你 自媒体成为当今一个非常活跃的领域,因为自媒体不像传统媒体一样,只有官方才能够进行内容的生产和推送,自媒体让每个人都可能成为内容的创作者.随着 ...

  5. iOS9中如何在日历App中创建一个任意时间之前开始的提醒(一)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们知道如果想在iOS中自带的日历App中创建闹铃开始的时间, ...

  6. php7开发的项目怎么样,如何在PHP7项目中搭建一个多线程

    如何在PHP7项目中搭建一个多线程 发布时间:2021-03-05 15:31:22 来源:亿速云 阅读:93 作者:Leah 这期内容当中小编将会给大家带来有关如何在PHP7项目中搭建一个多线程,文 ...

  7. 企业如何选择一个合适的可视化工具

    高质量的可视化工具对数据分析是必不可少的.数据可视化工具是一种应用软件,它帮助用户以可视化和图形化的格式显示数据,并提供数据的完整轮廓.饼图.曲线.热图.直方图.雷达/蜘蛛图只是可视化的一小部分,这些 ...

  8. 如何选择一个合适的大数据可视化工具

    高质量的可视化工具对数据分析是必不可少的.数据可视化工具是一种应用软件,它帮助用户以可视化和图形化的格式显示数据,并提供数据的完整轮廓.饼图.曲线.热图.直方图.雷达/蜘蛛图只是可视化的一小部分,这些 ...

  9. 怎样设置一个函数C语言,C语言中怎样编写一个函数 如何在C语言中定义一个函数?...

    如何在C语言中定义一个函数?小编很想在你面前流泪最后却还是选择装作打个哈欠 为什么小编怎么定义函数都不正确呢? 总是说小编 表达语法错误在main函数中 小编们可以在头文件与main函数之间定义,并编 ...

最新文章

  1. js:深入prototype(下:原型重写)
  2. Redis之单线程 Reactor 模型
  3. cesium 3dtiles 加载本地数据_Meteva笔记:加载本地观测数据
  4. python客户端和服务端实验_python实现socket客户端和服务端简单示例
  5. 文明使用计算机 教案,四年级信息技术下册 文明在我身边教案 华中师大版
  6. Qt Quick 中 QML 与 C++ 混合编程详解
  7. C++17尝鲜:类模板中的模板参数自动推导
  8. 超越杭州、北京居首、广州晋级第一梯队……国内城市算力大起底!
  9. ionic app 优化三件套,让其更贴近原生app
  10. 【jackson】@JsonDeserialize 和 @JsonSerialize
  11. 返璞归真-SOC起源
  12. 用HTML搞一个汇率转换器,Currency Converter:实时汇率转换
  13. 学习OpenCV——计算邻接区域列表(build_adjoin)
  14. OEL安装RAC 配置DNS文档
  15. 图形渲染——伽马矫正
  16. 发力区块链,百度险中求胜 |链捕手
  17. 解决Heroku“ name is already taken“问题
  18. 三款EPUB阅读软件对比
  19. C++ 双指针汇总(快慢指针, 滑动窗口, 前后指针,左右指针)
  20. LVGL支持中文字体实践指南

热门文章

  1. 【大话QT之十四】QT实现多语言切换
  2. Unified Batch All Triplet Loss for Visible-Infrared Person Re-identification
  3. 还在996?等着进ICU?程序员不服!
  4. 汇编语言----处理机控制指令及伪指令
  5. RuntimeError: non-empty 3D or 4D input tensor expected but got ndim: 4
  6. 强化学习训练Chrome小恐龙Dino:最高超过4000分
  7. 量化投资:为什么在中国发展之路任重而道远
  8. SeEnableDelegationPrivilege权限的利用
  9. 提升Facebook触及率和互动率攻略 | 智能客服帮您抓住用户的心
  10. python解压 tar.gz文件