【vue2第十六章】VueRouter 声明式导航(跳转传参)、路由重定向、页面未找到的提示页面404、vue路由模式设置

news2024/11/24 2:56:28

声明式导航(跳转传参)

在一些特定的需求中,跳转路径时我们是需要携带参数跳转的,比如有一个搜索框,点击搜索的按钮需要跳转到另外一个页面组件,此时需要把用户输入的input框的值也携带到那页面进行发送请求,请求数据。

跳转传参分为:

  1. 查询参数传参
    在这里插入图片描述
    直接在router-link标签的to属性像get请求方式一样传参数:
<ul class="menu">
        <!-- ?后面跟参数 多个参数使用&连接 -->
        <router-link to="/index?title=首页&id=1">首页</router-link>
        <router-link to="/fine?title=发现&id=2">发现</router-link>
        <router-link to="/friend?title=朋友&id=3">朋友</router-link>
      </ul>

跳转的页面获取参数直接使用:模板语法{{ $route.query.title }}就可以获取,在js代码中需要在最前面加this如:

this.$route.query.title
<template>
    <div>
      <!-- 模板语法获取参数 -->
      <p>{{ $route.query.title }}</p>
      <p>我的首页</p>
      <p>我的首页</p>
    </div>
  </template>
  <script>
  export default {};
  </script>
  
  <style>
  </style>
  1. 动态路由传参
    动态路由传参就是在路由规则上面做手脚。
    在这里插入图片描述

在路由配置中:

import MyFine from '@/views/MyFine.vue'
import MyFriend from '@/views/MyFriend.vue'
import MyIndex from '@/views/MyIndex.vue'
import VueRouter from 'vue-router'
import Vue from 'vue'

Vue.use(VueRouter)

const router = new VueRouter({
    routes:[
    //修改为 path:"/路径名/:参数名"
      {path:"/fine/:id",component:MyFine},
    //修改为 path:"/路径名/:参数名"
      {path:"/friend/:id",component:MyFriend},
    //修改为 path:"/路径名/:参数名"
      {path:"/index/:id",component:MyIndex},
    ],
    linkActiveClass:"active",
    linkExactActiveClass:"exact-active"
  });

export default router;

配置导航链接:直接在路由后面跟上 /参数值

		<!-- 修改为to="/路径/参数值" -->
        <router-link to="/index/1">首页</router-link>
        <router-link to="/fine/2">发现</router-link>
        <router-link to="/friend/3">朋友</router-link>

跳转页面获取参数(在html中):

    <div>
      <!-- 模板语法获取参数 -->
      <p>{{ $route.params.id }}</p>
      <p>我的首页</p>
      <p>我的首页</p>
    </div>

在js中获取参数:

this.$route.params.id

问题:配了路由 path:“/search/:words”为什么按下面步骤操作,会未匹配到组件,显示空白?
原因: /search/:words 表示,必须要传参数。如果不传参数,也希望匹配,可以加个可选符”?"
在参数后方跟一个?就表示可传参也可不传了

     // path:"/路径/:参数名?"
      {path:"/fine/:id?",component:MyFine},

两种方式的优点
在这里插入图片描述

路由重定向

在项目启动时,页面的内容时空的,因为他的路径是下图这样的:
在这里插入图片描述
那我们如何将这个默认路由改为首页的路由,让页面刚进入的时候就重定向到首页呢?
在这里插入图片描述
修改index.js里面的代码:
配置当访问到"/"时,就用redirect属性重定向到需要显示的页面,这样就可以解决页面进入时空白的问题
也可以使用重定向做一些其他的功能不限于此,看需求。

import MyFine from '@/views/MyFine.vue'
import MyFriend from '@/views/MyFriend.vue'
import MyIndex from '@/views/MyIndex.vue'
import VueRouter from 'vue-router'
import Vue from 'vue'
Vue.use(VueRouter)

const router = new VueRouter({
    routes:[
    //配置当访问到"/"时,就用redirect属性重定向到需要显示的页面,这样就可以解决页面进入时空白的问题
      {path:"/",redirect:'/index'},
      {path:"/fine",component:MyFine},
      {path:"/friend",component:MyFriend},
      {path:"/index",component:MyIndex},
    ],
    linkActiveClass:"active",
    linkExactActiveClass:"exact-active"
  });

export default router;

页面未找到的提示页面404

在这里插入图片描述
这里得创建一个提示页面组件,这是我创建的:

<template>
  <div>
    <h1>404</h1>
    <h3>页面未找到哟</h3>
  </div>
</template>

<script>
export default {

}
</script>

然后再路由模块中修改代码,添加 {path:"*",component:NotFind}
注意:一定要放到路由注册得最底部,因为vue找路由路径是从上往下找,而这个*代表所有路径都可以匹配,要让它找完前面所有的路由,才表示没有,最后匹配404页面。

