(四十二)Vue之路由及其基本使用Vue Router

文章目录

  • 概念
  • 基本使用
  • demo
  • 几个注意点

上一篇:(四十一)Vuex之模块化与命名空间
下一篇:(四十三)Vue Router之嵌套路由

概念

在计算机科学和网络领域中,路由(Routing)是指确定数据包在网络中传输的路径和方式的过程。它涉及到根据源地址和目标地址之间的网络拓扑和路由表,选择最佳路径来将数据包从发送者传递到接收者的过程。

而在在前端开发中,路由是指在单页应用(SPA)中管理不同视图(View)之间切换和导航的机制。前端路由通过在浏览器中监听URL的变化,并根据URL的路径匹配相应的视图组件来实现页面的切换,而无需进行完整的页面刷新。

Vue Router是Vue.js官方提供的用于构建单页应用程序(Single-Page Application)的路由管理器。它允许您在Vue应用程序中实现客户端路由,通过定义路由规则和组件映射,实现不同路径之间的页面切换和导航。您可以在官方(https://router.vuejs.org/)中找到更详细的解释、示例和代码片段

基本使用

第一步:安装vue-router
请注意vue-router的版本也跟vue的版本有关系:

vue2只能使用vue-router3版本
vue3只能使用vue-router4版本
以npm为例:如果使用npm install vue-router命令默认安装最新版本,也就是vue-router4,如果需要安装vue-router3版本需要加个版本npm install vue-router@3

第二步:应用插件:Vue.use(VueRouter)

第三步:编写router配置项

   //引入VueRouterimport VueRouter from 'vue-router'//引入页面 组件import Page1 from '../components/page1'import Page2 from '../components/page2'//创建router实例对象,去管理一组一组的路由规则const router = new VueRouter({routes:[{path:'/page1',component:Page1 },{path:'/page2',component:Page2}]})//暴露routerexport default router

第四步:挂载路由

new Vue({router, // 挂载路由render: (h) => h(App)
}).$mount('#app');

第五步:使用路由链接和视图

在Vue组件中,使用<router-link>组件来创建导航链接,以便用户可以点击进行路由导航。使用<router-view>组件来显示当前匹配到的路由组件。

<template><div><router-link to="/page1">page1</router-link><router-link to="/page2">page2</router-link><router-view></router-view></div>
</template>

当用户点击"page1"或"page2"链接时,Vue Router会根据路由规则匹配到对应的组件,并将其渲染在<router-view>中。

demo

路由配置:

// 该文件专门用于创建整个应用的路由器
import VueRouter from 'vue-router'
//引入组件
import About from '@/pages/About'
import Home from '@/pages/Home'//创建并暴露一个路由器
export default new VueRouter({routes:[{path:'/about',component:About},{path:'/home',component:Home}]
})

Banner组件:

<template><div class="col-xs-offset-2 col-xs-8"><div class="page-header"><h2>Vue Router Demo</h2></div></div>
</template><script>
export default {// eslint-disable-next-line vue/multi-word-component-namesname: "Banner"
}
</script><style scoped></style>

About组件:

<template><h2>我是About的内容</h2>
</template><script>
export default {// eslint-disable-next-line vue/multi-word-component-namesname: "About",beforeDestroy() {console.log('About组件即将销毁')},mounted() {console.log('About组件挂载完毕',this)}
}
</script><style scoped></style>

Home组件:

<template><h2>我是Home的内容</h2>
</template><script>
export default {// eslint-disable-next-line vue/multi-word-component-namesname: "Home",beforeDestroy() {console.log('Home组件即将销毁')},mounted() {console.log('Home组件挂载完毕',this)}
}
</script><style scoped></style>

App组件:

<template><div><div class="row"><Banner/><!--<div class="col-xs-offset-2 col-xs-8"><div class="page-header"><h2>Vue Router Demo</h2></div></div>--></div><div class="row"><div class="col-xs-2 col-xs-offset-2"><div class="list-group"><!-- 原始html中我们使用a标签实现页面的跳转 --><!-- <a class="list-group-item active" href="./about.html">About</a> --><!-- <a class="list-group-item" href="./home.html">Home</a> --><!-- Vue中借助router-link标签实现路由的切换 --><router-link class="list-group-item" active-class="active" to="/about">About</router-link><router-link class="list-group-item" active-class="active" to="/home">Home</router-link></div></div><div class="col-xs-6"><div class="panel"><div class="panel-body"><!-- 指定组件的呈现位置 --><router-view></router-view></div></div></div></div></div>
</template>
<script>import Banner from "@/components/Banner";
export default {name: "App",components: {Banner},
}
</script>

效果:
在这里插入图片描述
在这里插入图片描述
可见当切换时,会隐藏当前显示的路由组件,默认是被销毁掉的,挂载其显示路由组件

几个注意点

  1. 路由组件通常存放在pages文件夹,一般组件通常存放在components文件夹。
  2. 通过切换,“隐藏”了的路由组件,默认是被销毁掉的,需要的时候再去挂载。
  3. 每个组件都有自己的$route属性,里面存储着自己的路由信息。
  4. 整个应用只有一个router,可以通过组件的$router属性获取到。

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

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

相关文章

超文本标记语言(HTML)简介

HTML 基础 超文本标记语言&#xff08;英语&#xff1a;HyperText Markup Language&#xff0c;简称&#xff1a;HTML&#xff09;是一种用来结构化 Web 网页及其内容的标记语言。网页内容可以是&#xff1a;一组段落、一个重点信息列表、也可以含有图片和数据表。正如标题所示…

一年又一年志愿

--第一篇 20220624十年苦读&#xff0c;青春飞扬&#xff0c;其道大光&#xff0c;来日方长。又是一年高考时&#xff0c;高考改变命运&#xff0c;但是后面还有更关键几步&#xff0c;跟大家一起聊聊。之前写我考状元的经历&#xff0c;堂弟考省前十的经历&#xff0c;有不少…

Centos7防火墙firewal常用命令介绍

前言 在CentOS 7中&#xff0c;firewalld是默认的防火墙管理工具&#xff0c;它提供了一种简化和易于使用的方法来配置和管理防火墙规则。 firewalld简介 引入&#xff1a;从CentOS 7开始&#xff0c;默认使用firewalld来配置防火墙&#xff0c;而不是传统的iptables。配置文…

java基于ssm+jsp 母婴用品网站

1管理员功能模块 管理员登录&#xff0c;管理员通过输入用户名、密码等信息进行系统登录&#xff0c;如图1所示。 图1管理员登录界面图 管理员登录进入母婴用品网站可以查看主页、个人中心、用户管理、商品分类管理、商品信息管理、留言板管理、成长交流、系统管理、订单管理、…

上手微服务框架go-zero

文章目录 微服务框架与web框架的区别点在哪儿&#xff1f;为什么还要有微服务框架微服务框架与web框架的对比小结 为什么选go-zero&#xff1f;框架对比 下载并认识go-zero认识go-zero环境要求组成下载 实践go-zero基础功能案例apirpc服务功能说明准备构建rpc服务构建api服务服…

Oracle共享内存不释放

Oracle数据库使用共享内存来管理其系统全局区&#xff08;SGA&#xff09;和程序全局区&#xff08;PGA&#xff09;。当Oracle数据库的共享内存没有正确释放时&#xff0c;可能会导致数据库启动失败或性能问题。以下是一些可能的原因和解决方法&#xff1a; /dev/shm空间不足&…

LeetCode 179. 最大数

更多题解尽在 https://sugar.matrixlab.dev/algorithm 每日更新。 组队打卡&#xff0c;更多解法等你一起来参与哦&#xff01; LeetCode 179. 最大数&#xff0c;难度中等。 排序 解题思路&#xff1a;现将 int 类型转成 str 类型&#xff0c;然后进行字符串比较&#xff0c…

选择徐州视频服务器的主要作用

视频服务器是一种对视频音频数据进行压缩、存储和处理的专用嵌入式设备&#xff0c;以此满足了存储和传输的要求&#xff0c;会在远程控制与视频方面会得到广泛的应用&#xff0c;主要是由网络接口、视音频接口、协议接口和软件接口等构成的&#xff0c;可以实现远程监控的功能…

【GD32F303红枫派使用手册】第二十一节 I2C-EEPROM读写实验

21.1 实验内容 通过本实验主要学习以下内容&#xff1a; AT24C16 EEPROM的工作原理&#xff1b; IIC模块原理以及IIC驱动原理。 21.2 实验原理 21.2.1 AT24C16 EEPROM的工作原理 下图为AT24CXX系列EEPROM相关参数&#xff0c;由该图可知&#xff0c;AT24C16的存储容量为1…

C# 比较基础知识:最佳实践和技巧

以下是一些在 C# 中进行比较的技巧和窍门的概述。 1. 比较原始类型 对于原始类型&#xff08;int、double、char 等&#xff09;&#xff0c;可以使用标准比较运算符。 int a 5; int b 10; bool isEqual (a b); // false bool isGreater (a > b); // false bool is…

PHP——爬虫DOM解析

背景 php在爬取网页信息的时候&#xff0c;有一些函数可以使用。 这里介绍两个 DOMDocumentDOMXPath 代码解析 <?php // 示例HTML $html <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>Example</title><…

【D3.js in Action 3 精译】关于本书

文章目录 本书读者本书结构与路线图本书代码liveBook 在线论坛 D3.js 项目的传统开发步骤 本书读者 这本书适用于所有渴望在数据可视化工作中获得完全创意自由的人&#xff0c;从定制化的经典图表到创建独特的数据可视化布局&#xff0c;涵盖内容广泛&#xff0c;应有尽有。您…

c语言移位运算超出类型所能表示的范围告警

错误代码&#xff1a; *(unsigned int *)GPIOC_CRH & ~(0xf << 28); 告警内容&#xff1a; integer operation result is out of range 分析&#xff1a; integer operation result is out of range是因为在尝试对一个32位整型执行移位操作时超出了该类型所能表示…

重学java 80.Junit单元测试

我总是着急的解释我自己&#xff0c;却忘了厚爱无需多言 —— 24.6.21 一、Junit介绍 1.概述 Junit是一个单元测试框架,可以代替main方法去执行其他的方法 2.作用 可以单独执行一个方法,测试该方法是否能跑通 3.注意 Junit是第三方工具,所以使用之前需要导入jar包 二、J…

GraphQL vs REST:API设计的现代选择

随着技术的飞速发展&#xff0c;API&#xff08;应用程序接口&#xff09;设计成为了软件开发中不可或缺的一部分。REST&#xff08;Representational State Transfer&#xff09;和GraphQL作为两种主流的API设计风格&#xff0c;各自具有独特的优势和适用场景。本文将深入探讨…

idea导入项目右侧maven不显示的解决办法

不显示情况&#xff1a; 原因可能是读取项目出错&#xff0c;未正确加载pom文件造成的。 解决方案一&#xff1a; 关闭idea在项目目录中删除.idea文件夹重新打开项目&#xff0c;重新加载。 解决犯案二&#xff1a; 直接在pom文件中右键选择add as maven project。 解决方案三…

嵌入式Linux gcc 编译器使用解析

目录 1.说明 2.分步编译法 3.编译源文件的四个阶段 4.gdb调试及常用命令 5.Makefile 1.说明 源文件 main.c 想生成 source gcc –g –O2 main.c –o source 黄色部分便是控制字 -g用于GDB –O2用于优化编译; 绿色部分表示源,可以由多个组成,用空格隔开; gcc …

PythonWeb前端

摘要 学校的一门选修课&#xff0c;PythonWeb开发从入门到实践&#xff0c;用到的技术有Python,Flask,MySQL,前端三件套等&#xff0c;但因为是选修课&#xff0c;所以都只涉及到了一点点 Web前端基础 1.Web工作原理 概念&#xff1a; Web&#xff0c;万维网&#xff0c;一…

出差:能带的工具都要带上,宁可用不上,不可没有

昨天出差常州&#xff0c;我也是信心满满。就是烧录几个板子&#xff0c;在公司烧了无数次&#xff0c;也反复测试过了。 到了现场&#xff0c;傻眼了&#xff1a; 我以为是来烧云台&#xff0c;连六角螺丝刀都带上了&#xff0c;其他包括串口线、云台电缆。现场是烧板子&…

关于运用人工智能帮助自己实现英语能力的有效提升?

# 实验报告 ## 实验目的 - 描述实验的目标&#xff1a;自己可以知道&#xff0c;自己的ai学习方法是否可以有效帮助自己实现自己的学习提升。 预期结果&#xff1a;在自己利用科技对于自己进行学习的过程中&#xff0c;自己的成长速度应该是一个幂指数的增长 ## 文献回顾 根据…