uvx-ui 上手指南:面向 uni-app x 的原生渲染跨端 UI 组件库(一套代码跑通 Android/iOS/鸿蒙/微信小程序)
用 uni-app x 写跨端应用,框架实现了「一套代码 + 原生性能」,但组件生态一直是块短板:表单、弹层、导航、骨架屏这些轮子,每个项目都自己造一遍并不现实。最近在技术选型时整理了一下 uni-app x 生态里的组件库,把 uvx-ui 的调研笔记记录下来,主要包括它是什么、设计上的几个特点,以及接入的实际体验。
uvx-ui 是什么
一套用 UTS + UVue 编写、专门面向 uni-app x 的跨端 UI 组件库:App 端编译为原生界面、不走 WebView,同一套组件代码跑在 Android、iOS、HarmonyOS、Web、微信小程序五端。
它的前身是 uv-ui,但不是把 Vue 组件直接搬过来,而是按 uni-app x 的强类型和原生渲染重新实现了一遍。所以两者是并存关系:老 uni-app 项目继续用 uv-ui,新 uni-app x 项目才需要 uvx-ui。
几个设计特点
从源码和文档看,这套库的几个设计特点对工程化比较友好:
- 原生渲染:App 端不依赖 WebView,保留 uni-app x 的原生渲染能力,这也是 uni-app x 的核心价值;
- UTS 强类型:属性、事件、方法全类型化,借助编译期能提前暴露问题;
- 组件数量:源码 98 个组件,覆盖基础、表单、数据、反馈、布局、导航六类;
- 主题方案:亮暗双主题自动跟随系统,通过 CSS 变量做品牌色定制;
- 国际化:内置中文 / 繁体中文 / 英文语言包,业务侧可覆盖同名词条;
- easycom:按规范配置映射后模板里直接使用,不需要逐个导入注册。
接入体验
从 DCloud 插件市场导入插件后,唯一必须手写的配置是 pages.json 里的一段 easycom 映射:
{
"easycom": {
"autoscan": true,
"custom": {
"^uvx-(.*)": "@/uni_modules/uvx-ui/components/uvx-$1/uvx-$1.uvue"
}
}
}
之后组件就能直接写进模板:
<uvx-page>
<uvx-text type="main" text="第一个 uvx-ui 页面" :size="20" />
<uvx-button type="primary" text="点击验证" @click="handleClick" />
</uvx-page>
有个细节值得注意:uvx-page 是它推荐的页面根容器,App 端内部用 scroll-view 解决了非 Vapor 模式下页面不可滚动的问题,根节点还会自动挂载亮暗主题作用域。用原生渲染开发过 App 的同学应该明白这类封装的价值——这类平台差异如果没有组件库兜底,每个页面都要自己处理一遍。
组件覆盖情况
| 分类 | 代表组件 |
|---|---|
| 基础 | 按钮、图标、图片、布局、文本、动画 |
| 表单 | 日历、表单、输入框、选择器、评分、搜索、上传等 |
| 数据 | 头像、徽标数、进度条、二维码、骨架屏、列表等 |
| 反馈 | 模态框、消息提示、弹出层、滚动通知、遮罩层 |
| 布局 | 单元格、折叠面板、宫格、轮播图、瀑布流 |
| 导航 | 导航栏、底部导航栏、标签页、步骤条、吸顶 |
每个组件的属性、事件、插槽和平台兼容性差异不小,选型时建议按自己项目的组件清单逐个核对文档。
总结
整体来看,uvx-ui 适合这几类场景:已经确定 uni-app x 技术栈、需要覆盖鸿蒙或微信小程序、团队希望组件有强类型约束的项目。它目前是 1.0.0 版本,迭代比较活跃,组件的兼容性细节以官方文档为准(相关文档:www.uvxui.cn),源码在 Git 上以 MIT 协议开源,遇到问题可以提 issue 交流。
本文是选型调研笔记,如果有正在用 uni-app x 的同学,欢迎评论区聊聊你们的组件库选择。
更多推荐



所有评论(0)