vue3使用uView与uv-ui的详细步骤

 更新时间:2026年03月11日 09:58:59   作者:我就不思  
文章介绍了如何在Vue3项目的uni-app中集成和使用uViewPlus和uv-ui两个UI组件库,详细描述了环境准备、安装组件库、全局配置、组件使用、自定义主题以及常见问题解决等步骤,感兴趣的朋友跟随小编一起看看吧

摘要:

文档只有vue2的语法,并且uView与uv-ui虽然类似,但是还是两个东西的!

vue3使用uView

在 Vue3 中使用 uView 是非常常见的需求,uView 是基于 uni-app 生态的 UI 组件库,专门为移动端开发设计,Vue3 版本对应的是 uView Plus(uView 2.x),下面我会一步步教你完整的集成和使用流程。

一、环境准备

确保你的项目满足以下条件:
uni-app 项目(基于 Vue3 + Vite 或 Vue3 + Webpack)
Node.js 版本 ≥ 14.0.0
已安装 HBuilderX 或使用 CLI 方式开发

二、安装 uView Plus

方式 1:npm 安装(推荐)
在项目根目录执行以下命令:

# 安装 uView Plus
npm install uview-plus
# 如果是 Vue3 + TS 项目,还需安装类型声明
npm install -D @types/uview-plus

方式 2:手动下载
uView 官网 下载源码,将 uview-plus 文件夹复制到项目的 components 目录下。

三、全局配置(关键步骤)

  1. 引入 uView Plus 主库
    在项目的 main.js(或 main.ts)中添加以下代码:
import { createSSRApp } from 'vue'
import uviewPlus from 'uview-plus'
export function createApp() {
  const app = createSSRApp(App)
  // 全局注册 uView Plus
  app.use(uviewPlus)
  return {
    app
  }
}
  1. 引入全局样式
    在项目的 App.vue 中,在
<style lang="scss">
/* 引入 uView Plus 全局样式 */
@import "uview-plus/index.scss";
/* 你的自定义样式 */
page {
  background-color: #f5f5f5;
}
</style>
  1. 配置全局 SCSS 变量(可选但推荐)
    在 uni.scss 文件中引入 uView 的全局变量,方便自定义主题:
/* 引入 uView Plus 全局变量 */
@import "uview-plus/theme.scss";
  1. Vite 配置(如果是 Vite 项目)
    如果你的项目是 Vue3 + Vite 架构,需要在 vite.config.js 中添加别名配置,避免路径报错:
import { defineConfig } from 'vite'
import uni from '@dcloudio/vite-plugin-uni'
import path from 'path'
export default defineConfig({
  plugins: [uni()],
  resolve: {
    alias: {
      // 配置 uView Plus 路径别名
      'uview-plus': path.resolve(__dirname, 'node_modules/uview-plus')
    }
  }
})

四、使用 uView 组件

配置完成后,就可以在任意页面 / 组件中直接使用 uView 的组件,无需额外注册。
示例:使用按钮和表单组件

<template>
  <view class="container">
    <!-- uView 按钮组件 -->
    <u-button type="primary" @click="handleClick">主要按钮</u-button>
    <u-button type="warning" size="mini">小型警告按钮</u-button>
    <!-- uView 输入框组件 -->
    <u-input 
      v-model="inputValue" 
      placeholder="请输入内容" 
      border="surround"
      clearable
    ></u-input>
    <!-- uView 弹窗组件 -->
    <u-modal 
      v-model="showModal" 
      title="提示" 
      content="这是 uView 的弹窗组件"
      confirm-text="确定"
      cancel-text="取消"
    ></u-modal>
  </view>
</template>
<script setup>
import { ref } from 'vue'
// 响应式数据
const inputValue = ref('')
const showModal = ref(false)
// 按钮点击事件
const handleClick = () => {
  showModal.value = true
}
</script>
<style scoped>
.container {
  padding: 20rpx;
}
</style>

五、自定义主题(可选)

uView 支持通过覆盖 SCSS 变量来修改主题,例如修改主色调:
在 uni.scss 中添加:

/* 覆盖 uView 主色调 */
$u-primary: #007aff;
/* 覆盖警告色 */
$u-warning: #ff9500;
/* 覆盖边框颜色 */
$u-border-color: #e5e5e5;

六、常见问题解决

1.样式不生效:

检查 App.vue 中的 < style > 是否添加了 lang=“scss”;
确保已安装 sass 和 sass-loader:npm install sass sass-loader@10 -D。

2.组件找不到:

检查 main.js 中是否正确注册 app.use(uviewPlus);
Vite 项目需确认 vite.config.js 中的别名配置是否正确。

3.Vue3 + TS 报错:

安装 @types/uview-plus,并在 tsconfig.json 中添加类型引入:

{
  "types": ["uview-plus"]
}

总结
1.Vue3 中使用 uView 需安装 uView Plus(uView 2.x),而非 uView 1.x(仅支持 Vue2);
2.核心步骤:npm 安装 → main.js 全局注册 → App.vue 引入样式 → 直接使用组件;
3.注意 Vite 项目需配置路径别名,SCSS 环境需安装对应的依赖包。

