vue3+uniapp+TS+Vite+uView-plus(uniapp-nutui)微信小程序模板搭建

2023-10-31

官网下载目录结构:DCloud/uni-preset-vue - 码云 - 开源中国 (gitee.com)

 下载zip压缩包即可

目录

一.依赖下载

二.运行

三.vite.config.json文件修改

四.uView-plus组件库加载

 1.安装依赖

2.main.ts引入

3.uni.scss中引入

 4.App.vue中首行的位置引入

 5.pages.json配置

6.修改

 7.测试样式

五.pinia 引入到项目

1.下载依赖(最好根据我的版本来,目前我走完流程是没有报错的)

2.main.ts 引入

 3.src目录下创建stores文件夹

4.测试 使用


一.依赖下载

之后解压,在vscode打开,如图,主体结构 

 通过 npm 命令下载依赖:npm i

我使用的Node版本 16.14.0

 下载完成之后,会多出来一个node_modules文件夹,不用理会

二.运行

此时,我们可以打开package.json文件查看运行命令

由于,我们是使用Hbuilder运行微信小程序,所以,找到如图:

 在vsCode的控制台 输入: npm run dev:mp-weixin

 此时,代表我们已经将项目打包编译,并且运行起来了

目录里 ,会生成一个dist文件夹,根据上面提示,可以选择直接在微信开发者工具打开,也可以选择把项目加入到Hbuilder里去运行,然后,我们只需要在VS Code里进行代码编写,微信开发工具就会实时更新

 在Hbuilder里,如图运行

 运行成功,会自动打开微信开发者工具,在里面选择信任并且运行即可

 成功运行

三.vite.config.json文件修改

我们将路径做一个转换,把src当作根目录,用@符号代替,以后进行路径引入时方便些

/* vite.config.json文件 */

import { defineConfig } from "vite";

import { resolve } from 'path';

import uni from "@dcloudio/vite-plugin-uni";

const pathResolve = (dir: string): any => {

  return resolve(__dirname, '.', dir);

};

const alias: Record<string, string> = {

  '@/': pathResolve('./src/')

};

// https://vitejs.dev/config/

export default defineConfig({

  plugins: [uni()],

  resolve: { alias }

});

四.uView-plus组件库加载

提示,如果使用了最新的 vue3+TS+vite+uniapp+脚手架搭建的项目,在安装完这个组件库后,一定要把这个组件库里的 的一些复杂组件在测试页面测试一下能否正常显示,个人使用时会报很多错,所以改用了下面这个组件库,uniapp-nutui

此时,我们可能需要更改一下vue版本,不然后续安装依赖会出现问题

我目前时使用的3.3.0,命令:npm install vue@3.3.0

 uview-plus官网:安装 | uview-plus 3.0 - 全面兼容nvue的uni-app生态框架 - uni-app UI框架 (uiadmin.net)

 1.安装依赖

 先下载组件库:npm install uview-plus

npm install dayjs

npm install clipboard

// 安装sass
npm i sass -D

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

 下面进行相关配置

2.main.ts引入

找到 main.ts文件,修改如下:

import uviewPlus from 'uview-plus';

app.use(uviewPlus);

3.uni.scss中引入

在项目根目录的uni.scss中引入此文件

/* uni.scss */

@import 'uview-plus/theme.scss';

 4.App.vue首行的位置引入

代码:

<style lang="scss">

  /* 注意要写在第一行,同时给style标签加入lang="scss"属性 */

  @import "uview-plus/index.scss";

</style>

 

 5.pages.json配置

代码:

"easycom": {

    // 注意一定要放在custom里,否则无效,https://ask.dcloud.net.cn/question/131175

    "custom": {

      "^u--(.*)": "uview-plus/components/u-$1/u-$1.vue",

      "^up-(.*)": "uview-plus/components/u-$1/u-$1.vue",

          "^u-([^-].*)": "uview-plus/components/u-$1/u-$1.vue"

    }

  },

6.修改env.d.ts文件

