uniapp vue3 + Uview-push 安装使用

一 , 版本支持   

               Uview 支持vue2    

               Uview - push  支持 vue3

二 , 安装方法

1,首先在uniapp 创建一个基础页面 , 不需要做任何配置(vue3的)

2,找到    uview-plus3.0重磅发布,全面的Vue3移动组件库。 - DCloud 插件市场Uview - push 的官网   点击使用插件安装  并选择  自己刚刚创建的项目

      uview-plus3.0重磅发布,全面的Vue3移动组件库。 - DCloud 插件市场

 

 3,开始各种安装插件 

(1)先看看自己的项目有没有  

package.json文件    没有的话  

在终端执行 
     npm init -y                       安装 package.json 
     npm install uview-plus            安装 Uview - push
     npm update uview-plus             更新 Uview - push


然后安装 scss
    // 安装sass
    npm i sass -D

    // 安装sass-loader,注意需要版本10,否则可能会导致vue与sass的兼容问题而报错
    npm i sass-loader@10 -D


安装其他的 配置项

      // 如果您的项目是HX创建的,根目录又没有package.json文件的话,请先执行如下命令:
      // npm init -y

      // 安装
      npm install uview-plus
      npm install dayjs
      npm install clipboard

4, 开始在各种配置项

App.vue

<script>
	export default {
		onLaunch: function() {
			console.log('App Launch')
		},
		onShow: function() {
			console.log('App Show')
		},
		onHide: function() {
			console.log('App Hide')
		}
	}
</script>
<style lang="scss">
	/* 注意要写在第一行,同时给style标签加入lang="scss"属性 */
	@import "@/uni_modules/uview-plus/index.scss";
</style>

main.js

import App from './App'

// #ifndef VUE3
import Vue from 'vue'
Vue.config.productionTip = false
App.mpType = 'app'


// main.js
import uviewPlus from 'uview-plus'

// #ifdef VUE3
import { createSSRApp } from 'vue'
export function createApp() {
  const app = createSSRApp(App)
  app.use(uviewPlus)
  return {
    app
  }
}
// #endif

try {
  function isPromise(obj) {
    return (
      !!obj &&
      (typeof obj === "object" || typeof obj === "function") &&
      typeof obj.then === "function"
    );
  }

  // 统一 vue2 API Promise 化返回格式与 vue3 保持一致
  uni.addInterceptor({
    returnValue(res) {
      if (!isPromise(res)) {
        return res;
      }
      return new Promise((resolve, reject) => {
        res.then((res) => {
          if (res[0]) {
            reject(res[0]);
          } else {
            resolve(res[1]);
          }
        });
      });
    },
  });
} catch (error) { }

const app = new Vue({
  ...App
})
app.$mount()
// #endif

// #ifdef VUE3
import { createSSRApp } from 'vue'
export function createApp() {
  const app = createSSRApp(App)
  return {
    app
  }
}
// #endif

pages,json

{
	"easycom": {
			// 注意一定要放在custom里,否则无效,https://ask.dcloud.net.cn/question/131175
			"custom": {  
		        "^u-(.*)": "uview-plus/components/u-$1/u-$1.vue" 
			}
		},
	
	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
		{
			"path": "pages/index/index",
			"style": {
				"navigationBarTitleText": "uni-app"
			}
		}
	],
	"globalStyle": {
		"navigationBarTextStyle": "black",
		"navigationBarTitleText": "uni-app",
		"navigationBarBackgroundColor": "#F8F8F8",
		"backgroundColor": "#F8F8F8"
	},
	"uniIdRouter": {}
}

uni.scss


// /* 行为相关颜色 */
$uni-color-primary: #007aff;
$uni-color-success: #4cd964;
$uni-color-warning: #f0ad4e;
$uni-color-error: #dd524d;

/* 文字基本颜色 */
$uni-text-color:#333;//基本色
$uni-text-color-inverse:#fff;//反色
$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
$uni-text-color-placeholder: #808080;
$uni-text-color-disable:#c0c0c0;

