【2024】vue-router和pinia的配置使用

目录

  • vue-router
  • pinia
  • vue-router+pinia进阶用法---动态路由

有同学在项目初始化后没有下载vue-router和pinia,下面开始:

vue-router

npm install vue-router

然后在src目录下创建文件夹router,以及下面的index.ts文件:
在这里插入图片描述
写进下面的初始化代码:

import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'const router = createRouter({history: createWebHistory(process.env.BASE_URL),routes:[{path:"/",name:"main",component:()=>import("../views/home/IndexView.vue")}],
})
export default router

最后在main.ts文件中写:

import router from './router'
app.use(router)

pinia

先安装:

npm install pinia

然后在main.ts文件中使用:

import { createPinia } from 'pinia'const pinia = createPinia()app.use(pinia)

最后在src目录下创建文件夹store,然后新建你的文件,这里是index.ts:

import { defineStore } from 'pinia'export const store = defineStore('counter', {state: () => ({ count: 0, name: 'Eduardo' }),getters: {doubleCount: (state) => state.count * 2,},actions: {increment() {this.count++},},
})

在使用的时候引入就可以了!

vue-router+pinia进阶用法—动态路由

有点复杂,但是正规,修行看个人,看懂多少凭本事吧,其实上面哪些也够用了!
在store/modules/routes/index.ts写入:

import { defineStore } from 'pinia';interface Meta {id: string;auth?: boolean;keepAlive?: boolean;isActive?: boolean;isLnkActive?: boolean;isLink?: boolean;
}interface RouteData {name: string;path?: string;component?: string;meta: Meta;children?: Array<RouteData>;
}export const useRoutesStore = defineStore({id: 'routes',state: (): { routesData: Array<RouteData> } => ({routesData: [],}),getters: {routesData: (state) => state.routesData,},actions: {setRoutes(payload: { routesData: Array<RouteData> }) {this.routesData = payload.routesData;},},
});

在router/index.ts文件中:

import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'
import { useRoutesStore } from '@/store/modules/routes';const router = createRouter({history: createWebHistory(process.env.BASE_URL),//在vue.config.js中的publicPath中配置根目录//记录滚动的位置解决白屏问题,必须配合keep-alivescrollBehavior(to, from, savedPosition) {if (savedPosition) {// 如果有保存的位置,则返回保存的位置return savedPosition;} else {// 否则返回一个新的位置对象return { left: 0, top: 0 };}},routes: [{path: "/",name: "main",component: () => import("../views/home/IndexView.vue")}],
})//将store内部的routes模块下的routesData数据源拼接成一维数组
const oneRoutes: any = [];
function setOneRoutes(data: RouteRecordRaw[]) {if (data.length > 0) {for (const route of data) {if (route.component) {const tmpComponent = route.component;route.component = () => import(`../views/${tmpComponent}`);oneRoutes.push(route);}if (route.children && route.children.length > 0) {setOneRoutes(route.children);}}}
}//使用setTimeout模拟setTimeout
setTimeout(() => {//服务端接口请求的数据源const routesData = [{name: "栏目管理",//路由名称path: "column",//路由中的pathcomponent: "admin/column/IndexView.vue",//路由映射的组件meta: {id: "1",auth: true,//会员登录验证标识keepAlive: false,//是否开启keep-alive。true:开启,false:关闭isActive: false,//点击后的颜色isLnkActive: false//点击链接后的颜色}},{name: "会员管理",meta: {id: "2",auth: true,keepAlive: false,isActive: false,isLnkActive: false,},children: [{name: "查看会员",path: "user",component: "admin/column/IndexView.vue",meta: {id: "2-1",auth: false,keepAlive: true,isActive: false,isLnkActive: false}},{name: "编辑会员",// path:"add_user",// component:"admin/user/add",meta: {id: "2-2",auth: true,keepAlive: false,isActive: false,isLnkActive: false},children: [{name: "添加",path: "add_user",component: "admin/user/AddView.vue",meta: {id: "2-2-1",auth: true,keepAlive: false,isActive: false,isLnkActive: false}}]}]},{name: "订单管理",meta: {id: "3",auth: true,keepAlive: false,isActive: false,isLnkActive: false},children: [{name: "查看订单",path: "order",component: "admin/order/IndexView.vue",meta: {id: "3-1",auth: true,keepAlive: false,isActive: false,isLnkActive: false}},]},{name: "百度",path: "http://www.baidu.com",meta: {id: "4",isActive: false,isLnkActive: false,isLink: true,//是否外链}}]useRoutesStore().setRoutes({ routesData: routesData });const oneRoutes = useRoutesStore().routesData as RouteRecordRaw[];router.addRoute({path: "/admin",name: "admin",component: () => import("../views/admin/index/IndexView.vue"),redirect: "/admin/column",meta: { auth: true },children: oneRoutes // 将组装好的子路由配置数据赋值给children属性});
}, 300)router.beforeEach((to, from, next) => {if (to.meta.auth) {if (localStorage['isLogin']) {next();} else {next("/");}} else {next();}
});
export default router

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

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