此时,在 main.ts文件中,引入可能会飘红报错,我们需要到 env.d.ts文件加入如下代码

declare module "uview-plus";

7.微信开发者工具配置

我们需要关闭过滤无依赖文件:在微信开发者工具里,找到project.config.json 中 settings 选项添加

“ignoreDevUnusedFiles”: false ,

“ignoreUploadUnusedFiles”: false

 8.测试样式

VS Code 命令行:npm run dev:mp-weixin  

 如图

再到  Hbuilder 运行微信小程序,最后自动打开微信开发平台样式如下:

到此,uView-plus组件库引入完成

四-拓展.uniapp-nutui  组件库配置

 uniapp-nutui  快捷访问网站:快速开始 | UniAPP-NutUi

如果使用过程中,uview-plus经常报一些错,不好解决,那可以换成这个组件库

先使用命令:npm uninstall uview-plus

uview-plus卸载就把上面过程反过来即可

1.安装一些依赖

先通过 npm 导入uniapp-nutui 
npm install uniapp-nutui

再直接把下面的代码粘贴到 package.json文件,

这两个在 dependencies 里
"node-sass": "^9.0.0",
"style-loader": "^3.3.3",

这个在 devDependencies 里
"@uni-helper/vite-plugin-uni-components": "^0.0.6",


注意,如果有"sass-loader": "^13.3.2",版本比这个高,最好切换一下,不然
会报错node-sass和sass-loader版本不对

然后 npm i 即可

如图位置:

 

 

 

2.vite.config.ts配置

文件内容如下:

import { defineConfig } from 'vite'
import { resolve } from 'path'
import uni from '@dcloudio/vite-plugin-uni'
import Components from '@uni-helper/vite-plugin-uni-components'
import { NutResolver } from 'uniapp-nutui'
const pathResolve = (dir: string): any => {
  return resolve(__dirname, '.', dir)
}
const alias: Record<string, string> = {
  '@/': pathResolve('./src/')
}

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    Components({
      resolvers: [NutResolver()],
    }),
    uni()
  ],
  resolve: { alias },
  css: {
    preprocessorOptions: {
      scss: {
        additionalData: '@import "uniapp-nutui/styles/variables.scss";',
      },
    },
  }
})

3.app.vue配置

@import 'uniapp-nutui/styles/index';

 如图:

 

4. pages.json配置

"easycom": {
		"autoscan": true,
		"custom": {
			"^nut-(.*)?-(.*)": "uniapp-nutui/components/$1$2/$1$2.vue",
			"^nut-(.*)": "uniapp-nutui/components/$1/$1.vue"
		}
	},

 如图:

 

5.添加 components.d.ts文件

文件内容如下:

/* eslint-disable */
/* prettier-ignore */
// @ts-nocheck
// Generated by vite-plugin-uni-components
// Read more: https://github.com/vuejs/core/pull/3399
import '@vue/runtime-core'

export {}

declare module '@vue/runtime-core' {
  export interface GlobalComponents {
    NutButton: typeof import('uniapp-nutui/components/button/button.vue')['default']
    NutCell: typeof import('uniapp-nutui/components/cell/cell.vue')['default']
    NutConfigProvider: typeof import('uniapp-nutui/components/configprovider/configprovider.vue')['default']
    NutForm: typeof import('uniapp-nutui/components/form/form.vue')['default']
    NutFormItem: typeof import('uniapp-nutui/components/formitem/formitem.vue')['default']
    NutInput: typeof import('uniapp-nutui/components/input/input.vue')['default']
    NutSwitch: typeof import('uniapp-nutui/components/switch/switch.vue')['default']
    NutTextarea: typeof import('uniapp-nutui/components/textarea/textarea.vue')['default']
  }
}

 6.测试运行

然后到: Cell 单元格 | UniAPP-NutUi

 粘贴几个组件到项目里测试,效果如下

这个具体样式可以自行编写

 

五.pinia 引入到项目

1.下载依赖(最好根据我的版本来,目前我走完流程是没有报错的)