/* 背景颜色 */
$uni-bg-color:#ffffff;
$uni-bg-color-grey:#f8f8f8;
$uni-bg-color-hover:#f1f1f1;//点击状态颜色
$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色

/* 边框颜色 */
$uni-border-color:#c8c7cc;

/* 尺寸变量 */

/* 文字尺寸 */
$uni-font-size-sm:12px;
$uni-font-size-base:14px;
$uni-font-size-lg:16;

/* 图片尺寸 */
$uni-img-size-sm:20px;
$uni-img-size-base:26px;
$uni-img-size-lg:40px;

/* Border Radius */
$uni-border-radius-sm: 2px;
$uni-border-radius-base: 3px;
$uni-border-radius-lg: 6px;
$uni-border-radius-circle: 50%;

/* 水平间距 */
$uni-spacing-row-sm: 5px;
$uni-spacing-row-base: 10px;
$uni-spacing-row-lg: 15px;

/* 垂直间距 */
$uni-spacing-col-sm: 4px;
$uni-spacing-col-base: 8px;
$uni-spacing-col-lg: 12px;

/* 透明度 */
$uni-opacity-disabled: 0.3; // 组件禁用态的透明度

/* 文章场景相关 */
$uni-color-title: #2C405A; // 文章标题颜色
$uni-font-size-title:20px;
$uni-color-subtitle: #555555; // 二级标题颜色
$uni-font-size-subtitle:26px;
$uni-color-paragraph: #3F536E; // 文章段落颜色
$uni-font-size-paragraph:15px;
@import '@/uni_modules/uview-plus/theme.scss';

没有   vite.config.js  这个文件的话  创建一个  在里边写入一些配置项

import { defineConfig } from "vite";
import uni from "@dcloudio/vite-plugin-uni";
// import commonjs from '@rollup/plugin-commonjs'

/**
 * @type {import('vite').UserConfig}
 */

export default defineConfig({
  build: {
    sourcemap: false, // App,小程序端源码调试,需要在 vite.config.js 中主动开启 sourcemap
	rollupOptions: {
	}
  },

  plugins: [
	// commonjs(),
	uni()
  ],
});

pages /   index.vue 测试练习 

<template>
	<view style="padding: 20px;">
		<u-button type="primary" text="确定"></u-button>
		<u-button type="primary" :plain="true" text="镂空"></u-button>
		<u-button type="primary" :plain="true" :hairline="true" text="细边"></u-button>
		<u-button type="primary" :disabled="disabled" text="禁用"></u-button>
		<u-button type="primary" loading loadingText="加载中"></u-button>
		<u-button type="primary" icon="map" text="图标按钮"></u-button>
		<u-button type="primary" shape="circle" text="按钮形状"></u-button>
		<u-button text="渐变色按钮" color="linear-gradient(to right, rgb(66, 83, 216), rgb(213, 51, 186))"></u-button>
		<u-button type="primary" size="small" text="大小尺寸"></u-button>
	</view>
</template>

<script>
export default {
	data() {
		return {
			disabled: true
		};
	}
};
</script>

 图片演示  

