vue3 vue-router 笔记

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

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

相关文章

MATLAB Simulink和S7-1200PLC MOBUSTCP通信

MATLAB Simulink和SMART PLC OPC通信详细配置请查看下面文章链接: MATLAB和西门子SMART PLC OPC通信-CSDN博客文章浏览阅读749次,点赞26次,收藏2次。西门子S7-200SMART PLC OPC软件的下载和使用,请查看下面文章Smart 200PLC PC Access SMART OPC通信_基于pc access smart的…

Django实战:从零到一构建安全高效的Web应用

目录 一、概述 二、版本控制和部署 1、Git版本控制 2、Docker部署 三、数据库配置 1、配置数据库设置 2、创建数据库模型 四、URL路由和视图 1、定义URL路由 2、创建视图 五、模板渲染 1、创建模板 2、在视图中使用模板 总结 一、概述 Django是一个高级Python W…

电池管理系统(BMS)的进化与分类

BMS的重要性 BMS对于电动车而言不仅仅是“电池的大脑”&#xff0c;更是确保电池安全、效率和寿命的重要保障。一个高效的BMS能够实时监控电池状态&#xff0c;预防过充、过放和过热等情况&#xff0c;从而延长电池寿命&#xff0c;保障驾驶安全。 BMS的分类 一. 按功能分类…

【NGINX--2】高性能负载均衡

1、HTTP 负载均衡 将负载分发到两台或多台 HTTP 服务器。 在 NGINX 的 HTTP 模块内使用 upstream 代码块对 HTTP 服务器实施负载均衡&#xff1a; upstream backend {server 10.10.12.45:80 weight1;server app.example.com:80 weight2;server spare.example.com:80 backup; …

CleanMyMac X4.16免费版mac电脑一键清理电脑垃圾工具

但是&#xff0c;我最近发现随着使用时间的增加&#xff0c;一些奇奇怪怪的文件开始占据有限的磁盘空间&#xff0c;存储空间变得越来越小&#xff0c;系统占用空间越来越大&#xff0c;越来越多的无效文件开始影响我电脑的运行速度。 Mac的文件管理方式和Windows不太一样&…

基于C#实现字符串相似度

一、概念 对于两个字符串 A 和 B&#xff0c;通过基本的增删改将字符串 A 改成 B&#xff0c;或者将 B 改成 A&#xff0c;在改变的过程中我们使用的最少步骤称之为“编辑距离”。比如如下的字符串&#xff1a;我们通过种种操作&#xff0c;痉挛之后编辑距离为 3&#xff0c;不…

【zabbix监控四】zabbix之监控tomcat服务报警

一、监控tomcat服务是否正常运行 1、客户端部署 首先要在zabbix-agent客户端上安装tomcat服务&#xff0c;并能正常启动和关闭 1.1 客户端编写脚本 vim /opt/tomcat.sh#!/bin/bash anetstat -natp |grep 8080|awk {print $6}|grep LISTEN if [[ $a LISTEN ]];thenecho &qu…

Vue 2.0的源码目录设计

Vue 2.0 的源码都在 src 目录下&#xff0c;其目录结构如下。 src ├── compiler # 编译相关 ├── core # 核心代码 ├── platforms # 不同平台的支持 ├── server # 服务端渲染 ├── sfc # .vue 文件解析 ├── s…

upload-labs(1-17关攻略详解)

upload-labs pass-1 上传一个php文件&#xff0c;发现不行 但是这回显是个前端显示&#xff0c;直接禁用js然后上传 f12禁用 再次上传&#xff0c;成功 右键打开该图像 即为位置&#xff0c;使用蚁剑连接 连接成功 pass-2 源码 $is_upload false; $msg null; if (isse…

QMenuBar和QToolBar使用同一个QAction

文章目录 前言一、编辑QMenuBar二、将QMenuBar中的Action添加到toolbar总结 前言 qmenubar中的action添加到toolbar&#xff0c;不是在toolbar中再添加action&#xff0c;效果图如下 一、编辑QMenuBar 正常编辑QMenuBar&#xff0c;以下图为例 二、将QMenuBar中的Action添…