相关文章

华为智慧教室3.0的晨光,点亮教育智能化变革

“教室外有更大的世界&#xff0c;但世界上没有比教室更伟大的地方。” 我们在求学阶段&#xff0c;都听说过这句话&#xff0c;但往往是在走出校园之后&#xff0c;才真正理解了这句话。为了让走出校园的孩子能够有能力&#xff0c;有勇气探索广阔的世界。我们应该准备最好的教…

碳视野|全国首个ESG区域行动方案通过,上海政府推进ESG有八“要”

引领绿色转型&#xff0c;共筑低碳未来&#xff01;AMT企源碳管理团队深入解读碳领域政策、概念及标准&#xff0c;分享实践经验&#xff0c;助力产业绿色发展。我们启动“碳视野、碳课堂、碳实践”三大专栏&#xff0c;紧跟碳行业政策动态&#xff0c;以“科普实践分享”为核心…

Javaweb之SpringBootWeb案例之自动配置案例的自定义starter测试的详细解析

3.2.4.3 自定义starter测试 阿里云OSS的starter我们刚才已经定义好了&#xff0c;接下来我们就来做一个测试。 今天的课程资料当中&#xff0c;提供了一个自定义starter的测试工程。我们直接打开文件夹&#xff0c;里面有一个测试工程。测试工程就是springboot-autoconfigurat…

C++ Floyd求最短路 Floyd算法(多源汇最短路)

给定一个 n 个点 m 条边的有向图&#xff0c;图中可能存在重边和自环&#xff0c;边权可能为负数。 再给定 k 个询问&#xff0c;每个询问包含两个整数 x 和 y &#xff0c;表示查询从点 x 到点 y 的最短距离&#xff0c;如果路径不存在&#xff0c;则输出 impossible。 数据…

过于老旧的pytorch_ssim包 请从github下载源码

有些冷门算法真的不要随便pip&#xff0c;有可能下载到史前版本…最好还是找源代码 汗 今天要用到SSIM损失函数&#xff0c;从网上简单看了一下原理就想测试一下&#xff0c;偷了一下懒就直接在命令行输入pip install pytorch_ssim了&#xff0c;结果报了一堆错误&#xff08;汗…

Python(NetOps)前传-网络设备开局配置

背景 我们知道用Python在cli配置网络设备的前提是&#xff1a; 网络设备与Python主机网络可达网络设备已开启并完成ssh相关配置 目标 本文已华为S5720S-52P-LI-AC交换机为例&#xff0c;完成&#xff1a; 完成网络设备开局配置&#xff1b;用Python脚本验证ssh登录 配置 …

人人都写过的6个bug

大家好&#xff0c;我是知微。 程序员写bug几乎是家常便饭&#xff0c;也是我们每个人成长过程中难以避免的一部分。 为了缓解这份“尴尬”&#xff0c;今天想和大家分享一些曾经都会遇到过的bug&#xff0c;让我们一起来看看这些“经典之作”。 1、数组越界 #include <…

【单片机学习的准备】

文章目录 前言一、找一个视频是二、画图软件三、装keil5 仿真protues总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 项目需要&#xff1a; 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、找一个视频是 https://www.b…

MongoDB聚合运算符:$count

