Vue Router的使用

news2024/11/19 22:54:09

使用

项目中注入路由器

  1. 在项目中 src 目录下新建 router 目录,其中包含 index.js 路由主文件。
// src/router/index.js

import Vue from 'vue'
import Router from 'vue-router'
import { routes } from './routes.js'

Vue.use(Router)
const router = new Router({
    routes
})

export default router

  1. 新建 routes.js 路由表文件。
// src/router/routes.js

const routes = [
    {
        path: '/component1',
        component: () => import('../components/Component1.vue')
    },
    {
        path: '/component2',
        component: () => import('../components/Component2.vue')
    }
]

export { routes }

  1. main.js 注册路由。
import Vue from 'vue'
import App from './App.vue'
import router from './router/index.js'

Vue.config.productionTip = false

new Vue({
    router,
    render: (h) => h(App)
}).$mount('#app')

  1. 设置路由出口 router-view
<template>
    <div id="app">
        <router-view></router-view>
    </div>
</template>

  1. 验证路由,在网页 url 中输入路由地址 /component1 就能够看到我们的页面了。
    在这里插入图片描述

  1. 以上是路由的基本使用。

动态路由匹配

动态路由是指我们的路由后面携带了动态的参数,例如我有一个新闻详情页面,每个新闻详情页面展示的数据都不同,但是却又使用的是同一个组件。这种情况是可以使用动态路由。

基础案例

  1. 修改路由表,添加匹配动态参数的路由。这里写了两条路由规则代表,不传动态参数时候也能展示该组件,否则页面匹配不到是会空白的。
const routes = [
    {
        path: '/news',
        component: () => import('../components/News.vue')
    },
    {
        path: '/news/:id',
        component: () => import('../components/News.vue')
    }
]

export { routes }

  1. 通过 $route 路由信息对象获取动态路由参数。
<template>
    <div class="news">News id: {{ $route.params.id }}</div>
</template>

  1. 验证路由。

在这里插入图片描述

嵌套路由

嵌套路由其实很简单,但是你思路没想通之前就会觉得很复杂。我们平时使用的页面切换的场景,基本上,一级路由就能实现了。但是实际上项目开发中会经常遇到多层路由的情况,也就是嵌套路由。举个例子,假设现在我不止有新闻页面,我还有一个用户主页面,但是我用户主页面里面又包含了两个子页面,分别是用户信息编辑页面,用户发布帖子页面。

基础案例

  1. 修改路由表,添加用户主页面路由(一级路由)、添加用户信息编辑页面(二级路由)、添加用户发布帖子页面(二级路由)。
// src/routes.js

const routes = [
    {
        path: '/user',
        component: () => import('../components/user/MyIndex.vue'),
        children: [
            {
                path: 'profile',
                component: () => import('../components/user/MyProfile.vue')
            },
            {
                path: 'posts',
                component: () => import('../components/user/MyPosts.vue')
            }
        ]
    }
]

export { routes }

  1. 设置二级路由出口 router-view,因为一级的我们已经设置过了。你要记住,你用到了多少层级路由嵌套,就要设置对应的路由出口,路由出口代表匹配到的组件,会替换掉 router-view 进行展示的。
// components/user/index.vue

<template>
    <div class="user">
        user
        <router-view></router-view>
    </div>
</template>

  1. 验证路由,可以发现 router-view 标签被组件替换掉了。

在这里插入图片描述


  1. 再替换另外一个路由地址,效果依然是正常的。

在这里插入图片描述

编程式导航

在上面的所有案例中,我们都是通过手动替换浏览器地址栏中的路径,从而达到切换路由的效果。那么有没有办法通过 JavaScript 代码的方式进行切换呢?

基础案例

  1. App.vue 页面中通过 $router 路由操作对象中的 push 方法进行路由切换,请记住是 $router ,而不是 $route,这两者是有区别的。一个是操作路由用的,一个是获取路由信息用的。
<!-- src/App.vue -->

<template>
    <div id="app">
        <router-view></router-view>
    </div>
</template>

<script>
export default {
    mounted() {
        setTimeout(() => {
            // 字符串
            this.$router.push('/user/profile')

            // 对象
            // this.$router.push({ path: '/user/posts' })

            // 携带查询参数 query
            // this.$router.push({ path: '/news', query: { id: 'xiaoming' } })

            // 动态路由匹配
            // this.$router.push('/news/' + 'xiaoming')
        }, 1000)
    }
}
</script>
  1. 这里就不验证了,小伙伴们可以自己尝试。

  2. 另外通过路由器操作对象 $routergo 方法是可以实现路由的前进、后退操作的。$router.go(1) 代表前进一步,$router.go(-1) 代表后退一步。

重定向

