前端开发系列049-基础篇之VueRouter
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的更多相关文章
- 从0到1用react+antd+redux搭建一个开箱即用的企业级管理后台系列(基础篇)
背景 最近因为要做一个新的管理后台项目,新公司大部分是用vue写的,技术栈这块也是想切到react上面来,所以,这次从0到1重新搭建一个react项目架子,需要考虑的东西的很多,包括目录结构.代码 ...
- 前端开发:css基础知识之盒模型以及浮动布局。
前端开发:css基础知识之盒模型以及浮动布局 前言 楼主的蛮多朋友最近都在学习html5,他们都会问到同一个问题 浮动是什么东西? 为什么这个浮动没有效果? 这个问题楼主已经回答了n遍.今天则是把 ...
- ESP8266开发之旅 基础篇① 走进ESP8266的世界
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- ESP8266开发之旅 基础篇② 如何安装ESP8266的Arduino开发环境
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- ESP8266开发之旅 基础篇③ ESP8266与Arduino的开发说明
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- openlayers5-webpack 入门开发系列一初探篇(附源码下载)
前言 openlayers5-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载 ...
- leaflet-webpack 入门开发系列一初探篇(附源码下载)
前言 leaflet-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 w ...
- 【Windows10 IoT开发系列】配置篇
原文:[Windows10 IoT开发系列]配置篇 Windows10 For IoT是Windows 10家族的一个新星,其针对不同平台拥有不同的版本.而其最重要的一个版本是运行在Raspberry ...
- ESP8266开发之旅 基础篇④ ESP8266与EEPROM
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- ESP8266开发之旅 基础篇⑥ Ticker——ESP8266定时库
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
随机推荐
- python,循环中加入等待时间,使每一次循环后随机等待一段时间
爬虫爬取网页数据的时候,有时候因访问频率太过于规律导致被服务器发现,出现访问超时或者被封ip的情况.所以,每一轮爬取,后面加一个随时等待时间,可以减少被发现的概率 主要用到random和time库 实 ...
- kettle实时增量同步mysql数据
** 本文主要介绍运用kettle实时增量同步mysql数据 ** Debezium介绍 官网地址:https://debezium.io/documentation/ Debezium是一个开源项目 ...
- Fiddler的安装和使用教程(详细)
一.安装 1.fiddler工具下载网址:http://www.telerik.com/download/fiddler. 2.运行 FiddlerSetup.exe一键完成安装. 3.安装成功后点击 ...
- 【笔记】用伽马函数证明标准正态分布EX4的值为3
2020-11-13 看了博客标准正态分布的E(X^4)积分求解的极坐标变换证明方法,已经叹服不已,然后看了底下老哥的评论,用伽马函数可以口算出来,遂去查了一下,真香!发篇博客记录一下. 现在的问题, ...
- dify调用Streamable HTTP MCP应用
一.概述 上一篇文章,介绍了使用python开发Streamable HTTP MCP应用,链接:https://www.cnblogs.com/xiao987334176/p/18872195 接下 ...
- RBMQ案例二:工作队列模式
工作队列模式 工作队列(又名:任务队列)背后的主要思想是避免立即执行资源密集型任务而不得不等待它完成.相反,我们安排任务稍后完成.我们将任务封装 为消息并将其发送到队列.在后台运行的工作进程将弹出任务 ...
- 【2020.11.30提高组模拟】柱形图(histogram) 题解翻译
[2020.11.30提高组模拟]柱形图(histogram) 题解 题意简述 有\(n\)个长方体并排这样放着,每种颜色的长方体的宽度都为\(1\),高\(a_i\)长\(b_i\). 求在这些长方 ...
- 【深度评测】Joomla Auto Readmore插件:自动提取缩略图+智能摘要,双引擎驱动内容效率革命
"文章缩略图与摘要分离管理.重复上传图片.移动端封面图比例失调--"这些Joomla站长的经典痛点,如今被Auto Readmore插件的全自动缩略图提取功能彻底终结.本文将深度解 ...
- 🚀 开源提示词优化神器来了!一键优化Function Calling和MCP提示词,让你的AI应用性能飞跃
还在为Function Calling调用不准确而头疼?MCP提示词写得不够规范?今天给大家推荐一个开源的提示词优化平台,专门解决这些痛点! 背景:为什么需要专业的提示词优化? 在AI应用开发中,我们 ...
- CAN304 W1
CAN304 W1 Definition The protection afforded to an automated information system in order to attain t ...