uniapp到底用什么ui框架最合适-关于uni-app的ui库、ui框架、ui组件

文章目录

    • 直接看答案
    • 关于uni-app的ui库、ui框架、ui组件
      • 组件的概念
      • 扩展组件的选择
        • uni ui
        • 如何使用uni ui
    • 综上,官方对组件的使用建议是:
    • 附录:其他全端兼容ui库
    • 参考文章:

直接看答案

如果想自己纯手写,直接用内置组件。如果要用ui的,可以用官方的uni ui

首先的原则是,uniapp是移动端优先的。因此不适合开发PC端的应用。

如果你有PC端软件开发的需求,应该使用electron等框架。

另外uni ui大部分组件同时兼容pc端。比如uni-admin就是这么做的。如果只做pc不考虑其他端,也可以使用任意的pc ui库,比如elementUI等。

uni-ui文档、如何在uniapp中使用elementUIvant等,请见文末。

关于uni-app的ui库、ui框架、ui组件

组件的概念

组件是现代开发的重要里程碑。组件重构了分工模型,让大量的轮子出现,让开发者可以拿来轮子直接用,大幅提升了整个产业的效率。

uni-app是有[内置组件]的。这和web开发不一样。

web开发基本上不用基础组件,都是找一个三方ui库,全套组件都包含。那是因为html的基础组件默认样式不适配手机风格。

但uni-app体系不是这样,内置组件就是为手机优化的。

但内置组件只能满足基础需求,更多场景,需要扩展组件。

扩展组件是基于内置组件的二次封装,从性能上来讲,扩展组件的性能略低于内置组件,所以开发者切勿抛弃内置组件,直接全套用三方UI组件库。

uni-app的[插件市场],有很多扩展组件,有的是单独的,有的是成套的。
有些开发者喜欢成套的组件,但注意成套扩展组件也不可能覆盖所有需求,很多场景还是需要单独下载专业组件。

扩展组件的选择

众多扩展组件如何选择?我们首先要搞清楚组件的分类。

组件分2大类:1、vue组件(文件后缀为vue);2、小程序自定义组件(文件后缀为wxml或其他小程序平台特有后缀名称)

  • vue组件又分为2个细项:only for web、全端兼容
  • 小程序组件又分为:微信/QQ小程序组件、阿里小程序组件、百度小程序组件、字节跳动小程序组件。
    这些组件uni-app都支持,但受组件本身技术特点限制,在不同端有不一样的支持度。
    下面这张表格,可以清楚的表达不同类型的组件的兼容性。

img

从表格中可以很明显看出,更推荐使用的是全端兼容的uni规范组件。

很多人容易搞错2个问题:

  1. 同样是vue组件,only for web的和全端的有什么区别?
    传统的vue组件,比如elementUI,都是only for web的,里面有大量dom和window对象操作。但小程序和App是没有dom这些api的,自然无法跨端使用。
    想要跨端,其实也不难,做一套无dom的vue组件即可。官方的uni-ui即是如此。还有众多开发者在插件市场提交了更多这种类型的库。
  2. vant是分web版和weapp版的,千万别搞混
    vant的web版操作了dom,所以只能用于web端;而vant weapp是微信小程序组件规范,可以用于微信、App、H5;vant自身并没有提供全端可用的无dom vue组件。

除了兼容性,在性能和生态完善度层面,不同类型组件有什么差别?

  1. 性能:
    • vue组件性能好于小程序自定义组件。这是因为uni-app在底层对vue数据更新使用了自动差量更新的机制。而小程序自定义组件,默认的setData写法是没有差量数据更新的,需要写代码手动实现差量更新才能达到相同性能。
  2. 生态完善度
    • 首先除了微信小程序,其他几个平台的小程序几乎是没有三方组件和模板生态的。开发其他端小程序,得靠uni-app的生态
    • 再说微信小程序生态,之前在微信小程序平台上一些有名的库(比如wxParse、wx-Echart),实际上在性能、功能、技术支持上,大多做的不如uni-app生态下的新库好。而vant、iview的weapp版,其性能也均不如uni ui。
  3. 其他指标
    • vue doc:HBuilderX支持[vue doc],组件作者在vue组件源码里编写vue doc,可以让组件使用者写代码时得到良好的代码提示。
    • easycom:uni-app支持[easycom],可以大幅简化组件的使用
    • nvue支持:如果开发App,可能会涉及到nvue原生渲染页面,这种渲染方式支持的css有限,此时就要甄别组件是否兼容nvue。

