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. Anaconda安装常用配置及命令

    Anaconda历史版本下载 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ https://repo.anaconda.com/arch ...

  2. Asp.net mvc基础(四)其他类型的ActionResult

    ViewResult是ActionResult的子类 1.Redirect 返回值类型:RedirectResult 用法:return Redirect(""); //返回值类型 ...

  3. eolinker响应预处理:传参解决方法(响应数据截取后设置为变量)

    特别注意:需要使用全局变量或者预处理前务必阅读本链接https://www.cnblogs.com/becks/p/13713278.html 一.案例1 1.场景描述: 后一个请求需要前一个请求提供 ...

  4. DPDI(Dispatch PDI)kettle调度管理平台之实操演练第003讲-数据通途:客户端连接SQL Server的完美攻略

    SQL Server简介 基本概念 SQL Server是由微软公司开发的关系型数据库管理系统.它基于SQL(Structured Query Language,结构化查询语言)来管理和操作数据.SQ ...

  5. 69.9K star!这个API调试神器让你告别Postman,开源免费真香!

    嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 Hoppscotch 是一款专为开发者打造的轻量级API调试工具,凭借其极简的界面设计和强大 ...

  6. 【SQL周周练】一句 SQL 如何帮助 5 个人买到电影院最好的座位?

    大家好,我是"蒋点数分",多年以来一直从事数据分析工作.从今天开始,与大家持续分享关于数据分析的学习内容. 本文是第 3 篇,也是[SQL 周周练]系列的第 3 篇.该系列是挑选或 ...

  7. 在鸿蒙NEXT开发中实现一个语音识别组件

    鸿蒙系统发布以后都不知道叫它5.0版本还是NEXT版本了,哈哈,反正是最新版本就对了.对于语音转换文字,鸿蒙系统提供了离线语音识别模型speechRecognizer,语种目前支持中文,识别效果非常不 ...

  8. 正点原子ALPHA开发板使用4.3寸触摸屏LCD驱动实验显示不正常

    显示问题 裸机开发时,驱动教程的PDF里给了4.3寸LCD屏幕的设置参数.如下图所示: 但是按照这个设置,编写设备树dts文件,下载到开发板里,却出现了显示异常,具体来说就是帧率不对,图和字都是歪斜的 ...

  9. vue3 基础-Mixin

    本篇开始来学习一波 vue 中的一些复用性代码的基础操作, 首先来介绍关于代码 "混入" mixin 的写法. 直观理解这个 mixin 就是一个 js 对象去 "混入& ...

  10. WPF 的 await Application.Current.Dispatcher.InvokeAsync,Func 如果是Task , 等待赋值可能存在没有等待执行完成的问题

    最近在检查我们组内的代码,发现好多用到 await Application.Current.Dispatcher.InvokeAsync 相信好多WPF的开发都会用到 该方法做UI线程切换.但是细看里 ...