uni-app基于vite和vue3创建并集成pinia实现数据持久化

一、uni-app基于Vite和Vue3创建并集成pinia实现数据持久化

文章目录

  • 一、uni-app基于Vite和Vue3创建并集成pinia实现数据持久化
    • 1.如何创建基于Vite和Vue3的uni-app项目?
    • 2.选择其中一个分支,就是一个脚手架
  • 二、以下都是基于vite-ts版本创建和配置
    • 1.目录结构
    • 2.启动命令【微信小程序】
  • 三、配置uni-app集成uview-plus
    • 1.npm安装方式
    • 2.由于使用了TS,则配置完uview-plus之后会报错
    • 3.又因为tsconfig.json中扫描.d.ts文件的路径如下
    • 4.此处选择自行创建文件解决
  • 四、集成pinia实现状态管理
    • 1.main.ts配置如下
    • 2.piniaStore配置
  • 五、配置pinia的数据持久化
    • 1.配置支持uni-app的pinia持久化插件
    • 2.main.ts完整配置
    • 3.别忘了TS的支持
      • 4.修改vite默认5173的端口号

1.如何创建基于Vite和Vue3的uni-app项目?

DCloud 官方Gitee仓库 https://gitee.com/dcloud/uni-preset-vue
在这里插入图片描述

Gitee官方仓库提供了各种版本的uni-app的脚手架,可以自行选择直接使用。

在这里插入图片描述

2.选择其中一个分支,就是一个脚手架

常用的有vite(vite+vue3+js)、vite-ts(vite+vue3+ts)、vue3(基于uni-app的vue3版本:webpack)
版本可以自行选择

二、以下都是基于vite-ts版本创建和配置

克隆项目

git clone https://gitee.com/dcloud/uni-preset-vue.git

在这里插入图片描述

1.目录结构

在这里插入图片描述

2.启动命令【微信小程序】

在这里插入图片描述

三、配置uni-app集成uview-plus

注意:如果是vue2的版本,选择uview-ui;如果是vue3的版本选择uview-plus

uview-ui官网 https://www.uviewui.com/
在这里插入图片描述
uview-plus官网 https://uiadmin.net/uview-plus/
在这里插入图片描述

注意:因为当前项目是基于vite+vue3的框架,所以选择使用uview-plus版本,又因为是从仓库克隆的,所以安装方式是脱离了Hbuilder X软件而使用VSCode开发,所以选择npm的方式安装!

1.npm安装方式

npm安装方式1 https://uiadmin.net/uview-plus/components/npmSetting.html
在这里插入图片描述
npm安装方式2 https://uiadmin.net/uview-plus/components/install.html#npm方式
在这里插入图片描述

2.由于使用了TS,则配置完uview-plus之后会报错

在这里插入图片描述

3.又因为tsconfig.json中扫描.d.ts文件的路径如下

在这里插入图片描述
所以,要么更改扫描路径,要么自行创建对应路径文件,配置解决。

4.此处选择自行创建文件解决

在这里插入图片描述
在src下创建typings文件夹,自定义.d.ts文件,加上一行如下声明,即可解决uview-plus引入报错问题;

declare module "uview-plus";

在这里插入图片描述

四、集成pinia实现状态管理

因为是集成的vite+vue3的uni-app项目,官方更新不是那么及时,所以pinia不能使用最新版本,需要降级:"pinia": "^2.0.33"

pinia官方文档 https://pinia.vuejs.org/zh/
在这里插入图片描述

npm i pinia@2.0.33 -S

1.main.ts配置如下

import { createSSRApp } from "vue";
import App from "./App.vue";
import uviewPlus from "uview-plus";
import * as Pinia from "pinia";export function createApp() {const app = createSSRApp(App);app.use(uviewPlus);// 1.创建pinia的实例const pinia = Pinia.createPinia();// 2.注册到app实例中app.use(pinia);return {app,Pinia, // 3.必须导出Pinia};
}

2.piniaStore配置

import { defineStore } from "pinia";
import { ref } from "vue";type AppStoreType = {count: number;
};// 第一种写法
export const useAppStore1 = defineStore({id: "appStore",state: (): AppStoreType => ({count: 0,}),
});// 第二种写法(推荐)
export const useAppStore2 = defineStore("appStore", {state: (): AppStoreType => ({count: 0,}),actions: {addCar(item: any) {}},
});
// 第三种写法
export const useAppStore3 = defineStore("appStore", () => {const count = ref(0);return {count,};
});

五、配置pinia的数据持久化