再来看看各种成套UI的优劣分析

uni ui

DCloud官方出了一套扩展组件,即[uni-ui]。

这些扩展组件支持单个组件从插件市场下载,也支持[npm引入]uni ui,当然更方便的是在HBuilderX新建项目时直接选择uni ui项目模板

uni ui有如下优势:

  1. 优化逻辑层和视图层的通信折损:非H5端的各个平台,包括App和各种小程序,其逻辑层和视图层是分离的,两层之间通信交互会有折损,导致诸如跟手滑动不流畅。uni ui在底层会利用wxs等技术,把适当的js代码运行在视图层,减少通信折损,保证诸如swiperAction左滑菜单等跟手操作流畅顺滑
  2. 自动差量diff数据:在uni-app下,开发App和小程序,不需要手动setData,底层自动会差量更新数据。但如果使用了小程序组件,则需要按小程序的setData方式来更新数据,很难做到自动diff更新数据。
  3. 背景停止:很多ui组件是会一直动的,比如轮播图、跑马灯。即便这个窗体被新窗体挡住,它在背景层仍然在消耗着硬件资源。在Android的webview版本为chrome66以上,背景操作ui会引发很严重的性能问题,造成前台界面明显卡顿。而uni ui的组件,会自动判断自己的显示状态,在组件不再可见时,不会再做动画消耗硬件资源。
  4. 纯vue语法:uni ui的引用、开发都是纯vue方式。而小程序组件的引用注册、开发都是小程序语法,两种语法混合在一个工程,写的也不舒服,维护也麻烦。
  5. 与[uni统计]自动整合:比如使用uni ui的导航栏组件,就不需要写统计的自定义事件来触发页面标题上报。uni统计会自动识别导航栏组件的标题。类似的,收藏组件、购物车组件,都可以免打点直接使用。
  6. uni ui兼容Android 4.4等低端机webview,没有浏览器兼容问题。
  7. uni ui支持nvue:App端,uni-app同时支持webview渲染和原生渲染,而uni ui是可以一套代码同时支持webview渲染和原生渲染的。为了兼容原生渲染,uni ui也做到了纯flex布局。
  8. uni ui内置vue doc,使用组件时有良好的代码提示
  9. 支持[easycom]规范,使用非常简单
  10. 支持[datacom规范],云端一体全部封装掉
  11. 支持[uni_module规范],方便插件的更新
如何使用uni ui

在HBuilderX新建项目时,直接选择uni ui项目模板,然后在代码里直接敲u,所有组件都拉出来,不用引用、不用注册,直接就用。

image-20231205160845807

img

综上,官方对组件的使用建议是:

  1. 首先使用内置组件
  2. 然后使用uni ui扩展组件
  3. 其他需求依靠插件市场其他组件灵活补充

附录:其他全端兼容ui库

插件市场,https://ext.dcloud.net.cn,有各种玲琅满目的组件、模板。

其中成套的全端兼容ui库包括:

  • uViewUI:组件丰富、文档清晰,支持nvue
  • colorUI css库:颜值很高,css库而非组件
  • unify UI:全端支持的组件库,侧重nvue
  • mypUI:全端支持的组件库,侧重nvue
  • ThorUI组件库
  • graceUI商业库
  • nPro全端nvue组件与模版库:云端一体、nvue优质商业库,https://ext.dcloud.net.cn/plugin?id=5169
  • first UI:分开源版和商业版
  • 图鸟UI:高颜值UI库
  • s-ui

参考文章:

1、关于uni-app的ui库、ui框架、ui组件:https://ask.dcloud.net.cn/article/35489