npm install pinia@2.0.36 

2.main.ts 引入

代码:

import pinia from '@/stores/index';

app.use(pinia)

 最后 main.ts文件如图

 3.src目录下创建stores文件夹

添加文件 index.ts

import { createPinia } from 'pinia';

// 创建

const pinia = createPinia();

// 导出

export default pinia;

添加文件store.ts

import { defineStore } from 'pinia';

// 示例 TS 类型定义

interface UserInfo {

  ID: string;

  Name: string; 

}

export const UseStore= defineStore('UseStore', {

// state 定义全局的一些变量,通过actions里添加方法进行修改

  state: ():{userInfo:UserInfo}  => ({

      userInfo: {

      ID: '123456', 

       Name: '隔壁老王',     

      }

  }),

  actions: {

    setUserInfo(data: Partial<UserInfo>): void {

      this.userInfo = { ...this.userInfo, ...data };

    }

  },

});

 目录结构如图:

4.测试 使用

在pages/index/index.vue里添加如下代码

<script lang="ts" setup>

import { ref } from 'vue'

const title = ref('Hello')

import { UseStore} from '@/stores/useStore'

const useStore= UseStore()

const consoleStore = ()=>{

  console.log(useStore.userInfo)

}

consoleStore()

</script>

打印结果如下:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue3+uniapp+TS+Vite+uView-plus(uniapp-nutui)微信小程序模板搭建 的相关文章

  • websphere6.x 调用集群EJB的Context.PROVIDER_URL写法

    import java util Hashtable import javax naming Context import javax naming InitialContext Hashtable env new Hashtable en
  • caffe源码解析 — net.cpp

    Net类是Solve类的一个成员 在net cpp中定义了对Net的所有操作 其中包括 Init GetLearningRateAndWeightDecay ForwardPrefilled Backward ShareTrainedLay
  • 计算机数值转换教案,计算机数值方法教案.doc

    第O章 绪论 一 教学设计 1 教学内容 数值计算方法这门课程的形成背景及主要研究内容 研究方法 主要特点 算法的有关概念及要求 误差的来源 意义 及其有关概念 数值计算中应注意的一些问题 2 重点难点 算法设计及其表达法 误差的基本概念

