vue-路由的使用方式

news2024/11/17 17:40:05

1.下载路由

  • 使用npm的下载:
# vue2对应版本
npm i vue-router@3

# vue3对应版本
npm i vue-router@4

2.路由初试化

路由的三种模式:
history, 指定路由的模式, 有hash,history,memory三种模式,一般使用第一种和第三种模式

  • createWebHashHistory hash模式 ===> http://localhost:5050/#/login
  • createWebHistory history模式 ===> http://localhost:5050/login
  • createMemoryHistory 带缓存的history模式 ===> http://localhost:5050/

路由的格式:

export default createRouter({
 history: 路由模式名称(),
  // 路由列表
    routes: [
         {
             path:"url地址",
             component: 组件对象,
             name: "路由别名"
         }
]
})

路由的使用代码:
创建路径src/router/index.js,代码如下

// 路由列表
import {createRouter, createWebHistory} from 'vue-router';
import Home from "../views/Home";
export default createRouter({
    // 路由列表
    routes: [
        {
            path:"/",   // 组件的访问路径,必须以斜杠开头
            component: Home,  // 不能加引号,直接填写对象即可
        },
    ]
});

代码截图:
在这里插入图片描述

3.注册路由组件

src/main.js,代码:

import { createApp } from 'vue'
import App from './App.vue'
// 注册[注入]路由组件实例对象到vm中
import router from "./router/index";

createApp(App).use(router).mount('#app');

代码截图
在这里插入图片描述

4.切换路由

app.vue代码:

<template>
  <router-view></router-view>
</template>

<script>
export default {
  name: 'App',
  components: {

  }
}

5.页面跳转

一共有三种页面跳转方式,使用a标签进行跳转使用ajaxs组件进行跳转使用js函数进行跳转,后面两种跳转方式是无刷新跳转,代码如下:

<template>
  <div>
    <ul>
//-- -------  使用普通的链接方式进行跳转---- -------
      <li><a href="/">首页</a></li>
      <li><a href="/register">注册</a></li>
//-- -------使用ajaxs组件的方式进行跳转,这种跳转方式无刷新-------
      <li>
        <router-link to="/">组件跳转-首页</router-link>
      </li>
      <li>
        <router-link to="/register">组件跳转-注册</router-link>
      </li>
//-- ------- 使用js的方式进行跳转-- -- -------
      <li><a @click.prevent="goto('/')">js函数跳转-首页</a></li>
      <li><a @click.prevent="goto('/register')">js函数跳转-注册</a></li>
    </ul>
  </div>
</template>

<script>
export default {
  name: "Menu",
  data() {
  },
  methods: {
    goto(url){
      this.$router.push(url)  //跳转到指定的url地址对应的页面中
      // this.$router.back() //返回上一页
      // this.$router.go(1)  //跳转到制定的n个页面,正数表示前进,负数表示后退
      // this.$router.forward()//前进到下一个页面
    }
  }
}
</script>

6.不同页面的参数的传递和接收

  • 方式1:通过地址栏传递参数

list.vue页面传递参数到goods.vue:

list.vue代码:

<template>
  <h1>List页面</h1>
  <router-link to="/goods">go goods页面</router-link><br>
  <router-link to="/goods?id=20&cat=10">20号商品</router-link>
  //或者使用下面这种方式传参也是一样的作用
  <router-link :to="{path:'/goods',query={'id':20,'cat':10}}">20号商品</router-link>
</template>

<script>
export default {
  name: "List",
}
</script>

goods.vue代码:

<template>
  <h1>goods页面</h1>
  <p>{{ goods_id_query }}号商品的详细信息</p>

</template>

<script>
export default {
  name: "Goods",
  data() {
    return {
      goods_id_query: 0,
    }
  }, created() {
    //接受地址栏的查询字符串
    this.goods_id_query = this.$route.query.id;
    console.log(this.$route.query.cat);
  }
}
</script>

<style scoped>

</style>
  • 方式2:通过路由动态传递参数

goods.vue页面传递参数到list.vue:

goods.vue页面代码

<template>
  <h1>goods页面</h1>
  <router-link to="/list/5">动态路由参数-5号列表</router-link>
</template>

<script>
export default {
  name: "Goods"
}
</script>

list.vue代码:

<template>
  <p>{{ goods_id_query }}号商品的详细信息</p>
</template>

<script>
export default {
  name: "Goods",
  data() {
    return {
      goods_id_query: 0,

    }
  }, created() {
    //接受地址栏的查询字符串
    this.goods_id_query = this.$route.query.id;
    console.log(this.$route.query.cat);
  }
}
</script>

使用这种方式传递参数有一个缺陷就是不能直接访问list页面了,必须要传递参数才可以访问list页面

index.js路由代码:

