Vue3路由——基本使用、动态路由、路由正则、重复参数、嵌套路由、编程式导航、命名路由、重定向、别名、路由模式与导航守卫
创始人
2024-01-22 15:52:06

文章目录

    • P23 Vue3路由的基本使用
    • P24 动态路由和404NotFound
      • 动态路由
      • 404NotFound
    • p25 路由正则与重复参数
      • 路由正则
      • 重复参数
    • p26 嵌套路由
    • p27 使用js跳转页面(编程式导航)
    • p28 命名路由与重定向别名
      • 命名路由
      • 重定向
      • 别名
    • p29 路由模式与导航守卫

P23 Vue3路由的基本使用

npm init vite-app projectname
cd projectname
yarn
yarn add vue-router@4 --save

本视频不全,所以去看了晓舟老师的手把手教你学Vue3-路由基础-页面跳转的视频

App.vue


router/index.js

import { createRouter, createWebHashHistory } from 'vue-router'
import Home from '../components/Home.vue'
import Blog from '../components/Blog.vue'const routes = [{ path: '/home', component: Home },{ path: '/blog', component: Blog },
]const router = createRouter({history: createWebHashHistory(),routes
})export default router

main.js

import router from './router'const app = createApp(App)
app.use(router)
app.mount('#app')

P24 动态路由和404NotFound

动态路由

个人认为老师讲的不太详细,看完老师的这一节后,又去看了晓舟老师的手把手教你学Vue3-路由传参(动态路由)

列表页直接到详情页 (没有公共的部分)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SMRNiTzm-1668577479177)(C:\Users\张丽君\Pictures\堆糖\动态路由.gif)]

App.vue


router/index.js

import { createRouter, createWebHashHistory } from 'vue-router'
import List from '../components/List.vue'
import Blog from '../components/Blog.vue'const routes = [{ path: '/', component: List },{ path: '/blog/:id', component: Blog },
]const router = createRouter({history: createWebHashHistory(),routes
})export default router

List.vue


Blog.vue


404NotFound

NotFound.vue


router.js

import { createRouter, createWebHashHistory } from 'vue-router'
import NotFound from '../components/NotFound.vue'const routes = [{ path: '/:path(.*)', component: NotFound }
]const router = createRouter({history: createWebHashHistory(),routes
})export default router

p25 路由正则与重复参数

路由正则

router/index.js

import { createRouter, createWebHashHistory } from 'vue-router'
import NotFound from '../components/NotFound.vue'
import Article from '../components/Article.vue'const routes = [{ path: '/article/:id(\\d+)', component: Article },{ path: '/:path(.*)', component: NotFound }
]const router = createRouter({history: createWebHashHistory(),routes
})export default router

Article.vue


在这里插入图片描述

重复参数

参考文档:https://router.vuejs.org/zh/guide/essentials/route-matching-syntax.html#%E5%8F%AF%E9%87%8D%E5%A4%8D%E7%9A%84%E5%8F%82%E6%95%B0

在这里插入图片描述

import { createRouter, createWebHashHistory } from 'vue-router'
import Film from '../components/Film.vue'
const routes = [{ path: '/film/:id+', component: Film },
]
const router = createRouter({history: createWebHashHistory(),routes
})
export default router

p26 嵌套路由

路由里面再使用路由
在这里插入图片描述

index.js

import { createRouter, createWebHashHistory } from 'vue-router'import User from '../components/User.vue'
import HengBan from '../components/HengBan.vue'
import ShuBan from '../components/ShuBan.vue'const routes = [{path: '/user',component: User,children: [{path: 'hengban', component: HengBan},{path: 'shuban', component: ShuBan}]}
]const router = createRouter({history: createWebHashHistory(),routes
})export default router

User.vue


HengBan.vue


p27 使用js跳转页面(编程式导航)

之前可以使用

参考文档——编程式导航

Page.vue


index.js

import { createRouter, createWebHashHistory } from 'vue-router'
import List from '../components/List.vue'
import Blog from '../components/Blog.vue'
import NotFound from '../components/NotFound.vue'import User from '../components/User.vue'
import HengBan from '../components/HengBan.vue'
import ShuBan from '../components/ShuBan.vue'
import Page from '../components/Page.vue'const routes = [{ path: '/', component: List },{ path: '/blog/:id', component: Blog, name: 'blog' },{ path: '/:path(.*)', component: NotFound },{path: '/user',component: User,children: [{path: 'hengban', component: HengBan},{path: 'shuban', component: ShuBan}]},{path: '/page',component: Page}
]const router = createRouter({history: createWebHashHistory(),routes
})export default router

p28 命名路由与重定向别名

router.replace router.go

router.replace替换页面 前进后退 不能再用

router.go前进或者后退一页


命名路由

import { createRouter, createWebHashHistory } from 'vue-router'import Shop from '../components/Shop.vue'
import LeftSideBar from '../components/LeftSideBar.vue'
import RightSideBar from '../components/RightSideBar.vue'
const routes = [{path: '/shop',components: {default: Shop,LeftSideBar,// 它们与 `` 上的 `name` 属性匹配RightSideBar}}
]const router = createRouter({history: createWebHashHistory(),routes
})export default router

App.vue


在这里插入图片描述

重定向

{path: '/mall',redirect: '/shop'
}

别名

const routes = [{ path: '/', component: Homepage, alias: '/home' }]

p29 路由模式与导航守卫

hash 路由兼容更好,但是带#显得丑些, histroy 和正常 url 路径一样,但是需要在服务器进行单独配置。
hash 模式是用 createWebHashHistory() 创建的: 
用 createWebHistory() 创建 HTML5 模式,推荐使用这个模式:
import { createRouter, createWebHashHistory } from 'vue-router'
import Page from '../components/Page.vue'const routes = [{path: '/page',component: Page,// 路由级别的导航守卫beforeEnter: (to, from, next) => {// ...}},]
const router = createRouter({history: createWebHashHistory(),routes
})
// 全局注册前置守卫
router.beforeEach((to, from, next) => {})export default router

相关内容

热门资讯

猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
ps局部放大 放大某个部位的图... 软件类学习建议:边看边练习,可以先收藏后学习。一、使用Ctrl快捷键放大:Ctrl + +缩小:Ct...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
衡水一中在哪 兰州分校衡水一中 新甘肃客户端兰州6月6日讯(新甘肃·甘肃日报记者 曹立萍)今天上午,由中铁二十局市政公司承建的河北衡...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...