Vue基础23之路由第二节

Vue基础23

  • 路由
    • 路由的query参数
      • src/router/index.js
      • Detail.vue
      • HomeMessage.vue
      • 路由的query参数
    • 命名路由
      • src/router/index.js
      • HomeMessage.vue
      • App.vue
      • 总结
    • 路由的params参数
      • src/router/index.js
      • HomeMessage.vue
      • Detail.vue
      • 总结

路由

路由的query参数

在这里插入图片描述

src/router/index.js

//该文件专门用于创建整个应用的路由器
import VueRouter from "vue-router";
//引入组件
import About from "@/pages/About";
import Home from "@/pages/Home";
import HomeNews from "@/pages/HomeNews";
import HomeMessage from "@/pages/HomeMessage";
import Detail from "@/pages/Detail";

//创建并暴露一个路由器
export default new VueRouter({
    routes:[
        {
            path:'/about',
            component:About
        },
        {
            path:'/home',
            component:Home,
            children:[
                {
                    path:'news',
                    component:HomeNews
                },
                {
                    path:'message',
                    component:HomeMessage,
                    children:[
                        {
                            path:'detail',
                            component:Detail
                        }
                    ]
                }
            ]
        }
    ]
})

Detail.vue

<template>
  <div>
    <div>消息编号:{{ $route.query.id }}</div>
    <div>消息标题:{{$route.query.title}}</div>
  </div>
</template>

<script>
export default {
  name: "Detail",
  mounted(){
    console.log("route",this.$route)
  }
}
</script>

<style scoped>

</style>

HomeMessage.vue

<template>
  <div>
    <ul>
      <li v-for="m in messageList" :key="m.id">
      <!--      跳转路由并携带query参数,to的字符串的写法-->
	 <!--        <router-link  :to="`/home/message/detail?id=${m.id}&title=${m.title}`">{{m.title}}</router-link>-->

        <!--      跳转路由并携带query参数,to的对象的写法-->
        <router-link  :to="{
          path:'/home/message/detail',
          query:{
            id:m.id,
            title:m.title
          }
        }">
          {{m.title}}
        </router-link>
        <br>
      </li>
    </ul>
    <hr>
    <router-view></router-view>
  </div>
</template>

<script>
    export default {
        name: "HomeMessage",
      data(){
          return{
            messageList:[
              {id:"001",title:"消息001"},
              {id:"002",title:"消息002"},
              {id:"003",title:"消息003"},
            ]
          }
      }
    }
</script>

<style scoped>
.active{
  color: black;
}
</style>

请添加图片描述

路由的query参数

  1. 传递参数
<!--      跳转路由并携带query参数,to的字符串的写法-->
<router-link  :to="`/home/message/detail?id=${m.id}&title=${m.title}`">{{m.title}}</router-link>
<!--      跳转路由并携带query参数,to的对象的写法-->
<router-link  :to="{
	  path:'/home/message/detail',
	  query:{
	    id:m.id,
	    title:m.title
	  }
	}">
    {{m.title}}
  </router-link>
  1. 接收参数
$route.query.id
$route.query.title

命名路由

src/router/index.js

//该文件专门用于创建整个应用的路由器
import VueRouter from "vue-router";
//引入组件
import About from "@/pages/About";
import Home from "@/pages/Home";
import HomeNews from "@/pages/HomeNews";
import HomeMessage from "@/pages/HomeMessage";
import Detail from "@/pages/Detail";

//创建并暴露一个路由器
export default new VueRouter({
    routes:[
        {
            name:'guanyu',
            path:'/about',
            component:About
        },
        {
            path:'/home',
            component:Home,
            children:[
                {
                    path:'news',
                    component:HomeNews
                },
                {
                    path:'message',
                    component:HomeMessage,
                    children:[
                        {
                            name:'xiangqing',
                            path:'detail',
                            component:Detail
                        }
                    ]
                }
            ]
        }
    ]
})

HomeMessage.vue

<template>
  <div>
    <ul>
<!--      跳转路由并携带query参数,to的字符串的写法-->
      <li v-for="m in messageList" :key="m.id">
<!--        <router-link  :to="`/home/message/detail?id=${m.id}&title=${m.title}`">{{m.title}}</router-link>-->

        <!--      跳转路由并携带query参数,to的对象的写法-->
<!--        <router-link  :to="{
          path:'/home/message/detail',
          query:{
            id:m.id,
            title:m.title
          }
        }">-->
        <!--      跳转路由使用名字跳转,并携带query参数,to的对象的写法-->
          <router-link  :to="{
          name:'xiangqing',
          query:{
            id:m.id,
            title:m.title
          }
        }">
          {{m.title}}
        </router-link>
        <br>
      </li>
    </ul>
    <hr>
    <router-view></router-view>
  </div>