import MyFine from '@/views/MyFine.vue'
import MyFriend from '@/views/MyFriend.vue'
import MyIndex from '@/views/MyIndex.vue'
import NotFind from '@/views/NotFind.vue'

import VueRouter from 'vue-router'
import Vue from 'vue'

Vue.use(VueRouter)

const router = new VueRouter({
    routes:[
      {path:"/",redirect:'/fine'},
      {path:"/fine",component:MyFine},
      {path:"/friend",component:MyFriend},
      {path:"/index",component:MyIndex},
      //放到最底部 * 匹配所有
      {path:"*",component:NotFind}
    ],
    linkActiveClass:"active",
    linkExactActiveClass:"exact-active"
  });

export default router;

vue路由模式设置

问题:路由的路径看起来不自然有#,能否切成真正路径形式?
在这里插入图片描述

hash路由(默认) 例如: http://localhost:8080/#/home
history路由(常用) 例如: http://localhost:8080/home (以后上线需要服务器端支持)

import MyFine from '@/views/MyFine.vue'
import MyFriend from '@/views/MyFriend.vue'
import MyIndex from '@/views/MyIndex.vue'
import NotFind from '@/views/NotFind.vue'
import VueRouter from 'vue-router'
import Vue from 'vue'

Vue.use(VueRouter)
const router = new VueRouter({
//设置模式为history
    mode:"history",
    routes:[
      {path:"/",redirect:'/fine'},
      {path:"/fine",component:MyFine},
      {path:"/friend",component:MyFriend},
      {path:"/index",component:MyIndex},
      {path:"*",component:NotFind}
    ],
    linkActiveClass:"active",
    linkExactActiveClass:"exact-active"
  });

export default router;

修改之后浏览器地址栏:
在这里插入图片描述

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

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

相关文章

golang validator 包的使用指北

看到 validator 咱们第一反应会想起啥&#xff1f;见名知意我就可以知道他是一个验证器&#xff0c;如果用过 gin web 框架的同学&#xff0c;自然是用过 gin 里面的 validator&#xff0c;只不过 gin 中使用的关键字是 binding 去做标识 开门见山 Validator 实际上是一个验证…

为什么要使用设计模式,以及使用设计模式的好处

在软件开发中&#xff0c;衡量软件质量只要包含如下指标&#xff1a; 正确性可维护性可读性可扩展性简洁性可测试性健壮性灵活性可复用性 然而&#xff0c;对于一些刚入行的新程序员来说&#xff0c;往往会注意不到上面这些问题&#xff0c;从而产生了一些让人头皮发麻的烂代…

用python实现基本数据结构【04/4】

说明 如果需要用到这些知识却没有掌握&#xff0c;则会让人感到沮丧&#xff0c;也可能导致面试被拒。无论是花几天时间“突击”&#xff0c;还是利用零碎的时间持续学习&#xff0c;在数据结构上下点功夫都是值得的。那么Python 中有哪些数据结构呢&#xff1f;列表、字典、集…

5分钟 将“.py”文件转为“.pyd”文件

代码&#xff1a; from distutils.core import setup from distutils.extension import Extension from Cython.Build import cythonize import osfile_list os.listdir("./") extensions [] for file in file_list:if file.endswith(".py") and file !…

软件界面常见的布局窗口基本布局和名字

软件基本界面分布 下图是PS界面的各个功能块布局&#xff0c;&#xff08;图片来源网络&#xff09; 基本界面功能 常见的界面中&#xff0c;菜单栏和工具栏一般都是挨着的&#xff0c;属性窗口在右边&#xff0c;例如excel 程序编程软件界面中 一般比普通的软件多出来工…

linux-OpenSSL升级

1.安装编译所需的安装包 yum install -y gcc make perl zlib-devel 2.从 OpenSSL 官网下载&#xff08;https://www.openssl.org/source/openssl-1.1.1v.tar.gz&#xff09; 注:如果原先版本为1.x.x,升级时还是需要选择1.x.x 3. 编译安装 # 解压tar -xvf openssl-1.1.1v.tar…

flyway7.1.1适配人大金仓postgres版本

1、进入flyway github仓库下载flyway7.1.1版本源码&#xff0c;搜索7.1.1&#xff0c;下载地址为&#xff1a;https://github.com/flyway/flyway/releases 2、解压源码&#xff0c; 新建目录kingbase&#xff0c;将postgres目录文件拷贝进kingbase&#xff0c;修改下文件名&…

OpenCV(三十三):计算轮廓面积与轮廓长度