重定向是需要通过路由表进行配置的,重定向的作用就是当用户访问 /a 路由时,URL 将会被替换成 /b,然后匹配路由为 /b

基础案例

  1. 配置路由表,添加重定向。
// src/router/routes.js

const routes = [
    {
        path: '/user',
        redirect: '/news',
        component: () => import('../components/user/index.vue')
    },
    {
        path: '/news',
        component: () => import('../components/News.vue')
    }
]

export { routes }
  1. 验证路由,我们尝试访问 /user ,看看实际上是不是直接变成了访问 /news 路由。不仅 url 变成了 /news ,展示的路由组件,应该也是 /news 的。小伙伴们需要自行验证一下。

别名

别名其实和重定向很类似,也很容易混淆。例如 /a 路由的别名是 /b,意味着,当用户访问 /b 时,URL 会保持为 /b,但是路由匹配则为 /a,就像用户访问 /a 一样。

  1. 配置路由表,添加别名。
const routes = [
    {
        path: '/user',
        alias: '/news',
        component: () => import('../components/user/index.vue')
    }
]

export { routes }
  1. 验证路由,我们尝试访问 /news,URL 中应该会保持显示为 /news,但是实际上渲染的组件应该是 /user

HTML5 History 模式

Vue Router 默认是 hash 模式 —— 使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载。hash 模式代表 URL 后面有个 # 符号。在传统模式中,我们都是利用 # 来实现锚点功能的。

如果不想要很丑的 hash,我们可以用路由的 history 模式,这种模式充分利用 history.pushState API 来完成 URL 跳转而无须重新加载页面。

const router = new Router({
    mode: 'history',
    routes
})

当你使用 history 模式时,URL 就像正常的 url,例如 http://yoursite.com/user/id 也好看!

原文链接:菜园前端

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1065896.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

EPDB 08、EPDBS 10、PDRV、EPDZA06插装式比例减压阀放大器

比例方向阀W42E-5PS03、W43E-5PS05、W42E-1AS06、W43E-1AS06、插装式S22E-1V08放大器。 该放大器既可用于工业及移动设备应用&#xff0c;也可用于固定安装。因此&#xff0c;电压范围非常宽&#xff0c;在8至35VDC之间变化。这些放大器对欠压和电压尖峰非常不敏感&#xff0c…

浅谈时间流管理体系

不想聊技术&#xff0c;但又想分享一些东西&#xff0c;这篇文章分享下如何构造自己的时间流管理体系以及如何完整的把控一个事件安排统筹&#xff0c;这里对一个大型事件或大型知识体系如何分解为不同问题的小点不做点出&#xff0c;这里只提时间管理体系化。 好处的话也不做阐…

Nginx+Keepalived实现服务高可用

Nginx 和 Keepalived 是常用于构建高可用性&#xff08;High Availability&#xff09;架构的工具。Nginx 是一款高性能的Web服务器和反向代理服务器&#xff0c;而Keepalived则提供了对Nginx服务的健康状态监测和故障切换功能。 下载Nginx 在服务器1和服务器2分别下载nginx …

深入理解 python 虚拟机:原来虚拟机是这么实现闭包的

深入理解 python 虚拟机&#xff1a;原来虚拟机是这么实现闭包的 在本篇文章当中主要从虚拟机层面讨论函数闭包是如何实现的&#xff0c;当能够从设计者的层面去理解闭包就再也不用死记硬背一些闭包的概念了&#xff0c;因为如果你理解闭包的设计原理之后&#xff0c;这些都是…

嵌入式学习笔记(48)什么是I2C通信

10.1.1物理接口&#xff1a;SCL SDA (1)SCL&#xff1a;时钟线&#xff0c;传输CLK&#xff0c;一般是I2C主设备向从设备提供时钟的通道。 (2)SDA&#xff1a;数据线&#xff0c;通信数据都通过SDA线传输。 10.1.2通信特征&#xff1a;串行、同步、非差分、低速 (1)I2C属于…

Python中的多态

迷途小书童 读完需要 3分钟 速读仅需 1 分钟 当我们谈到多态时&#xff0c;可以将其比喻为一个人具有多种身份的能力。在不同的情境下&#xff0c;这个人可以表现出不同的行为和特征。在 Python 中&#xff0c;多态是面向对象编程中的一个重要概念&#xff0c;它允许我们使用相…

PHP 伪协议:使用 php://filter 为数据流应用过滤器

文章目录 参考环境PHP 伪协议概念为什么需要 PHP 伪协议&#xff1f; php://filter概念格式 基本使用普通读写file_get_contents 与 file_put_contentsinclude 过滤器的基本使用base64 的编码与解码rot13 加解密rot13 算法string.rot13 过滤器列表多个过滤器的使用注意事项 处理…

【软件测试】功能测试/接口测试/自动化测试/性能测试/验收测试

