vue路由详解

news/2024/11/25 3:28:50/

vue引入路由

安装路由

npm install vue-router@4 --save

main.js引入路由

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

编写router/index.js

Hash 历史模式(/#/)

Hash 模式直接访问子路径不会报404,因为vue里面有内置配置

 import { createRouter, createWebHashHistory } from 'vue-router'const router = createRouter({routes,  history:createWebHashHistory()})

HTML5 历史模式(/)

而HTML5 模式直接访问子路径会报404,但是也可以解决:在你的服务器上添加一个简单的回退路由

参考

import { createRouter, createWebHistory } from 'vue-router'const router = createRouter({routes,  history: createWebHistory(),})

路由懒加载

当打包构建应用时,JavaScript 包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就会更加高效

实现1        import LoginView from "../views/LoginView.vue"替换成const LoginView = () => import("../views/LoginView.vue")实现2{path: '/login',name: 'login',component: () => import("../views/LoginView.vue")}

路由名

命名路由{name:"About",path:"/about",component:About}使用命名的路由-导航原:this.$router.push("/about")使用命名的路由this.$router.push({name:"About"})使用命名的路由-传参原:<RouterLink :to="'/details/'+item">{{ item }}</RouterLink>使用命名的路由<router-link :to="{ name:'Details',params:{ name:item } }">{{ item }}</router-link>              

别名【alias】

用于访问路径设置多个名字

{alias:"yl",path:"yule",component:YuleNews}               

路由元信息【meta】

有时,你可能希望将任意信息附加到路由上,如过渡名称、谁可以访问路由等

如:利用meta配合导航守卫完成判断用户是否登录在允许打开用户中心页面

  {path: "/home/index",name: 'index',component: () => import("../views/home/Index.vue"),meta: {requiresAuth: true,key: "首页"}},  

动态路由

添加路由

router.addRoute({path:"/news",name:"News",component:News}) 

添加嵌套路由

要将嵌套路由添加到现有的路由中,可以将路由的 name 作为第一个参数(父级name)、

 router.addRoute("News",{path:"yule",component:Yule}) 

添加多个路由

 const currentRouter = [{path:"/news",name:"News",component:News},{path: '/about',name: 'about',component:About}]for(let i = 0;i<currentRouter.length;i++){router.addRoute(currentRouter[i])}  

删除路由

router.removeRoute("about")  

动态路由实战

 编写dynamicRoute.jsconst mange={path: '/work',//工作监督管理name: 'work',component: () => import("../views/WorkMange/index.vue"),meta: {requiresAuth: true,key: "工作监督管理"}}export default mangeimport mangeRouter from "@/router/dynamicRoute.js"onMounted(() => {api.getPermissions({username: loginStore.username,}).then(res => {console.log(res.data);if (res.data.code == 200) {/*用户权限信息获取 */menuStore.menu = res.data.data/*权控-添加动态路由 */const obj = menuStore.menufor (let i in obj) {if (obj[i].permissionDesc === '/work') {router.addRoute('layout', mangeRouter)//嵌套路由记得写上父级名字'layout'}}}}).catch(error => {console.log(error);})})

使用路由

路由导航

RouterLink / RouterView会默认跳转/

 <template>路由对应显示位置<RouterView></RouterView>跳转<RouterLink to="/">首页</RouterLink><RouterLink to="/about">关于</RouterLink></template><script setup>import {RouterLink,RouterView} from "vue-router"</script>  

编程式导航

选项式API

 <template><h3>Home首页</h3><button @click="clickHandler">跳转到About页面</button></template><script>export default {methods:{clickHandler(){this.$router.push("/about")}}}</script>

组合式API

 <template><h3>About关于页面</h3><button @click="clickHandler">跳转到首页</button></template><script setup>import { useRouter } from 'vue-router'const router = useRouter()function clickHandler(){router.push("/")}</script>

嵌套路由

一些应用程序的 UI 由多层嵌套的组件组成。在这种情况下,URL 的片段通常对应于特定的嵌套组件结构

  SportNews.vue<template><h3>体育新闻</h3></template>YuleNews.vue<template><h3>娱乐新闻</h3></template>News.vue<template><h3>新闻</h3><RouterLink to="/news/sport">体育</RouterLink><RouterLink to="/news/yule">娱乐</RouterLink><RouterView></RouterView></template>index.js{path:"/news",component:News,//路由嵌套(注意:path中不再添加/)children:[{path:"sport",component:SportNews},{path:"yule",component:YuleNews}]}

重定向

用于嵌套时默认跳转

 {path:"/news",component:News,redirect:"/news/sport",children:[{path:"sport",component:SportNews},{path:"yule",component:YuleNews}]}


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

相关文章

STL --- 4、算法 Algorithms

目录 1、Algorithms算法的概述和分类 2、Algorithms 常用算法的介绍和使用 3、Algorithms 算法的时间复杂度和空间复杂度 1、Algorithms算法的概述和分类 算法是C STL&#xff08;标准模板库&#xff09;中的算法库&#xff0c;提供了大量的算法函数&#xff0c;可用于各种…

5.22—数学

数学是利用符号语言研究数量、结构、变化以及空间等概念的一门学科&#xff0c;从某种角度看属于形式科学的一种。数学透过抽象化和逻辑推理的使用&#xff0c;由计数、计算、量度和对物体形状及运动的观察而产生。数学家们拓展这些概念&#xff0c;为了公式化新的猜想以及从选…

代理IP在HTTP爬虫中的应用

网络爬虫是一种重要的技术&#xff0c;用于从互联网上获取和分析数据。为了提高爬虫的效率和稳定性&#xff0c;使用代理IP成为一种常见的实践。本文将介绍代理IP的概念及其在HTTP爬虫中的应用。我们将讨论代理IP的选择与获取、代理池的建立和管理&#xff0c;以及解决代理IP使…

Centos7.9基于Kubeasz部署k8s 1.27.1高可用集群

一&#xff1a;kubeasz 的介绍 kubeasz 致力于提供快速部署高可用k8s集群的工具, 同时也努力成为k8s实践、使用的参考书&#xff1b; 基于二进制方式部署和利用ansible-playbook实现自动化&#xff1b;既提供一键安装脚本, 也可以根据安装指南分步执行安装各个组件。 kubea…

java基础入门-12-【API(算法,lambda表达式,练习)】

Java基础入门-12-【API(算法,lambda表达式,练习)】 21、API(算法,lambda表达式,练习)1、常见的七种查找算法:1. 基本查找基本思想示例代码:2. 二分查找基本思想案例演示代码示例:总结二分查找改进3. 插值查找4. 斐波那契查找5. 分块查找`分块查找`的过程:代码示例:…

Rocky Linux 9 x86_64 OVF (sysin)

Rocky Linux 9 x86_64 OVF (sysin) 以社区方式驱动的企业 Linux 请访问原文链接&#xff1a;https://sysin.org/blog/rocky-linux-9-ovf/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org Rocky Linux 9.0 (5.14.0-70.13.1.el9…

MT8395(Genio 1200)处理器性能参数介绍

MT8395(Genio 1200)是一款专为AI与高性能物联网应用而设计的通用型SoC&#xff0c;采用6nm制程工艺&#xff0c;已集成四核A78和四核A55的八核CPU。Genio 1200还集成Mali-G57图形处理器&#xff0c;内置独立的双核AI处理器&#xff0c;可应用于智能家电、中控设备、商业显示、工…

【历史上的今天】5 月 25 日:雅虎与 eBay 联盟;第一次国际万维网会议;Google 街景发布

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2023 年 5 月 25 日&#xff0c;在 2001 年的今天&#xff0c;AMD 对 Transmeta 公司进行战略性投资。Transmeta 公司主要开发并认证创新的计算、微处理器和半导体技术…