matlab层次分析法模型及相关语言基础

发现更多计算机知识&#xff0c;欢迎访问Cr不是铬的个人网站 代码放在最后面! 这篇文章是学习层次分析法模型的笔记。 1.什么时候用层次分析法 层次分析法是建模比赛中最基础的模型之一&#xff0c;其主要用于解决评价类问题&#xff08;例如&#xff1a;选择哪种方案最好、…

OpenGL 绘制点与三角形(Qt)

文章目录 一、简介二、实现代码三、实现效果一、简介 这里对OpenGL中点与三角形相关绘制操作进行封装,方便后续点云数据与模型数据的渲染。 二、实现代码 这里我们先创建一个基类Drawable,后续的点、线、面等,均会继承该类: Drawable.h #ifndef DRAWABLE_H #define DRAWABL…

Linux:zip包的压缩与解压

压缩文件&#xff1a; zip命令 语法&#xff1a; zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>][-<压缩效率>][压缩文件][文件...][-i <范本样式>][-x <范本样式>] 补充说明&#xff1a;zi…

opencv(5): 滤波器

滤波的作用&#xff1a;一幅图像通过滤波器得到另一幅图像&#xff1b;其中滤波器又称为卷积核&#xff0c;滤波的过程称为卷积。 锐化&#xff1a;边缘变清晰 低通滤波&#xff08;Low-pass Filtering&#xff09;&#xff1a; 目标&#xff1a;去除图像中的高频成分&#…

什么是RS485通信

RS-485是一种通讯接口标准&#xff0c;RS就是Recommended Standard的缩写&#xff08;推荐标准的意思&#xff09;485是标识号。 RS485采用总线的接线方式&#xff0c;广泛应用于数据采集和控制&#xff0c;它的主要优点之一是它允许将多个RS485设备放在同一条总线上。 多设备…

关于LED显示屏的扫描方式知识

LED显示屏的扫描方式是指LED显示屏如何以一定的顺序控制LED点阵的亮度&#xff0c;从而形成图像或文字。主要有静态扫描和动态扫描两种方式。 静态扫描&#xff08;Static Scan&#xff09;&#xff1a; 描述&#xff1a; 在静态扫描中&#xff0c;LED显示屏的每个LED点都有一个…

Web 开发中 route 和 router 有什么区别?

什么是路由&#xff1f; 在 Web 开发中&#xff0c;会经常和路由打交道&#xff0c;可能有的同学并没有仔细思考过到底什么是路由。路由是根据用户请求的 URL 来确定返回给用户的内容或页面的技术&#xff0c;即将 HTTP 请求映射到相应的处理代码&#xff0c;使得用户能够通过…

DataBinding原理

1、MainActivity首先使用DataBindingUtil.setContentView设置布局文件activity_main.xml。 2、随后&#xff0c;经过一系列函数调用&#xff0c;ActivityMainBindingImpl对象最终会实例化&#xff0c;并与activity_main.xml进行绑定。 3、实例化后的ActivityMainBindingImpl对象…

基于深度学习的单帧图像超分辨率重建综述

论文标题&#xff1a;基于深度学习的单帧图像超分辨率重建综述作者&#xff1a; 吴 靖&#xff0c;叶晓晶&#xff0c;黄 峰&#xff0c;陈丽琼&#xff0c;王志锋&#xff0c;刘文犀发表日期&#xff1a;2022 年9 月阅读日期 &#xff1a;2023.11.18研究背景&#xff1a; 图像…

微信小程序配置企业微信的在线客服

配置企业微信后台 代码实现 <button tap"openCustomerServiceChat">打开企业微信客服</button>methods: {openCustomerServiceChat(){wx.openCustomerServiceChat({extInfo: {url: 你刚才的客服地址},corpId: 企业微信的id,showMessageCard: true,});} …