通过以上步骤,你就能在 Vue3 版的 uni-app 项目中无缝使用 uView 的所有组件,快速搭建移动端界面。如果需要使用某个具体组件,可以参考 uView Plus 官方文档 查看详细属性和用法。

vue3使用uv-ui

uv-ui 是专门适配 uni-app + Vue3 的轻量级移动端 UI 组件库(可看作 uView 的 Vue3 替代方案),相比 uView Plus 更轻量化、适配性更好。下面我会带你完成 Vue3 + uni-app 中 uv-ui 的完整集成和使用流程,步骤清晰且可直接落地。

一、环境要求

uni-app 项目(Vue3 + Vite / Vue3 + Webpack)
Node.js ≥ 14.0.0
已安装 sass(uv-ui 基于 SCSS 开发)

二、安装 uv-ui

方式 1:npm 安装(推荐)
在项目根目录执行命令:

# 安装 uv-ui 核心包
npm install uv-ui

# 安装 SCSS 依赖(若未安装)
npm install sass sass-loader@10 -D

方式 2:手动安装
uv-ui 官网 下载源码,将 uv-ui 文件夹复制到项目 components 目录下。

三、全局配置(关键步骤)

  1. 全局注册组件(main.js/main.ts)
    在项目入口文件中注册 uv-ui,支持完整引入或按需引入(推荐按需引入减小体积)。
    方式 A:完整引入(简单快捷)
import { createSSRApp } from 'vue'
import App from './App.vue'
// 引入 uv-ui 核心库
import uvUi from 'uv-ui'
// 引入 uv-ui 全局样式
import 'uv-ui/style/index.scss'
export function createApp() {
  const app = createSSRApp(App)
  // 全局注册 uv-ui
  app.use(uvUi)
  return {
    app
  }
}

方式 B:按需引入(推荐,减小打包体积)

import { createSSRApp } from 'vue'
import App from './App.vue'
// 只引入需要的组件(示例:按钮、输入框)
import { uvButton, uvInput } from 'uv-ui'
// 引入对应组件样式
import 'uv-ui/style/uv-button.scss'
import 'uv-ui/style/uv-input.scss'
export function createApp() {
  const app = createSSRApp(App)
  // 注册单个组件
  app.component('uv-button', uvButton)
  app.component('uv-input', uvInput)
  return {
    app
  }
}
  1. 配置全局样式(App.vue)
    在 App.vue 的 < style > 标签中引入 uv-ui 全局样式(若用完整引入,此步骤可省略,已在 main.js 引入):
<style lang="scss">
/* 若按需引入,需手动引入基础样式 */
@import "uv-ui/style/base.scss";
/* 自定义全局样式 */
page {
  background-color: #f8f8f8;
  font-size: 28rpx;
}
</style>`在这里插入代码片`
  1. Vite 路径配置(Vite 项目必加)
    如果是 Vue3 + Vite 架构,需在 vite.config.js 中配置别名,避免路径报错:
import { defineConfig } from 'vite'
import uni from '@dcloudio/vite-plugin-uni'
import path from 'path'
export default defineConfig({
  plugins: [uni()],
  resolve: {
    alias: {
      // 配置 uv-ui 路径别名
      'uv-ui': path.resolve(__dirname, 'node_modules/uv-ui')
    }
  }
})

四、使用 uv-ui 组件(示例)

配置完成后,可在任意页面 / 组件中直接使用 uv-ui 组件,以下是常用组件的使用示例

<template>
  <view class="container">
    <!-- 1. 按钮组件 -->
    <uv-button 
      type="primary" 
      size="normal" 
      @click="openToast"
      icon="search"
    >
      主要按钮
    </uv-button>
    <uv-button type="danger" plain>镂空危险按钮</uv-button>
    <!-- 2. 输入框组件 -->
    <uv-input 
      v-model="inputValue" 
      placeholder="请输入内容" 
      clearable 
      border="bottom"
      @change="handleInputChange"
    ></uv-input>
    <!-- 3. 提示框组件 -->
    <uv-toast ref="toastRef" />
    <!-- 4. 弹窗组件 -->
    <uv-popup 
      v-model="showPopup" 
      position="center"
      title="提示"
    >
      <view class="popup-content">
        <text>这是 uv-ui 的弹窗内容</text>
        <uv-button type="primary" @click="showPopup = false">确定</uv-button>
      </view>
    </uv-popup>
  </view>
</template>
<script setup>
import { ref, getCurrentInstance } from 'vue'
// 响应式数据
const inputValue = ref('')
const showPopup = ref(false)
// 获取 toast 实例
const toastRef = ref(null)
const { proxy } = getCurrentInstance()
// 按钮点击:显示提示框
const openToast = () => {
  proxy.$uv.toast({
    title: '操作成功',
    type: 'success',
    duration: 2000
  })
  // 也可通过 ref 调用
  // toastRef.value.show({ title: '操作成功' })
}
// 输入框变化事件
const handleInputChange = (val) => {
  console.log('输入内容:', val)
}
</script>
<style scoped lang="scss">
.container {
  padding: 20rpx;
  gap: 20rpx;
  display: flex;
  flex-direction: column;
}
.popup-content {
  padding: 30rpx;
  text-align: center;
  gap: 20rpx;
  display: flex;
  flex-direction: column;
}
</style>