</template>

<script>
    export default {
        name: "HomeMessage",
      data(){
          return{
            messageList:[
              {id:"001",title:"消息001"},
              {id:"002",title:"消息002"},
              {id:"003",title:"消息003"},
            ]
          }
      }
    }
</script>

<style scoped>
.active{
  color: black;
}
</style>

App.vue

<template>
  <div class="bg">
    <Banner></Banner>
    <div class="main-item">
      <div class="left-banner">
        <!--      Vue中借助router-link标签实现路由的切换-->
<!--        <router-link class="link" active-class="active" to="/about">About</router-link>-->
        <!--      Vue中使用name帮助跳转-->
        <router-link class="link" active-class="active" :to="{name:'guanyu'}">About</router-link>
        <router-link class="link" active-class="active" to="/home">Home</router-link>
      </div>
      <div class="right-content">
        <!--      指定组件的呈现位置-->
        <router-view></router-view>
      </div>
    </div>
  </div>
</template>

<script>
import Banner from "@/components/Banner";
export default {
  name: "App",
  components: {Banner},
  data(){
    return{
      isBg:true
    }
  }
}
</script>

<style scoped lang="less">
 .bg{
   margin: 50px 200px;
   .main-item{
     display: flex;
   }
   .left-banner{
     height: 100px;
     width: 100px;
     display: flex;
     flex-direction: column;
     .link{
       text-decoration: none;
       color: black;
       cursor: pointer;
       border-top: 1px solid #ccc;
       border-left: 1px solid #ccc;
       border-right: 1px solid #ccc;
       flex: 1;
       text-align: center;
       justify-content: center;
       line-height: 50px;
       &:first-child{
         border-radius: 4px 4px 0 0;
       }
       &:last-child{
         border-bottom: 1px solid #ccc;
         border-radius:  0 0 4px 4px;
       }
       /*&:focus{
         background-color: #286090;
         color: #fff;
       }*/

     }
     .active{
       background-color: #337ab7;
       color: #fff;
     }
   }
   .right-content{
     margin-left: 100px;
   }
 }

</style>



总结

  1. 作用:可以简化路由的跳转
  2. 如何使用
    (1)给路由命名:
routes:[
        {
            path:'/demo',
            component:Demo,
            children:[
                {
                    path:'test',
                    component:Test,
                    children:[
                        {
                            name:'hello', //给路由命名
                            path:'welcome',
                            component:Hello
                        }
                    ]
                }
            ]
        }
    ]

(2)简化跳转

<!--简化前,需要写完整的路径-->
<router-link to="/demo/test/welcome">跳转</router-link>

<!--简化后,直接通过名字跳转-->
<router-link :to="{name:'hello'}">跳转</router-link>

<!--简化写法配合传递参数-->
<router-link 
      :to="{
      name:'hello',
      query:{
		id:666,
		title:'你好'
		}
      }"
>跳转</router-link>

路由的params参数

在这里插入图片描述

src/router/index.js

//该文件专门用于创建整个应用的路由器
import VueRouter from "vue-router";
//引入组件
import About from "@/pages/About";
import Home from "@/pages/Home";
import HomeNews from "@/pages/HomeNews";
import HomeMessage from "@/pages/HomeMessage";
import Detail from "@/pages/Detail";

//创建并暴露一个路由器
export default new VueRouter({
    routes:[
        {
            name:'guanyu',
            path:'/about',
            component:About
        },
        {
            path:'/home',
            component:Home,
            children:[
                {
                    path:'news',
                    component:HomeNews
                },
                {
                    path:'message',
                    component:HomeMessage,
                    children:[
                        {
                            name:'xiangqing',
                            path:'detail/:id/:title',  //nodejs的占位符,后面会填充内容
                            component:Detail
                        }
                    ]
                }
            ]
        }
    ]
})

HomeMessage.vue

<template>
  <div>
    <ul>
<!--      跳转路由并携带params参数,to的字符串的写法-->
      <li v-for="m in messageList" :key="m.id">
<!--        <router-link  :to="`/home/message/detail/${m.id}/${m.title}`">{{m.title}}</router-link>-->

        <!--      跳转路由并携带params参数,只能使用名字跳转,to的对象的写法-->
          <router-link  :to="{
          name:'xiangqing',
          params:{
            id:m.id,
            title:m.title
          }
        }">
          {{m.title}}
        </router-link>
        <br>
      </li>
    </ul>
    <hr>
    <router-view></router-view>
  </div>
