【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.mzph.cn/news/724625.shtml

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

相关文章

短剧小程序:掌中剧院,随时上演

在繁忙的生活节奏中&#xff0c;我们总渴望找到一片属于自己的休闲空间。短剧小程序&#xff0c;就是这样一处随时随地都能让你沉浸其中的掌上剧院。无论你在何处&#xff0c;无论何时&#xff0c;只要轻轻一点&#xff0c;精彩纷呈的短剧即刻上演。 一、掌中剧院&#xff0c;…

学习Java的第二天

如何使用文本文档在cmd里打印出HelloWorld 1、创建一个文本文档&#xff0c;并命名为HelloWorld&#xff0c;将后缀改为java&#xff08;需要自己去把后缀打开显示出来&#xff09; 2、打开编辑 也可以双击打开 3、在里面写出以下代码 上面红框里为你要打印的语句&#xff0c;…

MySql、Navicat 软件安装 + Navicat简单操作(建数据库,表)

一、MySql、Navicat 软件安装 及正常使用 MySql下载&#xff0b;安装&#xff1a; 检查安装情况&#xff1a; 配置环境变量&#xff1a; 搞定了&#xff01;&#xff01;&#xff01; 可以登陆试哈哈哈 连接navicat 开始创建数据库 二、 商品种类表 - commoditytype int …

【C++】102.二叉树的层序遍历

题目描述 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9,20],[15,7]]示例 2&#xff1…

自学Java的第二十一天(在学校版)

一&#xff0c;每日收获 类与对象 1.看一个养猫猫问题 2.使用现有技术解决 Object01.java 3.类与对象的关系示意图 4.快速入门 5.类和对象的区别和联系 6.对象在内存中存在形式 7.属性/成员变量/字段 8.如何创建对象 9.如何访问属性 二&#xff0c;新名词与小技巧 三…

【Linux】Linux网络故障排查与解决指南

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;Linux ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 检查网络连接状态&#xff1a; 检查路由表&#xff1a; 检查DNS配置&#xff1a; 检查网络连接状态&#xff1a; 检查防火墙设…

Igraph入门指南 2

3、图的基本要素——边(Edge|Arc) 图的最本质的内容是一种二元关系&#xff0c;如果给这种二元关系赋予一个方向&#xff0c;就产生了有向图和无向图的分类&#xff0c;在教材中&#xff0c;无向的边叫Edge&#xff0c;有向的边叫Arc&#xff0c;另外&#xff0c;根据两个顶点…

KOA优化高斯回归预测(matlab代码)

KOA-高斯回归预测matlab代码 开普勒优化算法&#xff08;Kepler Optimization Algorithm&#xff0c;KOA&#xff09;是一种元启发式算法&#xff0c;灵感来源于开普勒的行星运动规律。该算法模拟行星在不同时间的位置和速度&#xff0c;每个行星代表一个候选解&#xff0c;在…

指针数组初始化,不常见啊

今天无意间看到这样一段代码&#xff0c;因为还是第一次看到&#xff0c;这是glibc库里的代码&#xff0c;写出来分享一下&#xff1a; #ifndef ERR_MAP # define ERR_MAP(n) n #endif const char *const _sys_errlist_internal[] { #define _S(n, str) [ERR_MAP(n)] …

WebGIS开发0基础必看教程:矢量查询

1.前言 在第七章里我们知道了WebGIS中要素的本质是UIComponent&#xff0c;而矢量图层的本质是包含了n&#xff08;n>0&#xff09;个UIComponent的Canvas。我们在UIComponent的graphics中&#xff0c;根据矢量数据画出矢量的形状(shape)&#xff0c;并且将矢量数据的属性(…

WordPress建站入门教程:小皮面板phpstudy如何安装PHP和切换php版本?

