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

相关推荐
小雨下雨的雨1 天前
井字棋AI机器人实现详解 - Minimax算法实战-鸿蒙PC Electron框架完成
前端·人工智能·算法·华为·electron·鸿蒙
数智工坊1 天前
机器人运动控制:采样、优化与学习三大流派深度对比与实战
android·学习·机器人
ZC跨境爬虫1 天前
跟着 MDN 学JavaScript day_7:数学运算与逻辑判断实战测试
开发语言·前端·javascript·学习·ecmascript
fangdengfu1231 天前
ES分析系统各个服务日志占用量
java·前端·elasticsearch
JustHappy1 天前
古法编程秘籍(六):程序到底是怎么跑起来的?从 IO 到中断,一次讲明白
前端·后端·全栈
HYCS1 天前
用pixi.js实现fabric.js(六):从线性代数的角度理解编辑器交互
前端·javascript·canvas
卷帘依旧1 天前
useImperativeHandle的作用
前端
MartinYeung51 天前
[论文学习]隐私保护联邦特徵选择与差分隐私的的工程实践框架
学习
卷帘依旧1 天前
Hooks在Fiber上的存储原理
前端