注意:虽然使用了vue3,但是不是最新的vue3,所以pinia也不是最新的pinia,不能使用官方提供的数据持久化的插件

pinia官方提供的持久化插件 https://prazdevs.github.io/pinia-plugin-persistedstate/zh/
在这里插入图片描述

1.配置支持uni-app的pinia持久化插件

pinia支持uni-app的持久化插件 https://www.npmjs.com/package/pinia-plugin-persist-uni
在这里插入图片描述

npm i pinia-plugin-persist-uni

在这里插入图片描述

2.main.ts完整配置

import { createSSRApp } from "vue";
import App from "./App.vue";
import uviewPlus from "uview-plus";
import * as Pinia from "pinia";
import piniaPersist from "pinia-plugin-persist-uni";export function createApp() {const app = createSSRApp(App);app.use(uviewPlus);// 1.创建pinia的实例const pinia = Pinia.createPinia();pinia.use(piniaPersist);app.use(pinia);return {app,Pinia, // 2.必须导出Pinia};
}

3.别忘了TS的支持

在这里插入图片描述

import { defineStore } from "pinia";type AppStoreType = {count: number;
};export const useAppStore2 = defineStore("appStore", {persist: {enabled: true, // 开启持久化strategies: [{key: "appStore", // 持久化的keystorage: window?.localStorage, // 持久化的方式,可以选择sessionStorage},],},state: (): AppStoreType => ({count: 0,}),actions: {addCar(item: any) {},},
});

4.修改vite默认5173的端口号

vite.config.ts

import { defineConfig } from "vite";
import uni from "@dcloudio/vite-plugin-uni";// https://vitejs.dev/config/
export default defineConfig({plugins: [uni()],server: {port: 8080 // 默认是5173}
});

如此,基于vite和vue3的uni-app小程序就创建完成啦,快去试试吧~

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

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

相关文章

用友NC Cloud accept.jsp接口任意文件上传漏洞复现 [附POC]

文章目录 用友NC Cloud accept.jsp接口任意文件上传漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 用友NC Cloud accept.jsp接口任意文件上传漏洞复现 [附POC] 0x01 前言 免责声明&#xff1a…

Redis客户端-引入jedis

ssh端口转发 Redis服务器在官网公开了使用的协议(RESP),此时任何一个第三方都可以通过上述协议,来实现出一个和redis服务器通信的客户端程序. 现在,已经有很多库可以让我们直接调用,就不必关注redis协议的细节了. 在java的生态中,封装了RESP协议,实现的redis客户端有很多,我…

JavaScript脚本操作CSS

脚本化CSS就是使用JavaScript脚本操作CSS,配合HTML5、Ajax、jQuery等技术,可以设计出细腻、逼真的页面特效和交互行为,提升用户体验,如网页对象的显示/隐藏、定位、变形、运动等动态样式。 1、CSS脚本化基础 CSS样式有两种形式&…

[yarn]yarn异常

一、运行一下算圆周率的测试代码,看下报错 cd /home/data_warehouse/module/hadoop-3.1.3/share/hadoop/mapreduce hadoop jar hadoop-mapreduce-examples-3.1.3.jar pi 1000 1000 后面2个数字参数的含义: 第1个1000指的是要运行1000次map任务 …

【C++心愿便利店】No.12---C++之探索string底层实现

文章目录 前言一、写实拷贝(了解)二、string类常用接口实现2.1 成员变量2.2 默认构造函数2.3 拷贝构造函数2.4 operator2.5 operator[]2.6 c_str2.7 size()2.8 capacity() 三、迭代器的实现3.1 begin()和end()3.2 范围for 四、string类增删查改4.1 reser…

偶数科技携Skylab实时湖仓数据平台亮相2023全国中小企业数字化转型大会

2023全国中小企业数字化转型大会于10月28日至30日在安徽省合肥市举行,本次大会以“数实融合 赋能万企”为主题,由工业和信息化部、安徽省人民政府主办。会议期间,偶数科技等典型企业的数字化转型新技术、新产品、新应用、新模式集聚亮相&…

【Git】安装和常用命令的使用与讲解及项目搭建和团队开发的出现的问题并且给予解决

目录 Git的简介 介绍 Git的特点及概念 Git与SVN的区别 图解 ​编辑 命令使用 安装 使用前准备 搭建项目环境 ​编辑 团队开发 Git的简介 介绍 Git 是一种分布式版本控制系统,是由 Linux 之父 Linus Torvalds 于2005年创建的。Git 的设计目标是为了更好地管…

【LeetCode: 54. 螺旋矩阵 | 模拟】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

react 修改less文件后保存,内存溢出,项目崩溃问题解决

一、完整报错 一个很老的react项目,因为没有package-lock.json版本锁,导致拉下来的时候,安装的依赖版本冲突,好不容易启动起来,修改less文件后只要一保存,项目就会崩溃,需要重启,报…

【uni-app + uView】CountryCodePicker 国家区号组件

1. 效果图 2. 组件完整代码 <template><u-popup class="country-code-picker-container" v-if="show" :show

2013年108计网

第33题 在 OSI 参考模型中, 下列功能需由应用层的相邻层实现的是()A. 对话管理B. 数据格式转换C. 路由选择D. 可靠数据传输 很显然&#xff0c;题目所问的应用层的相邻层是表示层。该层实现与数据表示相关的功能。选项a中的对话管理属于会话层。选项c中的路由选择属于网络层。…

机器学习 - 决策树:技术全解与案例实战

目录 一、引言二、决策树基础决策树模型概述构建决策树的关键概念特征选择决策树的生成 决策树的剪枝 三、算法研究进阶提升树和随机森林提升树&#xff08;Boosted Trees&#xff09;随机森林&#xff08;Random Forests&#xff09; 进化算法与决策树决策树结构的进化 多目标…

吃啥大转盘

经常跟朋友出去吃饭&#xff0c;选择太困难了所以写了个简单的转盘&#xff0c;直接copy到txt文本然后把文件后缀改成html即可。 需要换食物直接在文件中找到 list 值按照格式替换一下即可。 效果&#xff1a; 代码块&#xff1a; <html><head><meta http-…

【方法】如何取消PDF文件的“打开密码”?

我们知道&#xff0c;PDF文件可以设置“打开密码”&#xff0c;保护文件不被随意打开&#xff0c;那如果后续不需要了&#xff0c;要怎么取消“打开密码”呢&#xff1f;不清楚的小伙伴可以试试小编分享的3种方法&#xff01; 方法1&#xff1a;使用PDF编辑器 PDF编辑器不仅可…

技术分享 | Spring Boot 异常处理

Java 异常类 首先让我们简单了解或重新学习下 Java 的异常机制。 Java 内部的异常类 Throwable 包括了 Exception 和 Error 两大类&#xff0c;所有的异常类都是 Object 对象。 Error 是不可捕捉的异常&#xff0c;通俗的说就是由于 Java 内部 JVM 引起的不可预见的异常&#…

银行电子回单p图软件,建设农业邮政工商招商,易语言回执单快照截图

这次分享的还是通过易语言的画板自动绘画一个回执单的功能&#xff0c;套用的是网上一个回执单模版&#xff0c;我加了水印&#xff0c;防止被别有用心的人利用&#xff0c;然后一共我插入了5个图片资源&#xff0c;单选框选定后画板上面的图片会自动被替换为对应的图片模版&am…

星岛专栏|从Web3发展看金融与科技的融合之道

11月起&#xff0c;欧科云链与香港主流媒体星岛集团开设Web3.0安全技术专栏&#xff0c;该专栏主要面向香港从业者、交易机构、监管机构输出专业性的安全合规建议&#xff0c;旨在促进香港Web3.0行业向安全与合规发展。 出品&#xff5c;欧科云链研究院 自2016年首届香港金融…

降维·预测·救命:PCA、随机森林与乳腺癌

一、引言 乳腺癌作为女性健康领域的一大挑战&#xff0c;对全球范围内的女性健康产生了深远影响。据世界卫生组织&#xff08;WHO&#xff09;统计&#xff0c;乳腺癌已成为全球女性恶性肿瘤发病率的最高者&#xff0c;且呈现逐年上升的趋势。在中国&#xff0c;乳腺癌也是女性…

k8s存储卷 PV和PVC

目录 emptyDir存储卷 hostPath存储卷 nfs共享存储卷 PVC 和 PV 生命周期 一个PV从创建到销毁的具体流程如下&#xff1a; 静态pvc 动态pvc 3、定义PVC 4、测试访问 搭建 StorageClass NFS&#xff0c;实现 NFS 的动态 PV 创建 1、在stor01节点上安装nfs&#xff0…

电商大促演变:拼多多百亿补贴的消费升级体验

出品| 大力财经 文 | 魏力 拼多多已经够便宜了&#xff0c;双十一还能怎么玩&#xff1f;作为一个曾经被认为是深耕五环外消费者的电商平台&#xff0c;这几年拼多多从五环外杀到市中心&#xff0c;现在的国人&#xff0c;不管是中产&#xff0c;还是职场小白&#xff0c;人人…