<think>嗯,用户问的是如何在UniApp Vue3项目中集成和使用UView-Plus组件库。首先,我需要回忆一下相关的步骤。根据之前的引用资料,安装和配置可能涉及几个关键步骤,比如安装依赖、引入JS库、配置SCSS主题,还有可能的TypeScript支持问题。 首先,用户可能已经按照官方文档进行了安装,但有时候会遇到问题,比如TS报错,引用[4]提到过这种情况,需要声明模块或者在vite-env.d.ts中添加声明。然后,引入JS库的步骤在main.js中,根据引用[3],要在createSSRApp之后使用app.use(uviewPlus)。另外,全局SCSS文件的引入也很重要,否则样式不生效。 接下来,用户可能需要配置easycom来自动引入组件,这样就不用在每个页面单独引入了。引用[3]和[4]都提到了这点,修改pages.json的easycom节点。但有时候用户可能忘记这一步,导致组件无法正常使用。 还有,TypeScript支持的问题,如果用户使用TS,可能需要处理类型声明的问题,比如在vite-env.d.ts中添加declare module,如引用[4]所示,否则会提示找不到模块的声明文件。 另外,用户可能在运行的时候遇到问题,比如图标不显示,这时候需要检查是否引入了图标库,可能需要将uview-plus的图标文件复制到项目的静态资源目录,如引用[3]提到的static目录,并在main.js中引入。 测试的时候,用户可能不知道如何验证是否配置成功,可以建议他们添加一个简单的组件如<u-button>来测试,如果显示正常,说明配置正确。 最后,常见的问题可能包括TS报错、样式不生效、组件未注册等,需要逐一检查安装步骤是否正确,依赖是否安装,配置文件是否修改正确,以及静态资源是否正确引入。 总的来说,步骤大概分为安装依赖、配置main.js、处理SCSS、配置easycom、处理TS声明、引入图标库,最后测试验证。需要确保每一步都正确,否则可能导致组件无法使用。用户可能遇到的问题可能集中在TS声明和easycom配置上,需要重点强调这些部分。</think>### 在UniApp Vue3中集成与使用UView-Plus组件库的步骤 #### 一、安装依赖 1. **通过npm安装** 在项目根目录执行命令: ```bash npm install uview-plus ``` 这是基础组件库安装步骤,确保网络通畅且package.json中已正确添加依赖[^2][^3]。 #### 二、配置main.js 1. **引入JS库** 在`src/main.js`中添加以下代码(**必须放在Vue实例创建后**): ```javascript import { createSSRApp } from &#39;vue&#39; import uviewPlus from &#39;uview-plus&#39; export function createApp() { const app = createSSRApp(App) app.use(uviewPlus) // 关键注册语句 return { app } } ``` 此处实现全局组件注册,避免重复导入[^3][^4]。 #### 三、配置SCSS主题文件 1. **引入全局样式** 在`src/uni.scss`文件顶部添加: ```scss @import &#39;uview-plus/theme.scss&#39;; ``` 确保所有组件样式生效,若未配置会导致UI显示异常。 #### 四、配置easycom自动导入 1. **修改pages.json** 在项目根目录`pages.json`中添加: ```json { "easycom": { "autoscan": true, "custom": { "^u-(.*)": "uview-plus/components/u-$1/u-$1.vue" } } } ``` 实现组件自动按需引入,无需手动导入。 #### 五、TypeScript支持 1. **声明模块类型** 在`src/env.d.ts`或`vite-env.d.ts`中添加: ```typescript declare module &#39;uview-plus&#39; ``` 解决TS项目中"找不到模块声明"的报错问题。 #### 六、图标库引入(可选) 1. **复制图标文件** 将`node_modules/uview-plus/libs/iconfont`目录复制到项目`static/`目录下。 在`App.vue`的`<script>`中添加: ```javascript import &#39;@/static/iconfont/iconfont.css&#39; ``` 确保图标组件正常显示。 #### 七、验证配置 1. **测试组件使用** 在任何页面添加: ```html <u-button type="primary">测试按钮</u-button> ``` 若显示蓝色按钮,则说明集成成功。 ### 常见问题排查 | 问题现象 | 解决方法 | |------------------------|------------------------------------------------------------------------| | TS类型报错 | 检查`env.d.ts`是否添加声明,重启IDE | | 组件样式丢失 | 确认`uni.scss`已引入主题文件,且npm包完整安装 | | 控制台提示未注册组件 | 检查`main.js`注册代码是否位于Vue实例创建后,easycom配置格式是否正确 | | 图标不显示 | 验证图标文件是否复制到static目录,CSS引入路径是否正确 | ###
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值