随机推荐

  • 数据结构——快速排序

    1 原理及代码实现 快速排序 快速排序也是一种分治的排序算法 快速排序和归并排序是互补的 归并排序将数组分成两个子数组分别排序 并将有序的子数组归并以将整个数组排序 会需要一个额外的数组 而快速排序的排序方式是当两个子数组都有序时 整个数组
  • @Async注解线程池

    在启动类上添加 EnableAsync配合该注解使用 自定义线程池方法 implements AsyncConfigurer extends AsyncSupportConfigurer Bean 注入线程池 public interfac
  • Shell中表示数字跨度的几种方式

    在Shell脚本中 如果要输出数字为0 20中3的倍数 可以使用下面三种方式来完成 方式一 i 0 i lt 20 i 3 for i 0 i lt 20 i 3 do echo i done 方式二 0 20 3 for i in 0 2
  • ElasticSearch 评分排序

    背景 通过脚本改变评分 背景 近期有一个需求 需要对优惠券可用商品列表加个排序 只针对面值类的券不包括折扣券 需求是这样的 假设有一张面值券 50 块钱 可用商品列表 A 100 B 40 C 10 当用户查询当前券可用商品列表的时候优先将
  • RuntimeError: expected dtype Double but got dtype Float 损失求导出错

    求导出现问题 源代码 修改为 把损失修改为loss clone detach requires grad
  • 卫星通信的资源调度 vs 地面无线通信的资源调度

    以OFDM系统为例 考虑多个用户共用多个子载波的场景 一 两类资源 调整时频资源 即基站或卫星决定给各个用户在哪些时隙分配多少子载波 调整发射功率 即基站或卫星决定给每个用户在每个子信道上的功率是多大 用字母 P n k P n k Pn
  • 【TestNG】TestNG使用教程详解

    一 TestNG介绍 TestNG是Java中的一个测试框架 类似于JUnit 和NUnit 功能都差不多 只是功能更加强大 使用也更方便 详细使用说明请参考官方链接 https testng org doc index html 二 Te
  • anaconda 创建虚拟环境、激活及使用的基本方法

    1 查看当前存在的虚拟环境 conda env list 2 创建虚拟环境 环境名 conda create n 环境名 python X X 3 激活指定虚拟环境 activate 环境名 4 删除虚拟环境 conda remove n
  • c++ 鼠标控制

    windows下获得鼠标位置和控制鼠标 include
  • 使用nodejs开发一个markdown文档管理小系统(一)Using Nodejs to quickly develop a markdown management system...

    好多年没碰过前端jquery了 用一两天时间重温一下 刚好写个小工具 不递归取文件夹和文件 只写一层 保持足够简单 验证和参数判断暂不写 毕竟只写了几个小时而已 功能算完备了 添加一个简单的管理员权限管理修改的所有功能即可放出去了 看来还不
  • LaTeX各种算法排版

    1 首先在导言区加入语句 usepackage algorithm usepackage algorithmic 2 例1 begin algorithm caption A label alg A begin algorithmic ST
  • AUTOSEMO“恒以致远,共创共赢”主题研讨会圆满落幕

    2023年8月31日 中国汽车工业协会软件分会中国汽车基础软件生态标委会 简称 AUTOSEMO 与天津市西青区人民政府联合主办 北京经纬恒润科技股份有限公司承办的 恒以致远 共创共赢 主题研讨会在天津隆重召开 本次研讨会是AUTOSEMO
  • vue2.0使用less 创建全局的颜色变量,配置主题色

    1 使用场景 项目中需要统一配置前端的主题样式 我们可以使用less创建 theme colors rgba 54 174 149 1 变量 供全局调用 2 安装依赖 cnpm install less less loader save 安
  • 【Android】WebView控件最全使用解析

    WebView控件最全使用解析 一 WebView 概述 二 WebView使用基础篇 2 1添加方式 2 2 加载远程网页 2 3 加载本地网页 2 4 加载HTML片段 2 5 WebView 常用方法 三 WebView 进阶篇 3
  • Android--Recovery模块之恢复出厂设置

    一 在进行详细流程分析之前 先看一下几个重要概念 一 Recovery的工作需要整个软件平台的配合 从架构角度看 有三个部分 1 Main system 用boot img启动的Linux系统 Android的正常工作模式 2 Recove
  • 【MyBatis】自定义resultMap三种映射关系

    目录 一 一对一映射 One to One 1 1 表关系 1 2 resultMap设置自定义映射 二 一对多映射 One to Many 2 1 创建实体 2 2 级联方式处理映射关系 2 3 定义SQL 2 4 OrderMapper
  • jquery 购物车飞入特效--全网最简单

    有个插件 jquery fly js 可以搞定 好象特点之一是有抛物线效果 如果要求不高 可以看看我这个 其实也是在网上看到的 作了些改进 三个元素 被点击的div 飞翔的小红点 装小红点的div 购物车 div 被点击的 div div
  • (一)@Input属性讨论

    Input Declares a data bound input property Angular automatically updates data bound properties during change detection 大
  • PAT C入门题目-7-111 输出学生成绩 (20 分)(动态内存分配)

    7 111 输出学生成绩 20 分 本题要求编写程序 根据输入学生的成绩 统计并输出学生的平均成绩 最高成绩和最低成绩 建议使用动态内存分配来实现 输入格式 输入第一行首先给出一个正整数N 表示学生的个数 接下来一行给出N个学生的成绩 数字
  • vue3+uniapp+TS+Vite+uView-plus(uniapp-nutui)微信小程序模板搭建

    官网下载目录结构 DCloud uni preset vue 码云 开源中国 gitee com 下载zip压缩包即可 目录 一 依赖下载 二 运行 三 vite config json文件修改 四 uView plus组件库加载 1 安装