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表示当前导航正要离开的路由

相关推荐
IT_陈寒4 分钟前
用Vue时这个响应式陷阱坑了我一整天
前端·人工智能·后端
风骏时光牛马11 分钟前
企业客户信息管理数据库
前端
paopaokaka_luck16 分钟前
个人综合管理小程序(echarts数据看板、健康数据记录与趋势查看、目标拆解和进度管理、日程待办与番茄钟、习惯打卡、收支统计、个人生活记录、跨模块智能提醒)
前端·javascript·spring·小程序·数据分析·echarts·生活
霸道流氓气质33 分钟前
Graph Studio Web IDE 深度实战:可视化编排、断点调试与生产级运维全指南
运维·前端·ide
Orange_sparkle40 分钟前
langgraph快速入门
学习·ai·typescript·deepseek·claude code
福兮说8 小时前
前端下载大文件,点了按钮半天没反应:fetch + blob 的三个问题和三种替代写法
前端·javascript·性能优化·文件下载
GreenTea8 小时前
我把 Agent 的 while 循环拆掉了:一种你可能没想到的 Agent 架构
前端·后端·架构
科技观察哨9 小时前
六足平台选型与纳米定位系统集成:HEB-640六自由度位移台在半导体光刻对准中的参数边界与国产替代评估
前端·人工智能
差不多的周周9 小时前
《骨架上下文:基于零镜头骨架的动作识别的骨架侧上下文提示学习》论文核心部分详解
学习