小皮面板phpstudy支持的PHP版本有很多&#xff0c;包括5.2.17、5.3.29、5.4.45、5.5.9、5.6.9、7.0.9、7.1.9、7.2.9、7.3.4、7.3.9、7.4.3、8.0.2、8.2.9。那么我们如何安装其他的php版本和切换网站的php版本呢&#xff1f;只需要简单几步即可&#xff0c;具体如下&#xff1a…

第十一篇 - 应用于市场营销视频场景中的人工智能和机器学习技术 – Video --- 我为什么要翻译介绍美国人工智能科技巨头IAB公司?

IAB平台&#xff0c;使命和功能 IAB成立于1996年&#xff0c;总部位于纽约市。 作为美国的人工智能科技巨头社会媒体和营销专业平台公司&#xff0c;互动广告局&#xff08;IAB- the Interactive Advertising Bureau&#xff09;自1996年成立以来&#xff0c;先后为700多家媒体…

【工作向】protobuf编译生成pb.cc和pb.py文件

序言 首先通过protoc --version查看protoc版本&#xff0c;避免pb文件生成方和使用方版本不一致 1. 生成pb.cc 生成命令 protoc -I${proto_file_dir} --cpp_out${pb_file_dir} *.proto参数&#xff1a; -I表示 proto 文件的路径&#xff1b; --cpp_out 表示输出路径&#xff…

被问爆了!多微信朋友圈一键转发大揭秘!

对于很多企业和个人而言&#xff0c;朋友圈是一个非常重要的营销渠道。不仅可以吸引潜在客户的关注&#xff0c;还能提高产品和服务的曝光率。 今天&#xff0c;就给大家分享一个能够多个微信号一键转发朋友圈的工具——微信管理系统&#xff0c;帮助大家提高工作效率&#xf…

网工内推 | 华为成都研究所,24届应届生人才储备计划

华为成都研究所 招聘岗位 网络工程师&#xff08;2024应届&#xff09; 岗位要求 24届的学员 本科公办院校 英语4/6级 有HCIP优先 工作地点 成都 私信小编&#xff0c;回复【内推】&#xff0c;获取内推名额申请资格~ 想获取更多『 思科 | 华为 | 红帽 认证真题 』、『 网…

jdk安装,配置path系统变量

直接点击安装 不要包含空格&#xff0c;中文字符 3.找到刚刚的路径&#xff0c;看一下&#xff0c;有东西就说明安装对了 配置path winr输入sysdm.cpl点击确定 全部依次点击 确定 即可。 验证jdk是否安装成功 看java、javac是否可用看java、javac版本号是否无问题 win…

FlyClient SPV client轻量化

这篇文章主要是为了构建一种轻客户端的算法。 如果使用SPV 的方式验证交易&#xff0c;每个client上面需要存储非常多的header。使用 proofs of proof-of-work 的方式&#xff0c;使得请客户端仅仅下载少量的区块头就能验证这一条链的安全性&#xff0c;然后再对包含交易的区块…

华为机试 字符串最后一个单词的长度

本题中&#xff0c;我们是要从键盘输入一个字符串&#xff0c;然后返回这个字符串最后一个单词的长度。所以我们需要scancer类。我们需要注意的是&#xff0c;hasnext()和hasnextline()这两个函数的区别。 import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 pack…

力扣hot---岛屿数量

思路dfs&#xff1a; 首先通过两层for循环遍历每一个点&#xff0c;如果这个点为0或者2&#xff08;这个2是什么呢&#xff1f;是在遍历该点以及该点连成的这一片区域中&#xff0c;因为通过深度优先搜索&#xff0c;遍历该点就等于遍历这一片区域&#xff0c;遍历这篇区域中的…

玩家至上:竞技游戏设计如何满足现代玩家的需求?

文章目录 一、现代玩家需求分析二、以玩家体验为核心的游戏设计三、个性化与定制化服务四、强化社交互动与社区建设五、持续更新与优化《游戏力&#xff1a;竞技游戏设计实战教程》亮点编辑推荐内容简介目录获取方式 随着科技的飞速发展和游戏产业的不断壮大&#xff0c;现代玩…