VueRouter 路由

  • MPA(多)页面应用 (Multiple Page Application)
  • SPA(单)页面应用 (Single Page Application) 项目打包后最终只有index.html单个页面文件

一、VueRouter作用(一)

在单页面应用中,配置路由后,能够通过不同的url路径来实现显示不同的组件内容。

1、项目中下载和安装vue-router       `$ npm i vue-router -d`
2、项目中的main.js文件中引入路由模块 `import VueRouter from "vue-router"`
3、使用(安装)Vue-router插件 `Vue.use(VueRouter);`
4、配置路由信息 `关键参数:mode和routes:[]`
5、注入路由到Vue实例对象
6、在App.vue中需要显示组件内容的位置通过<router-view/>来进行占位(替换的部分)

代码示例

/* # main.js文件内容 */
import Vue from 'vue'
import App from './App.vue'
import VueRouter from "vue-router" import A from "./components/A"
import B from "./components/B"
import C from "./components/C"
Vue.use(VueRouter);
const router = new VueRouter({
mode: "hash",
routes: [{
path: "/a",
component: A
},
{
path: "/b",
component: B
},
{
path: "/c",
component: C
}, {
path: "/",
redirect: "/c" /* 重定向 */
},
{
path: "*",
redirect: "/404" /* 重定向到404页面 */
}
]
});
new Vue({
router,
render: h => h(App),
}).$mount('#app') /* # app.vue文件内容 */
<template>
<div>
<!-- 访问路由:当访问页面的时候显示指定的静态页面 -->
<!-- index.html | home.html | login.html 等 -->
<router-view></router-view>
<hr>
<div>A页面</div>
<div>B页面</div>
<div>C页面</div>
</div>
</template>

二、VueRouter作用(二)

通过<router-link>组件的使用实现点击标签跳转的动作(可以理解为当点击标签的时候,修改了当前页面的URL地址,然后根据URL地址来切换显示对应的内容)。

第一种跳转的方式:通过组件

<template>
<div id="app">
<!-- 访问路由:当访问页面的时候显示指定的静态页面 -->
<!-- index.html | home.html ÷Ú::::;。| login.html 等 -->
<router-view></router-view>
<hr>
<div v-for="item in menus" :key="item.content">
<router-link :to="item.path" :tag="'span'" replace active-class="current">{{item.content}}</router-link>
</div> </div>
</template> <script>
export default {
name: 'App',
data(){
return {
menus:[{
content:"A页面",
path:"/a"
},{
content:"B页面",
path:"/b"
},{
content:"C页面",
path:"/c"
}]
}
},
components: {
}
}
</script> <style scoped>
.current{
font-weight: bold;
color: red
}
</style>

<router-link>组件的主要参数:

    :to  跳转的目标
:tag 修改渲染后标签的类型
:active-class 设置当前导航的选中状态(样式)

第二种跳转的方式:通过this.$router.push()调用函数来实现

<button @click="clickHandler2C">跳转到C页面</button>
clickHandler2C(){
/* 1.通过params来传递参数 */
/* 在C页面刷新,那么数据就不再了 */
/* 1-1 name + params 成功*/
// this.$router.push({name:"c123",params:{userID:this.id}}); /* 错误的演示 下面这行代码无法传递参数 */
/* 注意:如果提供了 path,params 会被忽略 */
// this.$router.push({path:"/c",params:{userID:this.id}}); /* 2.通过query来传递参数 */
/* 在C页面刷新,数据仍然存在 */
/* 2-1 */
// this.$router.push({name:"c123",query:{userID:this.id}});
/* 2-2 */
// this.$router.push({path:"/c",query:{userID:this.id}});
}

三、VueRouter路由参数的传递

通过this.$router.push() 方法来传递参数

    this.$router.push({name:"c123",params:{userID:this.id}});
this.$router.push({name:"c123",query:{userID:this.id}});
this.$router.push({path:"/c",query:{userID:this.id}});
query和params的区别在于,当目标页面刷新时,参数是否还存在。

动态参数传递

    * mode history
* path "/d/:id"
* url http://localhost:8081/d/234534786 + this.$route.params.id; 注意:如果mode为hash的话,貌似无法实现动态参数的传递