{
                path: "/list/:id",
                component: List,
            },
             {
                path: "/goods",//动态路由参数;设置路由的一部分作为参数,写法必须是 :参数名
                component: Goods,
            }

7.嵌套路由

嵌套路由是vue-route提供给开发者应用在同一个页面组件下切换不同子组件的时候使用的.
实现功能:
在这里插入图片描述
导航有用户中心首页,好友列表,订单列表三个导航,可以实现在三个页面跳转,而公共部分不变.

  • 第一步:在路由中设置子路由,index.js中:
{
                path: "/user",
                component: User,
                children: [
                    {
                        path:'/' //相当访问/user
                    },
                    {
                        path: "friend", // 访问 /user/friend
                        component: UserFriend,
                    },
                    {
                        path:"order",
                        component: UserOrder
                    }
                ]
            }

第二步:在user中设置和链接,user.vue中:

<template>
  <router-link to="/user">用户中心首页</router-link>|
  <router-link to="/user/friend">好友列表</router-link>|
  <router-link to="/user/order">订单列表</router-link>|
  <ul v-if="$route.path==='/user'">
    <li>用户名:小红</li>
    <li>登入时间:2021-07-01</li>
    <li>欢迎登入回来</li>
  </ul>

  <p>用户中心的公共代码[页面的头部]</p>
  <router-view></router-view>
</template>
<script>
export default {
  name: "User"
}
</script>

子路由页面,UserFriendUserOrder页面:
在这里插入图片描述

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

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

相关文章

十大字符串函数与内存操作函数

前言&#xff1a;我们知道在C语言的库中有许许多多的库函数&#xff0c;今天我就来介绍一下自己对两大类库函数中一些常用函数的认识和理解&#xff0c;希望对大家有帮助。 说明&#xff1a;下文中会花较大篇幅实现这些库函数的模拟&#xff0c;请大家不要觉得库函数直接用就好…

UNet入门总结

作者&#xff1a;AI浩 来源&#xff1a;投稿 编辑&#xff1a;学姐 Unet已经是非常老的分割模型了&#xff0c;是2015年《U-Net: Convolutional Networks for Biomedical Image Segmentation》提出的模型。 论文连接&#xff1a;https://arxiv.org/abs/1505.04597 在Unet之前…

Android 深入系统完全讲解(4)

4 SystemServer 创建过程 SystemServer 进程非常关键了&#xff0c;我们上层的服务都是在这里以线程的形式存在&#xff0c;比如 AMS&#xff0c;PMS&#xff0c;WindowManagerService&#xff0c;壁纸服务&#xff0c;而关于调试这个服务进程&#xff0c;我们随后就会讲到。 …

虚拟人-面部表情-Audio2Face语音驱动表情

任务&#xff1a; 输入自己的音频&#xff0c;导入maya模型&#xff0c;让maya模型通过音频驱动说话 教程&#xff1a; https://www.bilibili.com/video/BV1rZ4y1R7H4/?p2&spm_id_frompageDriver&vd_sourceef114f70c3fd4d5394f12dbd3d022bbe 一.下载和安装 1.首先…

Java面试常见问题-SE篇

JavaSE面试问题汇总①int和Integer的区别为什么设计封装类型&#xff1f;JDK、JRE、JVM的区别和equals方法的区别hashCode()与equals()之间的关系泛型中extends和super的区别String、StringBuffer、StringBuilder的区别重载和重写的区别接口和抽象类的区别List与Set的区别Array…

2023/1/8总结

今天学了了强连通算法 Tarjan算法 Tarjan算法是一种求解有向图强连通分量的线性时间的算法&#xff0c;他运用到了DFS算法以及DFS的特性和数据结构——栈。 算法介绍&#xff1a;如果两个顶点可以相互通达&#xff0c;则称两个顶点强连通(strongly connected)。如果有向图G…

LeetCode题解 二叉树(十三):701 二叉搜索树的插入操作;450 删除二叉搜索树中的结点

701 二叉搜索树的插入操作 medium 给定二叉搜索树&#xff08;BST&#xff09;的根节点和要插入树中的值&#xff0c;将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据保证&#xff0c;新值和原始二叉搜索树中的任意节点值都不同。 如果要按照题目中所说改变二叉…

渗透测试中的常用编码

渗透测试中的常用编码 页面编码 在网页设置网页编码 在中加入设置特定html标签 这样页面的编码就会变成utf-8 &#xff0c;如果没有设置编码就会使用默认 的编码&#xff0c;而浏览器默认编码与之不同就会出现乱码。 常用的有三种格式分别是 utf-8、gbk、gbk2312 ascii编码…

_Linux 进程信号-信号处理篇

文章目录前言捕捉信号1. 内核如何实现信号的捕捉2. sigaction代码验证可重入函数volatile(关键字)SIGCHLD信号实验一实验二前言 信号发送 信号处理 已经讲过&#xff0c;本章讲解信号处理最后一部分。 捕捉信号 信号捕捉过程图 经过信号捕捉过程图&#xff1a;我们知道信号…

