【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.hqwc.cn/news/513514.html

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

相关文章

python--产品篇--游戏-坦克

文章目录 准备代码main.pycfg.py 效果 准备 下载 代码 main.py import os import cfg import pygame from modules import *主函数 def main(cfg):# 游戏初始化pygame.init()pygame.mixer.init()screen pygame.display.set_mode((cfg.WIDTH, cfg.HEIGHT))pygame.display.…

CHI协议学习

原始文档&#xff1a;https://developer.arm.com/documentation/102407/0100/?langen CHI 总线拓扑结构 CHI总线拓扑是实现自定义的&#xff0c;可以是RING/MESH/CROSSBAR的类型&#xff1b; RING 一般适用于中等规模芯片MESH 一般适用于大规模芯片CROSSBAR 一般适用于小规模…

工具函数模板题(蓝桥杯 C++ 代码 注解)

目录 一、Vector容器&#xff1a; 二、Queue队列 三、Map映射 四、题目&#xff08;快递分拣 vector&#xff09;&#xff1a; 代码&#xff1a; 五、题目&#xff08;CLZ银行问题 queue&#xff09;&#xff1a; 代码&#xff1a; 六、题目&#xff08;费里的语言 map&…

【Spring底层原理高级进阶】Spring Kafka:实时数据流处理,让业务风起云涌!️

&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;特别推荐给大家我的最新专栏《Spring 狂野之旅&#xff1a;从入门到入魔》 &#x1f680; 本…

三星成功研发出业界首款12层堆叠HBM3E

三星电子有限公司成功研发出业界首款12层堆叠HBM3E DRAM——HBM3E 12H&#xff0c;这是迄今为止容量最大的HBM产品。这款新型HBM3E 12H内存模块提供了高达1,280GB/s的史上最高带宽&#xff0c;并拥有36GB的存储容量&#xff0c;相较于之前的8层堆叠HBM3 8H&#xff0c;在带宽和…

记录一次排查负载均衡不能创建的排查过程

故障现象&#xff0c;某云上&#xff0c;运维同事在创建负载均衡的时候&#xff0c;发现可以创建资源&#xff0c;但是创建完之后&#xff0c;不显示对应的负载均衡。 创建负载均衡时候&#xff0c;按f12发现console有如下报错 后来请后端网络同事排查日志发现&#xff0c;是后…

《PyTorch深度学习实践》第十一讲卷积神经网络进阶

一、 1、卷积核超参数选择困难&#xff0c;自动找到卷积的最佳组合。 2、1x1卷积核&#xff0c;不同通道的信息融合。使用1x1卷积核虽然参数量增加了&#xff0c;但是能够显著的降低计算量(operations) 3、Inception Moudel由4个分支组成&#xff0c;要分清哪些是在Init里定义…

汽车后视镜反射率检测仪厂家

随着汽车工业的快速发展&#xff0c;汽车后视镜作为驾驶员观察车辆周围环境的重要工具&#xff0c;其性能和质量对于交通安全至关重要。汽车后视镜的反射率检测仪是一种用于检测汽车后视镜反射性能的专业设备&#xff0c;其重要性不言而喻。本文将重点介绍汽车后视镜反射率检测…

猜数字小游戏

目录 java&#xff1a; c语言&#xff1a; java编写&#xff1a; 首先我们要获取随机数 java帮我们写好了一个类叫Random&#xff0c;这个类就可以生成一个随机数 那我们该如何使用Random类呢&#xff1f; 1、导包———Random这个类在哪呢&#xff08;导包必须出现在类定义…

短视频矩阵系统--抖去推---年后技术还能迭代更新开发运营吗?

短视频矩阵系统#短视频矩阵系统已经开发3年&#xff0c;年后这个市场还能继续搞吗&#xff1f;目前市面上开发短视频账号矩阵系统的源头公司已经不多了吧&#xff0c;或者说都已经被市场被官方平台的政策影响的不做了吧&#xff0c;做了3年多的矩阵系统开发到现在真的是心里没有…

二叉树——700. 二叉搜索树中的搜索、98. 验证二叉搜索树

二叉搜索树中的搜索 给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和一个整数值 val。 你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在&#xff0c;则返回 null 。 示例 1: 输入&#xff1a;root [4,2,7,1,3], val 2 …

2024全国水科技大会暨新能源及电子行业废水论坛(十一)

一、会议背景 为深入学习贯彻《中共中央、国务院关于全面推进美丽中国建设的意见》&#xff0c;全面贯彻实施《固体废物污染环境防治法》、《“十四五”全国城市基础设施建设规划》&#xff0c;推进我国污泥处理工程建设&#xff0c;提高处理产物资源化利用水平&#xff0c;促进…