文章目录 语法使用举例在$group阶段中使用在$setWindowFields阶段使用 $count聚合运算符返回分组中文档的数量。从5.0开始支持。 语法 { $count: { } }$count不需要参数 使用 $count可以用于下列聚合阶段&#xff1a; $bucket$bucket$group$setWindowFields 在$group阶段中…

基于springboot+vue的校园网上店铺

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

MySQL 学习笔记(基础篇 Day1)

「写在前面」 本文为黑马程序员 MySQL 教程的学习笔记。本着自己学习、分享他人的态度&#xff0c;分享学习笔记&#xff0c;希望能对大家有所帮助。 目录 0 课程介绍 1 MySQL 概述 1.1 数据库相关概念 1.2 MySQL 数据库 2 SQL 2.1 SQL 通用语法 2.2 SQL 分类 2.3 DDL 2.4 图形…

计算机网络-第2章 物理层

本章内容&#xff1a;物理层和数据通信的概念、传输媒体特点&#xff08;不属于物理层&#xff09;、信道复用、数字传输系统、宽带接入 2.1-2.2 物理层和数据通信的概念 物理层解决的问题&#xff1a;如何在传输媒体上传输数据比特流&#xff0c;屏蔽掉传输媒体和通信手段的差…

【python高级编程教程】笔记(python教程、python进阶)第三节:(1)多态与鸭子类型(Polymorphism and Duck Typing)

参考文章1&#xff1a;【比刷剧还爽】清华大佬耗时128小时讲完的Python高级教程&#xff01;全套200集&#xff01;学不会退出IT界&#xff01; 参考文章2&#xff1a;清华教授大力打造的Python高级核心技术&#xff01;整整100集&#xff0c;强烈建议学习&#xff08;Python3…

Python 开发图形界面程序

用 Python 语言开发图形界面的程序&#xff0c;有2种选择&#xff1a; Tkinter 基于Tk的Python库&#xff0c;这是Python官方采用的标准库&#xff0c;优点是作为Python标准库、稳定、发布程序较小&#xff0c;缺点是控件相对较少。 PySide2/PySide6 基于Qt 的Python库&#x…

JMeter VS RunnerGo :两大主流性能测试工具对比

说起JMeter&#xff0c;估计很多测试人员都耳熟能详。它小巧、开源&#xff0c;还能支持多种协议的接口和性能测试&#xff0c;所以在测试圈儿里很受欢迎&#xff0c;也是测试人员常用的工具&#xff0c;不少企业也基于JMeter建立起自己的自动化测试能力&#xff0c;提升工作效…

VMware虚拟机安装Linux

1.新建虚拟机 2. 安装操作系统 等待 选择中文 点软件选择 选择下面的GNOME桌面 禁用KDUMP 点进安装位置&#xff0c;点完成就可以了 网络连接&#xff0c;右上角打开 开始安装&#xff0c;输入ROOT密码&#xff0c;创建用户 点击重启&#xff0c;等待 重启完成之后出现下面的界…

javaWebssh在线授课辅导系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh在线授课辅导系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用 B/S模式开发。开发环境为TOMCAT7.…

PaddleOCR CPU 文本文字识别 docker部署

需求&#xff1a; 需要把所有滑块图片的数据文字提取出来 启动服务 mkdir paddle cd paddle docker run -itd --name ppocr -v $PWD:/paddle --networkhost -it registry.baidubce.com/paddlepaddle/paddle:2.1.3-gpu-cuda10.2-cudnn7 /bin/bash docker exec -it ppocr bash …

重装显卡驱动记录

重装显卡驱动记录 任务记录现状描述执行情况 任务 晚上回来&#xff0c;开电脑&#xff0c;发现总是进不去系统&#xff08;这个情况我经常见&#xff09;&#xff0c;但偶尔进系统&#xff0c;识别不了我的外接屏&#xff08;这个第一次见&#xff09;。来来回回重启了1h多了…

JVM内部世界(内存划分,类加载,垃圾回收)

&#x1f495;"Echo"&#x1f495; 作者&#xff1a;Mylvzi 文章主要内容&#xff1a;JVM内部世界(内存划分,类加载,垃圾回收) 关于JVM的学习主要掌握三方面: JVM内存区的划分类加载垃圾回收 一.JVM内存区的划分 当一个Java进程开始执行时,JVM会首先向操作系统申…