1.介绍轮廓面积与轮廓长度 轮廓面积&#xff08;Contour Area&#xff09;是指轮廓所包围的区域的总面积。通常情况下&#xff0c;轮廓面积的单位是像素的平方。 轮廓长度&#xff08;Contour Length&#xff09;又称周长&#xff08;Perimeter&#xff09;&#xff0c;表示轮廓…

华为云云耀云服务器L实例评测|在Linux下部署Etherpad文档编辑器

华为云云耀云服务器L实例评测&#xff5c;在Linux下部署Etherpad文档编辑器 一、前言1.1 云耀云服务器L实例简介1.2 Etherpad简介 二、本次实践介绍2.1 本次实践简介2.2 本次环境规划 三、购买云耀云服务器L实例3.1 购买云耀云服务器L实例3.3 查看云耀云服务器L实例状态3.4 重置…

Pytorch3D多角度渲染.obj模型

3D理解在从自动驾驶汽车和自主机器人到虚拟现实和增强现实的众多应用中发挥着至关重要的作用。在过去的一年里&#xff0c;PyTorch3D已经成为一个越来越流行的开源框架&#xff0c;用于使用Python进行3D深度学习。值得庆幸的是&#xff0c;PyTorch3D 库背后的人员已经完成了实现…

【Spring Boot】分页查询

分页查询 分页查询是日常开发中比较常用的功能。MyBatis框架下也有很多插件实现分页功能&#xff0c;比如pageHelper。这是一款非常简单、易用的分页插件&#xff0c;能很好地集成在Spring Boot中。pageHelper是一款基于MyBatis的数据库分页插件&#xff0c;所以我们在使用它时…

【力扣每日一题】2023.9.10 课程表Ⅱ

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 今天的题目和昨天类似&#xff0c;不过今天要我们求出学习所有课程的先后顺序。 昨天只需要我们求出能否学习完所有课程&#xff0c;因此…

MIT6.828实验记录-Lab2

实验1完成了内核启动的相关操作&#xff0c;由实验1可知&#xff0c;首先BIOS&#xff08;0xf0000~0x10000064KB&#xff09;将Boot Loader加载到0x7c00~0x7dff&#xff08;512B&#xff09;处&#xff0c;Boot Loader代码执行后将内核代码的ELF文件读取到&#xff10;x100000其…

静态工厂模式,抽象工厂模式,建造者模式

静态工厂模式 ublic class FruitFactory {public static Fruit getFruit(String name) {Fruit fnull;switch (name){case "APPLE":{fnew Apple();}case "BANANA":{fnew Banana();}default :{System.out.println("Unknown Fruit");}}return f;} …

基于Fomantic UI Web构建 个人导航站点网站源码 网站技术导航源码

BYR-Navi-master好看有个性的网站技术导航源码 该网站基于Fomantic UI Web框架构建&#xff0c;整个项目的设计和构建具有高度的配置和定制灵活性。 整体风格比较适合个人导航站点使用 搜索框输入关键词后&#xff0c;点击上方搜索引擎图标可跳转打开对应搜索引擎搜索结果&am…

UG二次开发 向量叉乘 UF_VEC3_cross

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C++-CSDN博客 简介: UG二次开发 向量叉乘 UF_VEC3_cross,xyz三个向量已知2个求另外1个。 效果: 代码: #include "me.hpp"void ufusr(char* param, int* retcode, int paramLe…

通讯软件019——分分钟学会Prosys OPC UA Server配置

本文介绍如何配置Prosys OPC UA Simulation Server&#xff0c;通过本文可以对OPC UA的基本概念有所了解&#xff0c;掌握OPC UA的本质。更多通信资源请登录网信智汇(wangxinzhihui.com)。 1、启动OPC UA Server Prosys OPC UA Simulation Server启动后就处于运行状态。 2、配…

将两个Series序列的元素按指定条件整合Series.combine()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 把两个序列中各元素 将相同索引对应的值 按指定函数进行整合 得到整合后的结果序列 Series.combine() [太阳]选择题 关于以下代码的说法中错误的是? import pandas as pd a pd.Series([0,3],…

推荐云智推地推拉新系统源码/任务分销神器

源码类型&#xff1a; PHP源码 显示语言&#xff1a; 简体中文 运行环境&#xff1a;PHPMySQLTP 功能内容会员管理&#xff1a;总代&#xff0c;服务商&#xff0c;员工 三种会员&#xff1b;封号&#xff0c;编辑&#xff0c;删除&#xff1b;可开启或关闭总代权限和邀请下级…

Google Hacking搜索

Google Hacking概述 GoogleHacking基本用法逻辑或OR逻辑与And逻辑非NOT完整匹配 GoogleHacking高级用法sitefiletypeinurlintitleintext Google Hacking DataBaseGoogle Hacking概述 GoogleHacking&#xff1a;利用搜索引擎有争对性的搜索信息来对网络入侵的技术和行为。搜索引…