news 2026/4/16 13:01:57

【Vue】路由介绍 vue-router使用 重定向 路由模式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Vue】路由介绍 vue-router使用 重定向 路由模式

文章目录

  • Ⅰ. 基本介绍
    • 一、单页应用程序介绍
      • 1. 概念
      • 2. 具体示例
      • 3. 单页应用 vs 多页应用
    • 二、路由介绍
      • 1. 路由的介绍
      • 2. 如何实现路由
      • 3. 什么是`vue-router`
    • 三、组件存放目录
      • 1. 组件分类
      • 2. 存放目录
  • Ⅱ. 基本使用和模块封装
    • 一、基本使用(4+2)
      • 1. 四个固定步骤
      • 2. 两个核心步骤
      • 3. 路由运作原理
    • 二、抽离封装路由模块
      • 1. 问题
      • 2. 目标
      • 3. 代码示例
  • Ⅲ. 更多配置
    • 一、重定向
      • 1. 问题
      • 2. 解决方案
      • 3. 语法
    • 二、404页面
      • 1. 作用
      • 2. 语法
        • ① Vue Router 3(Vue2 生态)
        • ② Vue Router 4(Vue3 生态)
        • 两种语法的区别
      • 实例代码
    • 三、路由模式
      • 1. 问题
      • 2. 语法

Ⅰ. 基本介绍

一、单页应用程序介绍

1. 概念

单页应用程序:SPA(Single Page Application)是指所有的功能都在一个HTML页面上实现。

2. 具体示例

  • 单页应用网站:网易云音乐 https://music.163.com/
  • 多页应用网站:京东 https://jd.com/

3. 单页应用 vs 多页应用

  • 单页应用类网站:系统类网站/内部网站/文档类网站/移动端站点
  • 多页应用类网站:公司官网/电商类网站

二、路由介绍

1. 路由的介绍

生活中的路由:设备和 ip 的映射关系

Vue中的路由:路径和组件的映射关系

单页面应用程序,之所以开发效率高,性能好,用户体验好,最大的原因就是:页面按需更新

比如当点击【发现音乐】和【关注】时,只是局部更新内容,对于头部是不更新的,要按需更新,首先就需要明确:访问路径和组件的对应关系!

那访问路径和页面的对应关系如何确定呢?路由

2. 如何实现路由

使用 vue-router,当修改地址栏路径时,切换显示的组件即可。

3. 什么是vue-router

Vue Router

vue-router是 Vue 官方的一个路由插件,是一个第三方包:

三、组件存放目录

1. 组件分类

.vue文件分为两类,仅仅是为了便于理解和管理,但二者本质无区别

  • 页面组件:配合路由切换,展示整个页面,不复用的
  • 复用组件:用于组装页面组件,可复用的

2. 存放目录

  1. 页面组件 -> 页面展示 -> 配合路由使用 -> 放置在src/views目录下
  2. 复用组件 -> 用于组装页面组件 -> 放置在src/components目录下

Ⅱ. 基本使用和模块封装

一、基本使用(4+2)

