vue学习五:前端路由VueRouter

官网:安装 | Vue Router

vuerouter的主要优点有

  • 实现单页面应用(SPA)路由切换不用刷新整个页面,只更新视图部分,实现页面之间的跳转。

  • 管理组件与 URL 的映射关系 定义哪个路径对应显示哪个组件,比如 /home 显示首页组件,/user 显示用户页组件。

在官网找到安装命令,vue2安装3版本,vue3安装4+版本

复制代码
npm install vue-router@4

在目录中创建components包,存放显示页面组件,添加任意字段可供显示即可

(注意组件名必须同时遵守大驼峰以及多单词规则,Demo1以及demoone命名均会报错)

router包 存放路由规则,所创建的index.js是默认访问目录,可以省去路径详写。

index.js文件:

复制代码
// 1. 导入 Vue Router 4 的核心方法(Vue 3 不再需要导入 Vue 本身)
import { createRouter, createWebHashHistory } from 'vue-router'

// 2. 导入页面组件(路径保持不变)
import DemoOne from '../components/DemoOne.vue'
import DemoTwo from '../components/DemoTwo.vue'
import DemoThree from '../components/DemoThree.vue'

// 3. 定义路由规则(和原逻辑一致,仅格式优化)
const routes = [
  { path: '/demo1', component: DemoOne },
  { path: '/demo2', component: DemoTwo },
  { path: '/demo3', component: DemoThree }
]

// 4. 创建路由实例(Vue 3 核心写法:createRouter + 明确指定history模式)
const router = createRouter({
  // 原Vue2的hash模式,对应Vue3的createWebHashHistory()
  history: createWebHashHistory(),
  routes // 路由规则
})

// 5. 导出路由实例,供main.js挂载
export default router

App.vue关键代码:

复制代码
<template>
  <div id="app">
    <!-- 声明路由链接 -->
    <router-link to="/demo1">todemo1</router-link>
    <router-link to="/demo2">todemo2</router-link>
    <router-link to="/demo3">todemo3</router-link>

    <!-- 声明路由占位标签 -->
    <router-view></router-view>
  </div>
</template>

链接传输至demo1,网页显示链接为todemo1,类似html的<a>标签。

并在main.js中导入router路由路径

全程逻辑:App.vue被挂载后,浏览器显示routerlink组件中点击名为todemo1的链接名后通过/demo1的路由规则链接跳转至DemoOne.vue的组件,然后被打包至App.vue的routerview占位符,然后再通过export导出。注意import导入对应的组件

访问主页

点击其中链接会跳转对应组件并访问界面

在routes规则中可设置redirect来定义默认路径下自动跳转到哪一个组件

路由规则可以嵌套:在任一组件中,在template标签内可嵌套routerlink的链接跳转标签并加上router view占位

index.js中:路径自定义,默认children的根目录跟随父目录,要与DemoOne组件中的嵌套链接一致

注:children中的path不要加斜杠吗,不然会识别成绝对路径,会与父目录脱离

结果如下:

动态路由绑定:

在示例组件中加入子组件

然后在index.js中添加动态属性,":"即表示动态绑定后面的子组件索引。此时访问任意三个其一搜索记录都会跳转至Demo3Chird

在Demo3Chird组件中,可利用{{ $route.params.id }}来读取demo3的子组件的动态索引,索引名"id"与route路由规则中的":id"应保持一致。自定义为其他变量名依旧生效,但要求两端同名。

访问结果:

同时动态组件索引的获取还可以通过修改路由规则 ,改为由属性提供传递:

在index.js中于对应子组件路由添加props:true来表示path索引值利用属性的方式传递

然后添加vm层创建对应属性传递逻辑,注意props值得加引号。

导航守卫:类似后端的拦截器,to表示访问目标,from表示当前导航正要离开的路由

相关推荐
史迪仔01122 小时前
[QML] 交互事件深度解析:鼠标、键盘、拖拽
前端·c++·qt
_李小白2 小时前
【OSG学习笔记】Day 49: 实战鼠标拾取与高亮显示
笔记·学习·计算机外设
ZC跨境爬虫2 小时前
海南大学交友平台开发实战 day11(实现性别图标渲染与后端数据关联+Debug复盘)
前端·python·sqlite·html·json
GISer_Jing2 小时前
前端JS面试6大核心考点详解
前端·javascript·面试
ai大模型中转api测评2 小时前
2026年前端新工具:Gemini 3.1 SVG工作流从Prompt到部署
前端·人工智能·prompt·api
yyuuuzz2 小时前
独立站搭建:从基础到避坑的实战分享
前端·javascript·github
何如呢2 小时前
FIFO的IP核学习
学习·fpga开发
星空椰2 小时前
JavaScript 基础入门:从零开始掌握变量与数据类型
开发语言·前端·javascript·ecmascript
千寻简2 小时前
一个让 Claude Code 顺手很多的状态栏插件:claude-hud
前端·后端