2、内置组件+uni-ui文档:https://uniapp.dcloud.net.cn/component/

3、uni-ui插件地址:https://ext.dcloud.net.cn/plugin?id=55

4、uniapp是否可以用elementUI等前端UI库、使用步骤以及需要注意的问题:https://blog.csdn.net/imqdcn/article/details/134739361

5、如何在uniapp中使用uviewUI-适合uniapp的ui组件:https://blog.csdn.net/imqdcn/article/details/134788775

6、uniapp是否可以用vant等移动端UI库、使用步骤以及需要注意的问题:https://blog.csdn.net/imqdcn/article/details/134790046

如果你在web前端开发、面试、前端学习路线有困难可以加我V:imqdcnn。免费答疑,行业深潜多年的技术牛人帮你解决bug。
另外也可接小程序、网站开发等。

祝你能成为一名优秀的WEB前端开发工程师!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/198965.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

it统一运维平台怎么样?有可以推荐的品牌吗?

随着互联网化,随着信息化的不断发展,企业IT系统的规模和复杂性也在日益增加。在这个背景下,IT统一运维平台就应用而生了。它以一种全面、集成的方式管理企业IT资源,从而提高效率、降低成本、改善服务,为企业提供更快更…

「词令」2023年12月5日支付宝蚂蚁庄园今日问题答案是什么?12.5蚂蚁庄园今日问题正确答案

问题:我国哪个城市有“四面荷花三面柳,一城山色半城湖”的美誉? 选项:A、济南 B、泉州 答案:济南 解析:一城山色:千佛山在城南,为附近最高的山,全城人都能看到它苍翠的…

Linux last命令教程:如何查看用户的登录和注销历史(附案例详解和注意事项)

Linux last命令介绍 last命令在Linux中用于显示自文件/var/log/wtmp创建以来所有用户的登录和注销列表。可以给出一个或多个用户名作为参数,以显示他们的登录(和注销)时间和主机名。 Linux last命令适用的Linux版本 last命令在大多数Linux…

Comprehension from Chaos: Towards Informed Consent for Private Computation

目录 笔记后续的研究方向摘要引言 Comprehension from Chaos: Towards Informed Consent for Private Computation CCS 2023 笔记 本文探讨了用户对私有计算的理解和期望,其中包括多方计算和私有查询执行等技术。该研究进行了 22 次半结构化访谈,以调查…

14、SQL注入——HTTP文件头注入

文章目录 一、HTTP Header概述1.1 HTTP工作原理1.2 HTTP报文类型1.3 较重要的HTTP Header内容 二、HTTP Header注入2.1 HTTP Header注入的前提条件2.2 常见的HTTP Header注入类型 一、HTTP Header概述 1.1 HTTP工作原理 1.2 HTTP报文类型 (1)请求报文 …

软件设计模式原则(五)接口隔离原则

顾名思义,该原则说的是:客户端不应该依赖它不需要的接口。一个类对另一个类的依赖应该建立在最小的接口上。 一.定义 核心思想: 使用多个专门的接口比使用单一的总接口要好。一个类对另外一个类的依赖性应当是建立在最小的接口上的。一个接口…

博客文章SEO:提升博客排名和吸引更多读者的方法来啦!

互联网发展到现在,搜索引擎优化(SEO)一直发挥着不可替代的作用。搜索引擎的流量往往更加定向,来自搜索引擎的流量转化率更高,可以帮助企业更好地实现销售和推广目标。因此,通过合理的SEO策略,你…

市场调研:中国南美白对虾养殖面积达到17.75万公顷

南美白对虾(学名:Litopenaeus Vannamei )是对虾科、滨对虾属动物。成体最长达23厘米,甲壳较薄,正常体色为青蓝色或浅青灰色,全身不具斑纹。步足常呈白垩状,故有白肢虾之称。南美白对虾额角尖端的长度不超出第1触角柄的2节&#xf…

从浅入深掌握进阶结构体(C语言)

