vue3 vue-router 笔记

news/2024/9/15 22:45:59/

1.安装

 npm install vue-router

2.创建router文件,在main.js引入,创建home.about页面 app.vue文件添加路由占位符
router/index.js

  import { createRouter,createWebHashHistory, createWebHistory } from 'vue-router'import home from './views/home.vue'import about from '../views/about.vue'const routes = [{path:'/home',component: home},{path:'/about',component: about}]const router = createRouter({// hash 模式跟 history 模式history: createWebHashHistory(),routes})export default router

main.js

import { createApp } from 'vue'
import App from './App.vue'
import router from "./route/index"
const app = createApp(App)
app.use(router)
app.mount('#app')

app.vue

 <!-- replace 替换路径,不会回退 --><router-link to="/home" replace active-class="active">首页</router-link><router-link to="/about" active-class="active">关于</router-link><router-view></router-view>

3.路由懒加载,redirect 从定向

import { createRouter, createWebHashHistory, createWebHistory } from 'vue-router'// 路由懒加载
// const home = () => import(/* webpackChunkName :'home'*/'../views/home.vue')
// const about = () => import(/* webpackChunkName :'about'*/'../views/about.vue')
const routes = [{path: '/',redirect: '/home'},{path: '/home',name: 'home',component: () => import(/* webpackChunkName :'home'*/'../views/home.vue'),},{path: '/about',name: 'about',component: () => import(/* webpackChunkName :'about'*/'../views/about.vue')}
]
const router = createRouter({history: createWebHistory(),routes
})
export default router

4.动态路由 创建user.vue文件
router/index.js

import { createRouter, createWebHashHistory, createWebHistory } from 'vue-router'
const routes = [// 动态路由{path: '/user/:id',name: 'user',component: () => import('../views/user.vue')}
]
const router = createRouter({history: createWebHistory(),routes
})
export default router

app.vue

 <router-link to="/user/123" active-class="active">用户123</router-link><router-link to="/user/456" active-class="active">用户456</router-link>

user.vue

<div>user{{ $route.params.id }}</div>

5.404页面处理,创建404文件
使用 pathMatch

import { createRouter, createWebHashHistory, createWebHistory } from 'vue-router'
const routes = [// 404 页面不存在路由  后面加* 会解析输入的路径,不加则不解析{path: '/:pathMatch(.*)*',component: () => import('../views/404.vue')}
]
const router = createRouter({history: createWebHistory(),routes
})
export default router

6.路由嵌套 创建详情1,2 文件

import { createRouter, createWebHashHistory, createWebHistory } from 'vue-router'
const routes = [{path: '/',redirect: '/home'},{path: '/home',name: 'home',component: () => import(/* webpackChunkName :'home'*/'../views/home.vue'),children: [{path:'/home',redirect:'/home/detailOne'},{path: 'detailOne', //等同于 /home/detailOnecomponent: () => import('../views/detailOne.vue')},{path:'detailTwo',component:()=> import('../views/detailTwo.vue')}]}
]
const router = createRouter({history: createWebHistory(),routes
})
export default router

7.编程式跳转
app.vue 添加点击事件

<hr /><span @click="homeBtnClick">首页</span><button @click="aboutBtnClick">关于</button><button @click="goBack">返回</button><router-view></router-view>

添加事件方法 query 传参

<script setup>
import { useRouter } from "vue-router";
const router = useRouter();
function homeBtnClick() {router.push("/home");
}
function aboutBtnClick() {router.push({path: "/about",query: {name: "言念",age: 24,},});
}
function goBack() {router.back();router.go(-1);
}
</script>

about.vue

<template><div class="about">about<h1>{{$route.query}}</h1></div>
</template>
<script setup>
</script>
<style scoped></style>

8.完整router/index.js

import { createRouter, createWebHashHistory, createWebHistory } from 'vue-router'
// import home from '../views/home.vue'
// import about from '../views/about.vue'// 路由懒加载
// const home = () => import(/* webpackChunkName :'home'*/'../views/home.vue')
// const about = () => import(/* webpackChunkName :'about'*/'../views/about.vue')
const routes = [{path: '/',redirect: '/home'},{path: '/home',name: 'home',component: () => import(/* webpackChunkName :'home'*/'../views/home.vue'),children: [{path:'/home',redirect:'/home/detailOne'},{path: 'detailOne', //等同于 /home/detailOnecomponent: () => import('../views/detailOne.vue')},{path:'detailTwo',component:()=> import('../views/detailTwo.vue')}]},{path: '/about',name: 'about',component: () => import(/* webpackChunkName :'about'*/'../views/about.vue')},// 动态路由{path: '/user/:id',name: 'user',component: () => import('../views/user.vue')},// 404 页面不存在路由  后面加* 会解析输入的路径,不加则不解析{path: '/:pathMatch(.*)*',component: () => import('../views/404.vue')}
]
const router = createRouter({history: createWebHistory(),routes
})
export default router

9.完整的app.vue

<template><div class="app"><h1>app content</h1><!-- replace 替换路径,不会回退 --><router-link to="/home" replace active-class="active">首页</router-link><router-link to="/about" active-class="active">关于</router-link><router-link to="/user/123" active-class="active">用户123</router-link><router-link to="/user/456" active-class="active">用户456</router-link><hr /><span @click="homeBtnClick">首页</span><button @click="aboutBtnClick">关于</button><button @click="goBack">返回</button><router-view></router-view></div>
</template><script setup>
import { useRouter } from "vue-router";
const router = useRouter();
function homeBtnClick() {router.push("/home");
}
function aboutBtnClick() {router.push({path: "/about",query: {name: "言念",age: 24,},});
}
function goBack() {router.back();router.go(-1);
}
</script>
<style>
.active {color: red;font-size: 20px;
}
</style>

http://www.ppmy.cn/news/1230159.html

相关文章

记一次线上bug排查-----SpringCloud Gateway组件 请求头accept-encoding导致响应结果乱码

基于公司的业务需求&#xff0c;在SpringCloud Gateway组件的基础上&#xff0c;写了一个转发服务&#xff0c;测试开发阶段运行正常&#xff0c;并实现初步使用。但三个月后&#xff0c;PostMan请求接口&#xff0c;返回异常&#xff0c;经排查&#xff0c;从日志中获取到转发…

C++学习 --pair

目录 1&#xff0c; 什么是pair 2&#xff0c; 创建pair 2-1&#xff0c; 标准数据类型 2-2&#xff0c; 自定义数据类型 3&#xff0c; 查询元素 3-1&#xff0c; 标准数据类型 3-2&#xff0c; 自定义数据类型 1&#xff0c; 什么是pair 数据以键值对形式存放的容器&…

Web安全研究(五)

Automated WebAssembly Function Purpose Identification With Semantics-Aware Analysis WWW23 文章结构 introbackgroundsystem design abstraction genapplying abstractionsclassifier data collection and handling data acquisitionstatistics of collected datamodule-…

postgresql安装fdw扩展

最近有同一个服务器不同数据库、不同服务器数据库之间的数据同步需求&#xff0c;使用了fdw 下面举例的是同一个服务器两个不同数据库的同步情况 1、安装扩展 create extension postgres_fdw; 在需要使用fdw的数据库都加上该扩展 2、创建fdw服务器 mlhbase_prd库 CREATE…

基于数据库(MySQL)与缓存(Redis)实现分布式锁

分布式锁 分布式锁&#xff1a;分布式锁是在分布式的情况下实现互斥类型的一种锁 实现分布式锁需要满足的五个条件 可见性&#xff1a;多个进程都能看到结果互斥性&#xff1a;只允许一个持有锁的对象的进入临界资源可用性&#xff1a;无论何时都要保证锁服务的可用性&#x…

Hive效率优化记录

Hive是工作中常用的数据仓库工具&#xff0c;提供存储在HDFS文件系统&#xff0c;将结构化数据映射为一张张表以及提供查询和分析功能。 Hive可以存储大规模数据&#xff0c;但是在运行效率上不如传统数据库&#xff0c;这时需要懂得常见场景下提升存储或查询效率的方法&#x…

最强英文开源模型Llama2架构与技术细节探秘

prerequisite: 最强英文开源模型LLaMA架构探秘&#xff0c;从原理到源码 Llama2 Meta AI于2023年7月19日宣布开源LLaMA模型的二代版本Llama2&#xff0c;并在原来基础上允许免费用于研究和商用。 作为LLaMA的延续和升级&#xff0c;Llama2的训练数据扩充了40%&#xff0c;达到…

gitlab利用CI多工程持续构建

搭建CI的过程中有多个工程的时候&#xff0c;一个完美的构建过程往往是子工程上的更新(push 或者是merge)触发父工程的构建&#xff0c;这就需要如下建立一个downstream pipeline 子仓库1 .gitlab-ci.yml stages:- buildbuild_job:stage: buildtrigger:project: test_user/tes…

Zotero在word中插入带超链接的参考文献/交叉引用/跳转参考文献

Zotero以其丰富的插件而闻名&#xff0c;使用起来十分的带劲&#xff0c;最重要的是它是免费的、不卡顿&#xff0c;不像某专业软件。 然而Zotero在word插入参考文献时&#xff0c;无法为参考文献添加超链接&#xff0c;这是一个不得不提的遗憾。 不过&#xff0c;有大佬已经…

优秀智慧园区案例 - 佛山美的工业城零碳智慧园区,先进智慧园区建设方案经验

一、项目背景 美的工业园区西区最早建于上世纪90年代&#xff0c;到现在已经过去近30年&#xff0c;而这三十年恰恰是信息科技大发展的30年&#xff0c;原有的生产办公条件已不能很好的承载新时期办公和参观接待的需求。所以在21年美的楼宇科技事业部决定对原来的园区进行改造…

汽车级低压差稳压器LDO LM317BD2TR4G原理、参数及应用

LM317BD2TR4G主要功能特性分析 &#xff1a; LM317BD2TR4G 低漏 (LDO) 线性电压稳压器是一款可调 3 端子正向 LDO 电压器&#xff0c;能够在 1.2 V 至 37 V 的输出电压范围内提供 1.5 A 以上的电流。此电压稳压器使用非常简便&#xff0c;仅需两个外部电阻即可设置输出电压。另…

音视频项目—基于FFmpeg和SDL的音视频播放器解析(十六)

介绍 在本系列&#xff0c;我打算花大篇幅讲解我的 gitee 项目音视频播放器&#xff0c;在这个项目&#xff0c;您可以学到音视频解封装&#xff0c;解码&#xff0c;SDL渲染相关的知识。您对源代码感兴趣的话&#xff0c;请查看基于FFmpeg和SDL的音视频播放器 如果您不理解本…

Nginx(反向代理,负载均衡,动静分离)

反向代理 Nginx反向代理是一种将客户端请求转发给后端服务器的技术&#xff0c;即反向代理服务器。在这种架构中&#xff0c;客户端请求首先到达Nginx服务器&#xff0c;然后由Nginx服务器将请求转发给后端服务器&#xff0c;后端服务器响应请求&#xff0c;并将响应传递回Ngi…

FPGA实现双向电平转换

网上搜了一圈&#xff0c;好像没看到的类似的中文资料&#xff0c;不过MicroSemi有个文档AC349上给出了完整的解决方案&#xff0c;还有参考代码。 话不多说&#xff0c;看图&#xff1a; 欲知详情的朋友&#xff0c;请参考 AC349

算法笔记-第九章-堆(未完成-=需要好好搞搞题目)

算法笔记-第九章-堆 堆的基础知识堆的相关性质堆序性堆的存储堆的基础操作下滤操作上滤操作 建堆自顶向下建堆法自下而上建堆法 堆的应用优先队列 大佬讲解向下调整够建大顶堆 堆的基础知识 堆的相关性质 大佬视频总结 堆必须是一个完全二叉树完全二叉树只允许最后一行不为满…

【Linux】22、CPU 评价指标、性能工具、定位瓶颈、优化方法论:应用程序和系统

文章目录 一、评价 CPU 的指标1.1 CPU 使用率1.2 平均负载&#xff08;Load Average&#xff09;1.3 上下文切换1.4 CPU 缓存命中率 二、性能工具2.1 维度&#xff1a;从 CPU 性能指标出发&#xff0c;即当你查看某性能指标时&#xff0c;要清除知道哪些工具可以做到2.2 维度&a…

Ribbon

在Spring Cloud中&#xff0c;Ribbon是一个用于客户端负载均衡的组件&#xff0c;它可以与其他服务发现组件&#xff08;例如Eureka&#xff09;集成&#xff0c;以提供更强大的负载均衡功能。Ribbon使得微服务架构中的客户端能够更加智能地调用其他服务的实例&#xff0c;从而…

人力资源小程序

人力资源管理对于企业的运营至关重要&#xff0c;而如今随着科技的发展&#xff0c;制作一个人力资源小程序已经变得非常简单和便捷。在本文中&#xff0c;我们将为您介绍如何通过乔拓云网制作一个人力资源小程序&#xff0c;只需五个简单的步骤。 第一步&#xff1a;注册登录乔…

异步爬取+多线程+redis构建一个运转丝滑且免费http-ip代理池 (二)

继上一章: CSDN 本次需要做的是进行有效ip的验证! 我们知道,从网页上爬取上千上万个ip之后,因为是免费的代理,所以,对这上千上万个ip进行验证有效性就需要考虑效率上的问题了; 而验证ip有效性的唯一办法,就是通过对网络发起请求;如果state200,就是有效,否则就是无效; 而上…

视频转码方法:多种格式视频批量转FLV视频的技巧

随着互联网的发展&#xff0c;视频已成为日常生活中不可或缺的一部分。然而&#xff0c;不同的视频格式可能适用于不同的设备和平台&#xff0c;因此需要进行转码。在转码之前&#xff0c;要了解各种视频格式的特点和适用场景。常见的视频格式包括MP4、AVI、MKV、FLV等。其中&a…