语音文件分析

语音文件格式的重要参数 语音波形,它的这个文件,主要的格式就是采样率,那么电话或者嵌入式设备,采样率一般是8000Hz,就一秒钟8000个点,如果是PC机麦克风,那是16K,就一秒钟是16000个点,像这个CD是高保真的,音乐唱片的是用这个44.1K。 量化位数,又叫采样精度,…

绿通科技在创业板通过注册:收入依赖美国市场,张志江为实控人

2023年1月6日&#xff0c;证监会发布关于同意广东绿通新能源电动车科技股份有限公司&#xff08;下称“绿通科技”或“绿通电动车”&#xff09;、杭州国泰环保科技股份有限公司首次公开发行股票注册的批复。换句话说&#xff0c;证监会同意上述两家公司的创业板IPO注册。 同日…

【手写 Vue2.x 源码】第十一篇 - Vue 的数据渲染流程

一&#xff0c;前言 上篇&#xff0c;主要介绍了数组数据变化的观测情况&#xff0c;涉及以下几个点&#xff1a; 实现了数组数据变化被劫持后&#xff0c;已重写原型方法的具体逻辑&#xff1b;数组各种数据变化时的观测情况分析&#xff1b; 目前为止&#xff0c;数据劫持…

webpack 如何编写 loader

三种本地开发测试 loader 的方法 1. 匹配&#xff08;test&#xff09;单个 loader 你可以通过在 rule 对象使用 path.resolve 指定一个本地文件&#xff1a; webpack.config.js const path require(path);module.exports {//...module: {rules: [{test: /\.js$/,use: [{…

Ansible Automation Platform - 在 RHEL 安装 Ansible Automation Platform 2.3 环境

《OpenShift / RHEL / DevSecOps 汇总目录》 文本已在 RHEL 9 AAP 2.3 环境中进行验证。 说明&#xff1a; 本文介绍如何在一个节点上部署一套 all-in-one 的 Ansible Automation Platform 2.3 的运行环境。红帽 Ansible Automation Platform 2.3 需要至少 RHEL 8.4 以上的环…

【EHub_tx1_tx2_E100】Ubuntu18.04 + ROS_ Melodic + Velodyne VLP-16雷达 测试使用

简介&#xff1a;介绍 Velodyne VLP-16 16线激光雷达 在EHub_tx1_tx2_E100载板&#xff0c;TX1核心模块环境&#xff08;Ubuntu18.04&#xff09;下测试ROS驱动&#xff0c;打开使用RVIZ 查看点云数据&#xff0c;本文的前提条件是你的TX1里已经安装了ROS版本&#xff1a;Melod…

HashMap、HashTable、ConcurrentHashMap之间的区别及常见面试题

Java集合类有的集合类是存在线程安全的问题&#xff0c;但是由于之前对于集合类的使用都是在单线程的情况下使用的&#xff0c;不没有在多线程环境下使用&#xff0c;所以不涉及线程安全的问题&#xff1b;这篇博客着重讲解一下多线程环境下使用哈希表。HashMapHashMap本身不是…

一些开发时常用的网站或命令

目录关于gitgit下载网址git安装教程Gortoisegit下载地址关于PythonAnyWhere关于Linux压缩与解压命令关于python的相对与绝对路径使用_\_file_\_实现跨平台关于宝塔面板关于浏览器驱动下载本博客首次编辑于2023.01.04 &#xff0c;后续将持续进行更新 关于git git下载网址 gi…

Linux - 系统文件目录说明

目录/ - 根目录/bin - 用户基础二进制文件目录/boot - 静态启动文件/dev - 设备文件/etc - 配置文件/home - 主目录/lib - 基础共享库/lib64 - 64位基础共享库/lostfound - 可恢复的文件/media - 可移动媒体/mnt - 临时挂载点目录/opt - 自选软件包/proc - 内核 & 进程文件…

【Node】事件循环机制

Node 中的异步 API 定时器&#xff1a;setTimeout、setIntervalI/O 操作&#xff1a;文件读写、数据库操作、网络请求…Node 独有的 API&#xff1a;process.nextTick、setImmediate 事件循环的流程 Node 的事件循环分为 6 个阶段&#xff0c;这 6 个阶段会按顺序反复运行运行…

高并发内存池项目

文章目录一、项目介绍二、什么是内存池2.1 池化技术2.2 内存池2.3 内存池的作用2.4 malloc三、设计定长内存池四、高并发内存池整体框架设计六、threadcache6.1 threadcache整体设计6.2 threadcache哈希桶映射对齐规则6.3 编写对齐和映射的相关函数6.4 编写ThreadCache类6.5 th…