</template>

<script>
    export default {
        name: "HomeMessage",
      data(){
          return{
            messageList:[
              {id:"001",title:"消息001"},
              {id:"002",title:"消息002"},
              {id:"003",title:"消息003"},
            ]
          }
      }
    }
</script>

<style scoped>
.active{
  color: black;
}
</style>

Detail.vue

<template>
  <div>
    <div>消息编号:{{ $route.params.id }}</div>
    <div>消息标题:{{$route.params.title}}</div>
  </div>
</template>

<script>
export default {
  name: "Detail",
  mounted(){
    console.log("route",this.$route)
  }
}
</script>

<style scoped>

</style>

请添加图片描述

总结

  1. 配置路由,声明接收params参数
{
    path:'/home',
    component:Home,
    children:[
        {
            path:'news',
            component:HomeNews
        },
        {
            path:'message',
            component:HomeMessage,
            children:[
                {
                    name:'xiangqing',
                    path:'detail/:id/:title',  //nodejs的占位符,后面会填充内容(使用占位符声明接收params参数)
                    component:Detail
                }
            ]
        }
    ]
}
  1. 传递参数
<!--  跳转路由并携带params参数,to的字符串的写法-->
<router-link  :to="/home/message/detail/666/你好">跳转</router-link>

<!--      跳转路由并携带params参数,只能使用名字跳转,to的对象的写法-->
 <router-link  
 		:to="{
			 name:'xiangqing',
			 params:{
			   id:666,
			   title:'你好'
			 }
}">跳转</router-link>

特别注意:路由携带params参数时,若使用to的对象写法,则不能使用path配置项,必使用name配置!

  1. 接收参数
$route.params.id
$route.params.title

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Gehpi的网络布局

Gehpi的网络布局1. 力引导布局2. 辅助布局布局是网络可视化中的重要概念&#xff0c;指将点和边通过某种策略进行排布&#xff0c;应尽可能满足以下4个原则&#xff1a; 节点均匀分布在有限的区域内避免边的交叉和弯曲保持边的长度一致整体布局能反映图内在的特性 Gephi的布局…

卷积神经网络

目录卷积神经网络概述神经网络原理卷积神经网络卷积层怎么控制输出数据&#xff1f;如何抓取特征池化层归一化层全连接层局部感受野权值共享多卷积核池化子采样多卷积层卷积神经网络的训练前向传播BackForward反向传播权值更新过程中的卷积网络结构层的排列规律层的尺寸设置规律…

web3:区块链共识机制系列-POS(Proof of Stake)股权证明算法

web3相关学习一并收录至该博客&#xff1a;web3学习博客目录大全 前情衔接&#xff1a;web3:区块链常见的几大共识机制及优缺点 目录前言算法公式与原理算法公式运作原理以Peer Coin为例缺陷优点缺点特点分类发展历程casper协议1.什么是无成本利益关系问题2.引入casper协议解决…

SpringBoot 动态操作定时任务(启动、停止、修改执行周期)增强版

前段时间编写了一篇博客SpringBoot 动态操作定时任务&#xff08;启动、停止、修改执行周期&#xff0c;该篇博客还是帮助了很多同学。 但是该篇博客中的方法有些不足的地方&#xff1a; 只能通过前端控制器controller手动注册任务。【具体的应该是我们提前配置好我们的任务&am…

selenium(4)-------自动化测试脚本(python)

webdriverAPI 一)定位元素的方式&#xff0c;必问 1.1)id来定位元素&#xff0c;前提是元素必须具有id属性&#xff0c;因为有的元素是没有id的 1.2)name&#xff0c;元素必须有name&#xff0c;并且必须全局唯一 1.3)tagname&#xff0c;元素是一定有的&#xff0c;但是必须全…

HTTP 缓存的工作原理

缓存是解决http1.1当中的性能问题主要手段。缓存可能存在于客户端浏览器上&#xff0c;也可以存在服务器上面&#xff0c;当使用过期缓存可能给用户展示的是错误的信息而导致一些bug。 HTTP 缓存&#xff1a;为当前请求复用前请求的响应 • 目标&#xff1a;减少时延&#xff1…

Python+Yolov8目标识别特征检测

Yolov8目标识别特征检测如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01;前言这篇博客针对<<Yolov8目标识别特征检测>>编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c;易读。 学习与应用推荐…

3分钟看完-丄-Python自动化测试【项目实战解析】经验分享

目录&#xff1a;导读 引言 自动化测试 背景 测试团队 测试体系发展 测试平台 自动化测试现状 现状一&#xff1a; 现状二&#xff1a; 现状三&#xff1a; 现状四&#xff1a; 现状五&#xff1a; 现状六&#xff1a; 失败的背景 失败的经历 失败总结 引言 内…