五、自定义主题(可选)

uv-ui 支持通过覆盖 SCSS 变量修改主题,步骤如下:
1.在项目根目录创建 styles/uv-variables.scss 文件;
2.写入需要覆盖的变量(参考 uv-ui 官方默认变量):

// 覆盖主色调
$uv-primary-color: #007aff;
// 覆盖危险色
$uv-danger-color: #ff3b30;
// 覆盖边框颜色
$uv-border-color: #e5e5e5;
// 覆盖字体主色
$uv-text-color: #333333;

3.在 App.vue 中先引入自定义变量,再引入 uv-ui 样式:

<style lang="scss">
@import "./styles/uv-variables.scss";
@import "uv-ui/style/index.scss"; // 完整引入时用
// @import "uv-ui/style/base.scss"; // 按需引入时用
</style>

六、常见问题解决

1.样式失效 / 组件不显示:
检查是否安装 sass 依赖(npm install sass sass-loader@10 -D);
确认 < style > 标签添加了 lang=“scss”;
Vite 项目需检查别名配置是否正确。

  1. u v 全局方法未定义:确保在 m a i n . j s 中执行了 a p p . u s e ( u v U i ) ;按需引入时需单独注册全局方法: i m p o r t u v T o a s t f r o m ′ u v − u i ′ ; a p p . c o n f i g . g l o b a l P r o p e r t i e s . uv 全局方法未定义: 确保在 main.js 中执行了 app.use(uvUi); 按需引入时需单独注册全局方法:import { uvToast } from 'uv-ui'; app.config.globalProperties. uv全局方法未定义:确保在main.js中执行了app.use(uvUi);按需引入时需单独注册全局方法:importuvToastfromuvui;app.config.globalProperties.uv = { toast: uvToast }。
    3.Vue3 + TS 类型报错:
    在 src 目录下创建 shims-uv-ui.d.ts:
declare module 'uv-ui' {
  const uvUi: any;
  export default uvUi;
  export const uvButton: any;
  export const uvInput: any;
}

总结
uv-ui 是 Vue3 + uni-app 轻量化 UI 库,安装后需在 main.js 全局注册(支持完整 / 按需引入);
Vite 项目必须配置路径别名,且需确保 SCSS 环境依赖安装完成;
使用时可直接调用组件,全局方法(如 $uv.toast)需确保全局注册成功,支持自定义主题覆盖变量。
如果需要使用具体组件(如表单、列表、导航栏等),可参考 uv-ui 官方文档 查看详细属性和用法。

到此这篇关于vue3使用uView与uv-ui的详细步骤的文章就介绍到这了,更多相关vue 使用uView与uv-ui内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • element-ui 关于获取select 的label值方法

    element-ui 关于获取select 的label值方法

    今天小编就为大家分享一篇element-ui 关于获取select 的label值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • 一次用vue3简单封装table组件的实战过程

    一次用vue3简单封装table组件的实战过程

    之所以封装全局组件是为了省事,所有的目的,全都是为了偷懒,下面这篇文章主要给大家介绍了关于用vue3简单封装table组件的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • 关于vue data中的this指向问题

    关于vue data中的this指向问题

    这篇文章主要介绍了关于vue data中的this指向问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • dataV大屏在vue中的使用方式

    dataV大屏在vue中的使用方式

    这篇文章主要介绍了dataV大屏在vue中的使用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • vue-admin-template模板添加tagsview的实现

    vue-admin-template模板添加tagsview的实现

    本文主要介绍了vue-admin-template模板添加tagsview的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • vite+vue3+ts项目新建以及解决遇到的问题

    vite+vue3+ts项目新建以及解决遇到的问题

    vite是一个基于Vue3单文件组件的非打包开发服务器,它具有快速的冷启动,不需要等待打包操作,下面这篇文章主要给大家介绍了关于vite+vue3+ts项目新建以及解决遇到的问题的相关资料,需要的朋友可以参考下
    2023-06-06
  • vue.js使用3DES加密的方法示例

    vue.js使用3DES加密的方法示例

    这篇文章主要介绍了vue.js使用3DES加密的方法,结合实例形式分析了vue.js使用3DES加密的具体操作步骤与使用技巧,并提供了CryptoJS-v3.1.2的本地下载,需要的朋友可以参考下
    2018-05-05
  • vue如何修改data中的obj数据的属性

    vue如何修改data中的obj数据的属性

    这篇文章主要介绍了vue如何修改data中的obj数据的属性,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • 关于keep-alive路由多级嵌套不生效的解决方案

    关于keep-alive路由多级嵌套不生效的解决方案

    本文主要介绍了关于keep-alive路由多级嵌套不生效的解决方案,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • vue项目中怎样嵌入其它项目的页面

    vue项目中怎样嵌入其它项目的页面

    这篇文章主要介绍了vue项目中怎样嵌入其它项目的页面问题,具有很好 的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10

最新评论