前端开发系列049-基础篇之VueRouter的更多相关文章

  1. 从0到1用react+antd+redux搭建一个开箱即用的企业级管理后台系列(基础篇)

    背景 ​ 最近因为要做一个新的管理后台项目,新公司大部分是用vue写的,技术栈这块也是想切到react上面来,所以,这次从0到1重新搭建一个react项目架子,需要考虑的东西的很多,包括目录结构.代码 ...

  2. 前端开发:css基础知识之盒模型以及浮动布局。

    前端开发:css基础知识之盒模型以及浮动布局 前言 楼主的蛮多朋友最近都在学习html5,他们都会问到同一个问题 浮动是什么东西?  为什么这个浮动没有效果?  这个问题楼主已经回答了n遍.今天则是把 ...

  3. ESP8266开发之旅 基础篇① 走进ESP8266的世界

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

  4. ESP8266开发之旅 基础篇② 如何安装ESP8266的Arduino开发环境

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

  5. ESP8266开发之旅 基础篇③ ESP8266与Arduino的开发说明

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

  6. openlayers5-webpack 入门开发系列一初探篇(附源码下载)

    前言 openlayers5-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载 ...

  7. leaflet-webpack 入门开发系列一初探篇(附源码下载)

    前言 leaflet-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 w ...

  8. 【Windows10 IoT开发系列】配置篇

    原文:[Windows10 IoT开发系列]配置篇 Windows10 For IoT是Windows 10家族的一个新星,其针对不同平台拥有不同的版本.而其最重要的一个版本是运行在Raspberry ...

  9. ESP8266开发之旅 基础篇④ ESP8266与EEPROM

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

  10. ESP8266开发之旅 基础篇⑥ Ticker——ESP8266定时库

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

随机推荐

  1. nginx代理静态页面添加二级目录

    location /wash { # root html; alias /home/cxq/wash-html/dist; index index.html index.htm; try_files ...

  2. Robot Framework使用循环

    1.普通的For循环 在一个普通的For循环中,循环开始的关键字是 :FOR ,其中的:用于与一般关键字做区分,对于循环结 构体内的每一行,使用 \ 作为改行的行首关键字.对于循环中的变量,可以在 I ...

  3. Spring编程式事务控制

    目录 Spring编程式事务控制 代码实现 测试 Spring编程式事务控制 实际中很少使用 代码实现 pom.xml <?xml version="1.0" encodin ...

  4. AtCoder Beginner Contest 404 C-G(无F)题解

    C. Cycle Graph? 题意 给你一个 \(N\) 个顶点 \(M\) 条边的简单(无重边.自环)无向图,第 \(i\) 条边连接节点 \(A_i\) 和 \(B_i\),判断这个图是不是一个 ...

  5. Unity+MediaPipe虚拟试衣间技术实现全攻略

    引言:数字时尚革命的序章 在元宇宙概念席卷全球的今天,虚拟试衣技术正成为连接物理世界与数字孪生的关键桥梁.本文将深入解析基于Unity引擎结合MediaPipe姿态估计框架的虚拟试衣系统实现,涵盖从环 ...

  6. WPF 由TreeView想到的 DataTemplate,HierarchicalDataTemplate

    DataTemplate简而言之,解决的就是后台代码中的类以怎么样的形式展现在xaml前台代码中的问题. 所以DataTemplate一般都要指定DataType,一般放在resource中,而Hie ...

  7. Feign Client 超时时间配置

      在Spring Boot微服务架构中,大部分公司都是利用Open Feign进行服务间的调用,而在业务场景比较简单的时候,使用默认配置是不会遇到多大问题的.但是如果业务比较复杂,服务要进行比较繁杂 ...

  8. Intellij IDEA插件Free Mybatis plugin

    Free Mybatis plugin这个Intellij IDEA里面的插件真的十分nice,不仅可以实现XML文件与Mapper接口相互跳转,还可以逆向生成mapper和类. 直接在IDEA插件搜 ...

  9. 五分钟扫盲:25个工作中常用的Linux命令

    目录 §基础篇 cd 命令 ls / ll 和 clear 命令 grep 命令 : 查找关键字 find命令 kill tail cp命令 mv命令 rm命令 mkdir命令 rmdir 命令 ca ...

  10. Spring Boot 整合Jedis连接Redis和简单使用

    摘要:首先介绍如何在Windows系统安装Redis环境,然后在Spring Boot 项目中集成 Redis,最后简单地做了一个使用Jedis操作redis连接池的测试用例. §准备Redis环境 ...