Java多线程系列--synchronized的原理

原文网址&#xff1a;Java多线程系列--synchronized的原理_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Java的synchronized的原理。 反编译出字节码 Test.java public class Test {private static Object LOCK new Object();public static int main(String[] args) {synchro…

动态矢量瓦片缓存库方案

目录 前言 二、实现步骤 1.将数据写入postgis数据库 2.将矢量瓦片数据写入缓存库 3.瓦片接口实现 4.瓦片局部更新接口实现 总结 前言 矢量瓦片作为webgis目前最优秀的数据格式&#xff0c;其主要特点就是解决了大批量数据在前端渲染时出现加载缓慢、卡顿的问题&#xff0…

LeetCode 112. 路径总和

LeetCode 112. 路径总和 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 targetSum 。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 叶…

Python笔记 -- 文件和异常

文章目录1、文件1.1、with关键字1.2、逐行读取1.3、写入模式1.4、多行写入2、异常2.1、try-except-else2.2、pass1、文件 1.1、with关键字 with关键字用于自动管理资源 使用with可以让python在合适的时候释放资源 python会将文本解读为字符串 # -*- encoding:utf-8 -*- # 如…

Linux操作系统基础的常用命令

1&#xff0c;Linux简介Linux是一种自由和开放源码的操作系统&#xff0c;存在着许多不同的Linux版本&#xff0c;但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中&#xff0c;比如手机、平板电脑、路由器、台式计算机。1.1Linux介绍Linux出现于1991年&#xff0c…

操作技巧 | 在Revit中借用CAD填充图案的方法

在建模过程中&#xff0c;有时需要达到多种填充效果&#xff0c;而CAD中大量的二维填充图案&#xff0c;便是最直接的资源之一。 使用 填充图案之前 使用 填充图案之后 其中要用到主要命令便是对表面填充图案的添加与编辑 简单效果 如下 模型填充与绘图填充 区别 模型填…

Java for循环嵌套for循环,你需要懂的代码性能优化技巧

前言 本篇分析的技巧点其实是比较常见的&#xff0c;但是最近的几次的代码评审还是发现有不少兄弟没注意到。 所以还是想拿出来说下。 正文 是个什么场景呢&#xff1f; 就是 for循环 里面还有 for循环&#xff0c; 然后做一些数据匹配、处理 这种场景。 我们结合实例代码来…

SpringBoot+WebSocket实时监控异常

# 写在前面此异常非彼异常&#xff0c;标题所说的异常是业务上的异常。最近做了一个需求&#xff0c;消防的设备巡检&#xff0c;如果巡检发现异常&#xff0c;通过手机端提交&#xff0c;后台的实时监控页面实时获取到该设备的信息及位置&#xff0c;然后安排员工去处理。因为…

Java实现调用第三方相关接口(附详细思路)

目录1.0.简单版2.0.升级版2-1.call.timeout()怎么传入新的超时值2-2.timeout(10, TimeUnit.SECONDS)两个参数的意思&#xff0c;具体含义3.0.进阶版3-1.java.net.SocketTimeoutException: 超时如何解决4.0.终极版1.0.简单版 以下是一个使用 Java 实际请求“第三方”的简单示例代…

一眼看破五花八门的链表结构

文章目录&#x1f4d5;一&#xff1a;五花八门的链表结构&#x1f4d6;链表与数组的简单对比&#x1f4d6;单链表&#x1f4d6;循环链表&#x1f4d6;双向链表&#x1f4d5;二&#xff1a;链表VS数组性能大比拼&#x1f47f;最后说一句&#x1f431;‍&#x1f409;作者简介&am…

数据挖掘(2.1)--数据预处理

一、基础知识 1.数据的基本概念 1.1基础知识 数据是数据对象(Data Objects)及其属性(Attributes)的集合。 数据对象(一条记录、一个实体、一个案例、一个样本等)是对一个事物或者物理对象的描述。 数据对象的属性则是这个对象的性质或特征&#xff0c;例如一个人的肤色、眼球…

GPT-4 性能炸天:10 秒做出一个网站,在考试中击败 90% 人类

一、GPT-4&#xff0c;吊打ChatGPT&#xff01; 一觉醒来&#xff0c;万众期待的 GPT-4&#xff0c;它来了&#xff01; OpenAI老板Sam Altman直接开门见山地介绍道&#xff1a;这是我们迄今为止功能最强大的模型&#xff01; 二、GPT-4&#xff0c;新功能一览 究竟有多强&am…
最新文章