前言 这一期我们将继续讲解结构体的知识,还没有看过上一期的小伙伴一定要赶紧去学习哦。 上一期,冲鸭! 那么话不多说我们开始今天的学习吧! 文章目录 1,结构体的自引用2,匿名结构体3,位段4,结构体的传参5,尾声 1,结构体的自引用 …

基因组注释流程

一边学习,一边总结,一边分享! 详细教程请访问: 组学分析流程 本期分析流程 Hisat2-SamtoolsTrinity_GG_denovoPASA … 本期教程文章 题目:Genomic insights into local adaptation and future climate-induced vu…

FastAPI与BaseModel

from typing import Optionalfrom fastapi import FastAPI from pydantic import BaseModel #当一个模型属性具有默认值时,它不是必需的。否则它是一个必需属性。将默认值设为 None 可使其成为可选属性 app FastAPI() class Item(BaseModel):name:str #没有初始值都…

linux 安装 Apache 服务 并部署网站

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 公众号:网络豆云计算学堂 座右铭:低头赶路,敬事如仪 个人主页: 网络豆的主页​​​​​ 写在前面 哈喽大家我是网络豆,本章将会…

数据结构—二叉树

文章目录 10.二叉树(1).二叉树的基本概念(2).遍历#1.前序遍历#2.中序遍历#3.后序遍历#4.非递归中序遍历 (3).中序前/后序建树#1.中序前序遍历建树#2.中序后序遍历建树 (4).递归和二叉树基本操作#1.求树高#2.求结点数#3.求叶子结点数#4.复制树#5.判断两棵树是否相等 (5).特殊二叉…

零信任组件和实施

零信任是一种安全标准,其功能遵循“从不信任,始终验证”的原则,并确保没有用户或设备受信任,无论他们是在组织网络内部还是外部。简而言之,零信任模型消除了信任组织安全边界内任何内容的概念,而是倡导严格…

操作系统复习总结——文件管理

🔥博客主页:真的睡不醒 🚀系列专栏:深度学习环境搭建、环境配置问题解决、自然语言处理、语音信号处理、项目开发 💘每日语录:但愿每次回忆,对生活都不感到负疚。 🎉感谢大家点赞…

搜维尔科技:AI时代,迈向2030元宇宙数字人戏曲教育数字化思维、战略与未来!

一场关于中国传统戏曲与数字媒体交汇的探讨之旅将于今日在清华大学开讲,本次活动旨在推动AI时代大背景下,利用元宇宙、数字人等创新技术焕发中国传统戏曲全新活力。 讲座以“AI时代,迈向2030元宇宙数字人戏曲教育数字化思维、战略与未来”为主…

【Linux系统编程】开发工具yum和vim

目录 一,yum工具的使用 1,yum的介绍 2,yum的使用 二,vim工具的开发 1,vim的介绍 2,模式的使用 3,vim配置文件 4,sudo配置文件 一,yum工具的使用 1,y…

弱口令防护和网站防盗链有什么用

弱口令防护主要针对用户账户的安全。弱口令是指容易被猜测或破解的密码,如常见的密码、简单的数字序列或字典中的单词等。弱口令防护的目的是防止恶意用户或攻击者通过猜测或暴力破解密码的方式获取合法用户的账户权限。通过实施强密码策略、密码复杂度要求和账户锁…

【EI会议征稿中|航空航天领域】第二届航空航天与控制工程国际学术会议(ICoACE 2023)

第二届航空航天与控制工程国际学术会议(ICoACE 2023) 2023 2nd International Conference on Aerospace and Control Engineering 2023年第二届航空航天与控制工程国际学术会议(ICoACE 2023)将于2023年12月15-17日在江苏南京召开…

Selenium+Unittest+HTMLTestRunner框架更改为Selenium+Pytest+Allure(一)

背景:之前的框架,Selenium是3.x版本,现在更新到4.15版本后,一些写法如find_element_by_xxx 不再支持,改为find_element(By.xxx)的方式,同时由于Unittest不如Pytest在执行方面灵活(比如只执行冒烟…