1. 四个固定步骤

  1. 下载VueRouter模块

    npminstallvue-router
  2. 导入相关函数

    import{createRouter,createWebHashHistory}from'vue-router'
  3. 创建路由实例

    constrouter=createRouter({// 哈希模式, 路径带 #history:createWebHashHistory(),routes:[// 路由表规则, 即 path 与 component 的对应关系]})
  4. 注册。将路由实例注册到应用中,让规则生效

    app.use(router)

当完以上四步之后,就可以看到浏览器地址栏中的路径变成了/#/的形式。这表示项目的路由已经被Vue-Router管理了。

2. 两个核心步骤

  1. views目录下,创建需要的页面组件,并配置路由规则

    views/Find.vue文件:
<script setup></script><template><divclass="find"><p>发现音乐</p><p>发现音乐</p><p>发现音乐...</p></div></template><style scoped></style>

views/My.vue文件:

<script setup></script><template><divclass="my"><p>我的音乐</p><p>我的音乐</p><p>我的音乐...</p></div></template><style scoped></style>

views/Friend.vue文件:

<script setup></script><template><divclass="friend"><p>朋友</p><p>朋友</p><p>朋友...</p></div></template><style scoped></style>

main.js文件:

// 导入两个相关函数// createRouter(): 创建路由实例// createWebHashHistory(): 创建哈希模式的路由, 路径带 #import{createRouter,createWebHashHistory}from'vue-router'// 导入 3 个页面组件importFindfrom'@/views/Find.vue'importFriendfrom'@/views/Friend.vue'importMyfrom'@/views/My.vue'// 创建路由实例constrouter=createRouter({history:createWebHashHistory(),routes:[{path:'/find',component:Find},{path:'/my',component:My},{path:'/friend',component:Friend}]})// 注册app.use(router)
  1. 给路由出口(即路径匹配的组件,要显示的位置)

App.vue文件:

<script setup></script><template><!--路由出口--><router-view/></template>

3. 路由运作原理

当浏览器url改变时,匹配路由表数组中的path值,如果命中了,则把相应的component渲染到<router-view />的位置;否则显示空白。

二、抽离封装路由模块

1. 问题

路由配置代码都写在main.js中合适吗?显然不合适,会让main.js代码变得臃肿。

2. 目标

将路由模块抽离出来。好处:利于管理和维护

3. 代码示例

新建router/index.js文件:

import{createRouter,createWebHashHistory}from'vue-router'// 注意: 脚手架环境下 @ 代指 src 目录,可以用于快速引入组件importFindfrom'@/views/Find.vue'importFriendfrom'@/views/Friend.vue'importMyfrom'@/views/My.vue'constrouter=createRouter({history:createWebHashHistory(),routes:[{path:'/find',component:Find},{path:'/my',component:My},{path:'/friend',component:Friend}]})// 导出路由实例exportdefaultrouter

main.js文件:

import{createApp}from'vue'importAppfrom'./App.vue'// 导入路由实例importrouterfrom'./router'constapp=createApp(App)// 注册app.use(router)app.mount('#app')

Ⅲ. 更多配置

一、重定向

1. 问题

在网页打开时,url默认是/路径,未匹配到组件时,会出现空白内容,如下所示:

2. 解决方案

重定向:匹配/后,强制跳转到其它页面,比如跳转到/find路径,避免页面空白。

3. 语法

在创建路由createRouter()时候添加对/的重定向路径,如下所示:

constrouter=createRouter({...routes:[// 访问 / , 自动跳转到 /find{path:'/',redirect:'/find'},...]})

二、404页面

1. 作用

当路径找不到匹配时,给个提示页面.

2. 语法

① Vue Router 3(Vue2 生态)
{path:'*',component:_404}
  • *通配符写法,只能用在最后一条路由。
  • 匹配任意路径,通常用于 404。
  • 缺点:没法拿到具体被匹配的路径字符串。
② Vue Router 4(Vue3 生态)
{path:'/:pathMatch(.*)*',component:NotFound}{path:'/user-:afterUser(.*)',component:UserGeneric}
  • 用正则样式的参数写法。
  • /:pathMatch(.*)*表示 “匹配所有路径片段”,结果会放在route.params.pathMatch里。
  • /user-:afterUser(.*)表示匹配/user-xxx开头的路径,并把xxx后面部分存在params.afterUser
      • :afterUser→ 这是一个动态路由参数名,访问时的值会放到route.params.afterUser
      • (.*)→ 这是一个正则表达式,约束参数可以匹配的内容。
        • .表示任意字符
        • *表示出现 0 次或多次
        • 所以(.*)就是 “匹配任意长度的字符串”
  • 优点:更灵活,可以在 404 页面显示 “你访问的路径是 xxx”。
两种语法的区别
  • path: '*'→ Vue Router 3 的老写法,简单粗暴,只能兜底。
  • /:pathMatch(.*)*→ Vue Router 4 的推荐写法,支持参数提取和更强的模式匹配。

实例代码

views/404.vue文件:

<script setup></script><template><div><h3>404</h3><p>你访问的页面去了月球</p><router-link to="/">去首页</router-link></div></template>

router/index.js文件:

import_404from'@/views/404'constrouter=createRouter({routes:[...{path:'/:pathmatch(.*)*',component:_404}]})exportdefaultrouter

三、路由模式

1. 问题

路由的路径看起来不好看,开头有#,能否切成真正路径形式?

  • hash路由(默认),例如:http://localhost:5173/#/find,不够美观!
  • history路由(开发常用),例如:http://localhost:8080/find(缺点是刷新或直接访问时会请求服务器需要后端配置history fallback

2. 语法

import{createRouter,createWebHashHistory,createWebHistory}from'vue-router'constrouter=createRouter({// 历史模式: createWebHistory(), 路径带 #// 哈希模式: createWebHashHistory(), 路径不带 #// history: createWebHashHistory(),history:createWebHistory(),...})

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 9:59:56

线上剧本杀APP前端功能解析:沉浸剧情与互动体验的双重落地

线上剧本杀APP以剧情沉浸与实时互动为核心&#xff0c;通过精细化前端功能设计&#xff0c;将线下桌面推理的氛围感与线上操作的便捷性深度融合。在弱化营销属性的基础上&#xff0c;搭建起从剧本筛选、组队匹配到游戏推演、复盘总结的完整体验链路&#xff0c;以人性化交互与场…

作者头像 李华
网站建设 2026/4/16 11:01:40

三成帖子完全重复,近七成Moltbook帖子只是在刷存在感!刚刚,研究爆料:Agent的胡闹互坑,或是一场社交表演!网友:有欣赏价值

LLMs 的消息重复度极高。重复消息共享率&#xff08;任何重复&#xff09;&#xff1a;36.3%。还有近似重复。Top Moltbook 重复出现 434 次&#xff0c;跨越 427 个线程&#xff08;对我来说是一个强烈的“跨线程相同模板”信号&#xff09;。并且成对 Jaccard 相似度也显示相…

作者头像 李华
网站建设 2026/4/14 4:27:32

用 AgentScope Java 开家 AI 奶茶店

作者&#xff1a;屿山 AgentScope 是阿里云推出的一款以开发者为核心&#xff0c;专注于智能体开发的开源框架 。 它的核心目标是解决智能体在构建、运行和管理中的难题&#xff0c;提供一套覆盖“开发、部署、调优”全生命周期的生产级解决方案&#xff0c;让智能体应用的开发…

作者头像 李华
网站建设 2026/4/16 12:52:07

鸽子公母检测仪 鸽子性别测定仪

Q1&#xff1a;鸽子性别测定仪的核心定位是什么&#xff1f;与传统鉴别方式相比有何核心优势&#xff1f; A&#xff1a;核心定位是“无创式鸽子性别精准鉴别终端”&#xff0c;主打“非侵入、零伤害、高精准、易操作”&#xff0c;专为鸽子及各类鸟类性别鉴别设计&#xff0c…

作者头像 李华