news 2026/3/18 19:29:27

【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/3/15 14:18:11

元气AI助手全攻略:国产智能Bot的颠覆式体验与实战技巧

前言 在当今快节奏的数字时代&#xff0c;AI助手已成为提升效率的必备工具。本文将全面介绍元气AI助手这一国产智能解决方案&#xff0c;从基础功能到高阶应用&#xff0c;帮助用户彻底掌握这款被誉为"Claw国产平替"的强大工具。 一、认识元气AI&#xff1a;不只是另…

作者头像 李华
网站建设 2026/3/18 12:37:48

数字员工与AI销冠系统是什么?对企业意味着哪些转型机遇?

数字员工通过自动化和智能管理&#xff0c;为企业优化业务流程、降低成本和提升效率开辟了新路径。以AI销冠系统为基础&#xff0c;数字员工能够高效处理大量日常任务&#xff0c;减少人工操作带来的时间损耗。在客户联络环节&#xff0c;数字员工不仅能够进行准确的客户信息收…

作者头像 李华
网站建设 2026/3/17 11:51:39

<span class=“js_title_inner“>AI那些趣事系列115:一文读懂 AI Agents 与 Agentic AI:从 “单兵作战” 到 “团队协作” 的智能进化</span>

导读&#xff1a;本文是 “数据拾光者” 专栏的第一百一十五篇文章&#xff0c;这个系列聚焦自然语言处理和大模型相关实践。今天主要是关于AI Agents与Agentic AI的学习笔记。欢迎转载&#xff0c;转载请注明出处以及链接&#xff0c;更多关于自然语言处理、推荐系统优质内容请…

作者头像 李华
网站建设 2026/3/15 15:18:49

SmarterMail修复CVSS 9.3分关键远程代码执行漏洞

SmarterTools已修复SmarterMail邮件软件中的两个新安全漏洞&#xff0c;其中包括一个可能导致任意代码执行的关键安全缺陷。该漏洞编号为CVE-2026-24423&#xff0c;CVSS评分高达9.3分&#xff08;满分10分&#xff09;。根据CVE.org对该漏洞的描述&#xff1a;"SmarterTo…

作者头像 李华