软件测试的主要流程 一、测试主要的四个阶段 1.测试计划设计阶段&#xff1a;产品立项之后&#xff0c;进行需求分析&#xff0c;需求评审&#xff0c;业务需求评级&#xff0c;绘制业务流程图。确定测试负责人&#xff0c;开始制定测试计划&#xff1b; 2.测试准备阶段&…

【每日一题】股票价格跨度

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;暴力枚举方法二&#xff1a;单调栈 写在最后 Tag 【单调栈】【设计类】【数组】【2023-10-07】 题目来源 901. 股票价格跨度 题目解读 找出小于等于今天股票价格的最大连续天数&#xff08;从今天往回数&#xff0c;…

AI颠覆法律行业,律师要失业了?

如果要说一个 AI 真正起飞&#xff0c;并且对行业从业者带来的更多是正面影响的垂直行业&#xff0c;小编觉得在目前阶段&#xff0c;法律可以算一个。这个行业有几个特点&#xff1a;对人的依赖很大&#xff0c;专业性很强&#xff0c;大量繁复的文字工作。因此&#xff0c;在…

水土保持方案编制丨点型项目、市政工程、线型工程、矿山工程、水利工程、取土场/弃渣场、补报项目、水土保持监测验收等

目录 专题一 点型水土保持方案编制方法及案例分析 专题二 市政工程水土保持方案编制方法及案例分析 专题三 线型工程水土保持方案编制方法及案例分析 专题四 矿山工程水土保持方案编制方法及案例分析 专题五 水利工程水土保持方案编制方法及案例分析 专题六 取土场、弃渣…

电影产业的数据洞察:爬虫技术在票房分析中的应用

概述 电影产业是一个庞大而复杂的行业&#xff0c;涉及到各种各样的因素&#xff0c;如导演、演员、类型、主题、预算、宣传、口碑、评分、奖项等。这些因素都会影响电影的票房收入&#xff0c;也会反映出电影市场的动态和趋势。为了更好地了解电影产业的数据洞察&#xff0c;…

Python机器学习实战-特征重要性分析方法(6):XGBoost(附源码和实现效果)

实现功能 计算一个特性用于跨所有树拆分数据的次数。更多的分裂意味着更重要。 实现代码 import xgboost as xgb import pandas as pd from sklearn.datasets import load_breast_cancer import matplotlib.pyplot as pltX, y load_breast_cancer(return_X_yTrue) df pd.D…

CMMI5认证哪些企业可以申请

CMMI5认证哪些企业可以申请 什么是CMMI5认证 CMMI&#xff08;Capability Maturity Model Integration&#xff09;是一种用于评估组织的软件工程能力的国际标准。CMMI模型包括5个等级&#xff0c;其中CMMI5是最高等级&#xff0c;代表组织具有达到持续优化和创新的能力。获得…

源码编译dotnetcore的runtime

为了dotnetcore运行时的安可目标&#xff0c;特意在国庆假期研究了怎么编译dotnetcore的runtime。由于我们用的是.net6&#xff0c;最新的是8&#xff0c;所以从github下载的.net6的分支代码进行的编译。查遍了国内外资料&#xff0c;估计微软服务太体贴了&#xff0c;竟然没什…

关于 “高可用集群” 的 从业经验漫谈

关于高可用集群 PART 1 高可用的概念 高可用&#xff08;High Availability&#xff09;是高可用集群&#xff08;High Availability Cluster&#xff09;的简称&#xff0c;至少由2台服务器组成&#xff0c;一般指的是应用服务对客户端的持续可用。高可用集群可以借助多种技术…

SuperMap:开启地理信息的无限可能

文章目录 引言简介SuperMapSuperMap的背景和发展SuperMap的功能特点 SuperMap的应用案例城市规划与管理天气预报与灾害管理物流与运输管理地理信息服务 最佳实践与技巧数据准备与处理地图制作与展示空间分析与决策 展望未来结论 引言 随着现代社会的发展&#xff0c;地理信息系…

CentOS Integration SIG 正式成立

导读CentOS 董事会已批准成立 CentOS Integration Special Interest Group (SIG)。该小组旨在帮助那些在 Red Hat Enterprise Linux (RHEL) 或特别是其上游 CentOS Stream 上构建产品和服务的人员&#xff0c;验证其能否在未来版本中继续运行。 红帽 RHEL CI 工程师 Aleksandr…

性能测试?

目录 一、什么是性能测试 二、系统性能指标 2.1 响应时间 2.2 系统处理能力 2.3 吞吐量 2.4 并发用户数 2.5 错误率 三、资源性能指标 3.1 CPU 3.2 内存 3.3 磁盘吞吐量 3.4 网络吞吐量 四、中间件指标 五、数据库指标 六、稳定性指标 一、什么是性能测试 先看…