当前位置: 首页 > news >正文

Vue 3 30天精进之旅:Day 07 - Vue Router

引言

在前几天的学习中,我们深入探讨了Vue的表单输入绑定及其处理机制。今天,我们将学习Vue Router,这是Vue.js官方提供的路由管理器,用于构建单页面应用(SPA)。通过使用Vue Router,你可以轻松地实现页面之间的切换,管理URL并保持应用的状态。

1. 什么是Vue Router?

Vue Router是Vue.js的官方路由管理器,它用于在单页面应用中实现路由功能。通过Vue Router,你可以定义不同的路由,每个路由对应一个组件,使得用户能够在不重新加载页面的情况下浏览不同的视图。

2. 安装和配置Vue Router

首先,我们需要在我们的Vue项目中安装Vue Router。以下是安装和基本配置的步骤:

2.1 安装Vue Router

在项目根目录下运行以下命令:

npm install vue-router@4
2.2 创建路由配置

src目录下创建一个名为router的文件夹,并在该文件夹中创建一个名为index.js的文件。然后在index.js中定义路由配置:

import { createRouter, createWebHistory } from 'vue-router';
import Home from '../views/Home.vue';
import About from '../views/About.vue';const routes = [{path: '/',name: 'Home',component: Home,},{path: '/about',name: 'About',component: About,},
];const router = createRouter({history: createWebHistory(),routes,
});export default router;

3. 创建视图组件

src/views目录下创建两个新文件:Home.vueAbout.vue

3.1 Home.vue
<template><div><h1>首页</h1><p>欢迎来到我们的应用!</p></div>
</template><script>
export default {name: 'Home',
};
</script><style scoped>
h1 {color: #42b983;
}
</style>

3.2 About.vue
<template><div><h1>关于我们</h1><p>这是一个关于我们的应用的页面。</p></div>
</template><script>
export default {name: 'About',
};
</script><style scoped>
h1 {color: #42b983;
}
</style>

4. 在主应用中使用Vue Router

接下来,我们需要在src/main.js文件中引入并使用Vue Router。修改src/main.js如下:

import { createApp } from 'vue';
import App from './App.vue';
import router from './router/index.js'; // 引入路由配置createApp(App).use(router) // 使用路由.mount('#app');

5. 添加路由链接

为了在不同的路由之间进行导航,我们可以使用<router-link>组件。修改src/App.vue如下:

<template><div id="app"><nav><router-link to="/">首页</router-link><router-link to="/about">关于</router-link></nav><router-view></router-view> <!-- 渲染匹配的组件 --></div>
</template><script>
export default {name: 'App',
};
</script><style>
nav {margin-bottom: 20px;
}router-link {margin-right: 10px;
}
</style>

在这个示例中,<router-link>用来创建导航链接,而<router-view>用以渲染匹配的视图组件。

6. 路由的嵌套和动态路由

6.1 嵌套路由

你可以创建嵌套路由,以便在一个视图中显示多个层级的组件。下面是如何创建嵌套路由的示例。首先,在src/views目录下创建一个名为User.vue的组件:

<template><div><h1>用户页面</h1><router-link to="profile">查看个人资料</router-link><router-link to="settings">设置</router-link><router-view></router-view> <!-- 渲染嵌套的路由组件 --></div>
</template><script>
export default {name: 'User',
};
</script>

然后,创建两个新组件:Profile.vueSettings.vue,并在router/index.js中配置嵌套路由:

import Profile from '../views/Profile.vue';
import Settings from '../views/Settings.vue';// 在routes数组中添加User路由
const routes = [// 之前的路由...{path: '/user',name: 'User',component: User,children: [{path: 'profile',name: 'Profile',component: Profile,},{path: 'settings',name: 'Settings',component: Settings,},],},
];

7. 处理路由参数

你可以在路由中定义动态参数,以便在URL中传递信息。例如,如果你想创建一个用户详情页面,可以创建一个动态路由:

{path: '/user/:id',name: 'UserDetail',component: UserDetail,
}

然后在UserDetail组件中,你可以通过this.$route.params.id访问该参数。

8. 实践:构建一个简单的导航应用

为了巩固今天的学习,我们将构建一个简单的导航应用,用户可以在首页和关于页面之间切换,以及访问用户页面。

<template><div id="app"><nav><router-link to="/">首页</router-link><router-link to="/about">关于</router-link><router-link to="/user">用户</router-link></nav><router-view></router-view></div>
</template><script>
export default {name: 'App',
};
</script><style>
nav {margin-bottom: 20px;
}
</style>

router/index.js中,添加新的路由和组件。

9. 总结

今天我们深入学习了Vue Router的基本概念与用法,包括如何安装和配置路由、创建路由链接、嵌套路由及动态路由参数。通过构建简单的导航应用,我们巩固了对路由管理的理解,并为构建更复杂的单页面应用打下了基础。

相关文章:

Vue 3 30天精进之旅:Day 07 - Vue Router

引言 在前几天的学习中&#xff0c;我们深入探讨了Vue的表单输入绑定及其处理机制。今天&#xff0c;我们将学习Vue Router&#xff0c;这是Vue.js官方提供的路由管理器&#xff0c;用于构建单页面应用&#xff08;SPA&#xff09;。通过使用Vue Router&#xff0c;你可以轻松…...

Redis学习之哨兵二

一、API 1.sentinel masters:展示被监控的主节点状态及相关的统计信息 2.sentinel master <master name>:展示指定的主节点的状态以及相关的统计信息 3.sentinel slaves <master name>:展示指定主节点的从节点状态以及相关的统计信息 4.sentinel sentinels <mas…...

本地部署AI大模型(deepseek r1)说明

1、硬件环境和操作系统 win11intel i5 8C16G deepseek-1.5B和7B**&#xff1a;选择RTX 3060或其他 Pascal架构显卡&#xff0c;搭配至少8GB的内存。 deepseek-70B**&#xff1a;推荐使用RTX 40系列 APU 或更高世代显卡&#xff0c;…...

幸运数字——蓝桥杯

1.问题描述 哈沙德数是指在某个固定的进位制当中&#xff0c;可以被各位数字之和整除的正整数。例如 126126 是十进制下的一个哈沙德数&#xff0c;因为 (126)10mod(126)0&#xff1b;126 也是八进制下的哈沙德数&#xff0c;因为 (126)10(176)8&#xff0c;(126)10​mod(176)…...

[250129] Archinstall 3.0.2 发布 | Wolfram 语言与 Mathematica 14.2 版本发布

目录 Archinstall 3.0.2 版本发布Wolfram 语言与 Mathematica 14.2 版本发布&#x1f31f; 主要亮点 Archinstall 3.0.2 版本发布 Archlinux 的自动化安装程序 Archinstall 发布了 3.0.2 版本&#xff0c;该版本带来了大量的改进和修复&#xff0c;以及一些新功能和贡献者。 …...

ios swift画中画技术尝试

继上篇&#xff1a;iOS swift 后台运行应用尝试失败-CSDN博客 为什么想到画中画&#xff0c;起初是看到后台模式里有一个picture in picture&#xff0c;去了解了后发现这个就是小窗口视频播放&#xff0c;方便用户执行多任务。看小窗口视频的同时&#xff0c;可以作其他的事情…...

第21节课:前端构建工具—自动化与模块化的利器

目录 前端构建工具的重要性任务运行器&#xff1a;Gulp与GruntGulpGulp的工作原理安装与使用Gulp GruntGrunt的工作原理安装与使用Grunt 模块打包器&#xff1a;WebpackWebpack简介Webpack的工作原理安装与使用Webpack 实践&#xff1a;使用Gulp和Webpack构建前端项目示例&…...

python3+TensorFlow 2.x 基础学习(一)

目录 TensorFlow 2.x基础 1、安装 TensorFlow 2.x 2、TensorFlow 2.x 基础概念 2、1 Eager Execution 2、2 TensorFlow 张量&#xff08;Tensor&#xff09; 3、使用Keras构建神经网络模型 3、1 构建 Sequential 模型 3、2 编译模型 1、Optimizer&#xff08;优化器&a…...

在sortablejs的拖拽排序情况下阻止input拖拽事件

如题 问题 在vue3的elementPlus的table中&#xff0c;通过sortablejs添加了行拖拽功能&#xff0c;但是在行内会有输入框&#xff0c;此时拖拽输入框会触发sortablejs的拖拽功能 解决 基于这个现象&#xff0c;我怀疑是由于拖拽事件未绑定而冒泡到后面的行上从而导致的拖拽…...

doris:异常数据处理

在导入过程中&#xff0c;源数据列与目标列的数据类型可能存在不一致的情况。导入过程会对这些类型不一致的数据进行转换&#xff0c;但在转换过程中可能会出现字段类型不匹配、字段超长、精度不匹配等问题&#xff0c;从而导致转换失败。 为了处理这些异常情况&#xff0c;Do…...

汇编基础语法及其示例

1.汇编指令 1.1汇编指令的基本格式 <opcode>{<cond>}{s} <Rd> , <Rn> , <shifter_operand> <功能码>{<条件码>}{cpsr影响位} <目标寄存器> , <第一操作寄存器> , <第二操作数> 注&#xff1a;第一操作寄存器…...

使用python调用JIRA6 进行OAuth1认证获取AccessToken

Jira配置应用程序链接 1) 创建应用程序链接 登录 JIRA 管理后台。转到 Administration > Applications > Application Links。在输入框中输入外部应用程序的 URL&#xff08;例如 GitLab 或自定义应用&#xff09;&#xff0c;然后点击 Create new link。 2) 配置 Con…...

关于el-table翻页后序号列递增的组件封装

需求说明&#xff1a; 项目中经常会用到的一个场景&#xff0c;表格第一列显示序号&#xff08;1、2、3...&#xff09;&#xff0c;但是在翻页后要递增显示序号&#xff0c;例如10、11、12&#xff08;假设一页显示10条数据&#xff09;&#xff0c;针对这种情况&#xff0c;封…...

Android createScaledBitmap与Canvas通过RectF drawBitmap生成马赛克/高斯模糊(毛玻璃)对比,Kotlin

Android createScaledBitmap与Canvas通过RectF drawBitmap生成马赛克/高斯模糊&#xff08;毛玻璃&#xff09;对比&#xff0c;Kotlin import android.graphics.Bitmap import android.graphics.BitmapFactory import android.graphics.Canvas import android.graphics.RectF …...

Linux 进程概念

目录 一、前言 二、概念实例&#xff0c;正在执行的程序等 三、描述进程-PCB 四、组织进程 五、查看进程 ​编辑六、通过系统调用获取进程标示符 七、进程切换和上下文数据 1.进程切换 2.上下文数据 一、前言 在Linux中&#xff0c;每个执行的程序叫做进程&#xff…...

Kafa分区策略实现

引言 Kafka 的分区策略决定了生产者发送的消息会被分配到哪个分区中&#xff0c;合理的分区策略有助于实现负载均衡、提高消息处理效率以及满足特定的业务需求。 轮询策略&#xff08;默认&#xff09; 轮询策略是 Kafka 默认的分区策略&#xff08;当消息没有指定键时&…...

元素的显示与隐藏

display显示隐藏visibility显示隐藏overflow溢出显示隐藏 display属性 visibility属性 overflow溢出...

“AI视频智能分析系统:让每一帧视频都充满智慧

嘿&#xff0c;大家好&#xff01;今天咱们来聊聊一个特别厉害的东西——AI视频智能分析系统。想象一下&#xff0c;如果你有一个超级聪明的“视频助手”&#xff0c;它不仅能自动识别视频中的各种元素&#xff0c;还能根据内容生成详细的分析报告&#xff0c;是不是感觉特别酷…...

LeetCode:63. 不同路径 II

跟着carl学算法&#xff0c;本系列博客仅做个人记录&#xff0c;建议大家都去看carl本人的博客&#xff0c;写的真的很好的&#xff01; 代码随想录 LeetCode&#xff1a;63. 不同路径 II 给定一个 m x n 的整数数组 grid。一个机器人初始位于 左上角&#xff08;即 grid[0][0]…...

P4681 [THUSC 2015] 平方运算 Solution

Description 给定序列 a ( a 1 , a 2 , ⋯ , a n ) a(a_1,a_2,\cdots,a_n) a(a1​,a2​,⋯,an​) 和常数 p p p &#xff0c;有 m m m 个操作&#xff0c;分以下两种&#xff1a; modify ⁡ ( l , r ) \operatorname{modify}(l,r) modify(l,r)&#xff1a;对每个 i ∈ [ …...

机器人抓取与操作概述(深蓝)——1

工业机器人&#xff1a;① “臂”的形态 ② “手”的形态 ③ 视觉&#xff0c;力和触觉 1 机器人的不同形态 “臂”的形态 “手”的形态 2 常见的操作任务 操作&#xff1a;插入、推和滑 抓取&#xff1a;两指&#xff08;平行夹爪&#xff09;抓取、灵巧手抓取 落地-产…...

算法基础学习——快排与归并(附带java模版)

快速排序和归并排序是两种速度较快的排序方式&#xff0c;是最应该掌握的两种排序算法&#xff0c; &#xff08;一&#xff09;快速排序&#xff08;不稳定的&#xff09; 基本思想&#xff1a;分治 平均时间复杂度&#xff1a;O(nlogn) / 最慢O(n^2) / 最快O(n) 步骤&…...

JavaScript_02 表单

表单常用演示: 1.图片 结果失真了... 2.切换图片 切换结果 3.表单:...

接口 V2 完善:分布式环境下的 WebSocket 实现与 Token 校验

&#x1f3af; 本文档详细介绍了如何使用WebSocket协议优化客户端与服务端之间的通信&#xff0c;特别是在处理异步订单创建通知的场景中。通过引入WebSocket代替传统的HTTP请求-响应模式&#xff0c;实现了服务器主动向客户端推送数据的功能&#xff0c;极大地提高了实时性和效…...

Android中Service在新进程中的启动流程2

目录 1、Service在客户端的启动入口 2、Service启动在AMS的处理 3、Service在新进程中的启动 4、Service与AMS的关系再续 上一篇文章中我们了解了Service在新进程中启动的大致流程&#xff0c;同时认识了与客户端进程交互的接口IApplicationThread以及与AMS交互的接口IActi…...

C语言初阶力扣刷题——349. 两个数组的交集【难度:简单】

1. 题目描述 力扣在线OJ题目 给定两个数组&#xff0c;编写一个函数来计算它们的交集。 示例&#xff1a; 输入&#xff1a;nums1 [1,2,2,1], nums2 [2,2] 输出&#xff1a;[2] 输入&#xff1a;nums1 [4,9,5], nums2 [9,4,9,8,4] 输出&#xff1a;[9,4] 2. 思路 直接暴力…...

Java 大视界 -- Java 大数据在自动驾驶中的数据处理与决策支持(68)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

DeepSeek学术写作测评第二弹:数据分析、图表解读,效果怎么样?

我是娜姐 迪娜学姐 &#xff0c;一个SCI医学期刊编辑&#xff0c;探索用AI工具提效论文写作和发表。 针对最近全球热议的DeepSeek开源大模型&#xff0c;娜姐昨天分析了关于论文润色、中译英的详细效果测评&#xff1a; DeepSeek学术写作测评第一弹&#xff1a;论文润色&#…...

(2)SpringBoot自动装配原理简介

SpringBoot自动装配 这里写目录标题 SpringBoot自动装配启动器主程序自定义扫描包SpringBootApplicationSpringBootConfigurationEnableAutoConfigurationAutoConfigurationPackageImport({AutoConfigurationImportSelector.class})选择器AutoConfigurationEntrygetCandidateCo…...

Rust:Rhai脚本编程示例

当然&#xff0c;以下是一个简单的Rhai脚本编程示例&#xff0c;展示了如何在Rust中使用Rhai执行脚本。 首先&#xff0c;你需要确保你的Rust项目中包含了rhai库。你可以在你的Cargo.toml文件中添加以下依赖项&#xff1a; [dependencies] rhai "0.19" # 请检查最…...

深入理解文件描述符

问题 文件描述符只是一个整数值&#xff0c;那么系统是如何利用这个整数值来完成文件读写的呢&#xff1f; 什么是文件系统&#xff1f; 计算机中用于组织、存储和管理文件的数据结构集合 管理磁盘或其他存储介质上的空间 (将存储介质分块管理)保证文件数据不被破坏&#xf…...

使用CSS实现一个加载的进度条

文章目录 使用CSS实现一个加载的进度条一、引言二、步骤一&#xff1a;HTML结构与CSS基础样式1、HTML结构2、CSS基础样式 三、步骤二&#xff1a;添加动画效果1、使用CSS动画2、结合JavaScript控制动画 四、使用示例五、总结 使用CSS实现一个加载的进度条 一、引言 在现代网页…...

SQL 指南

SQL 指南 引言 SQL(Structured Query Language,结构化查询语言)是一种用于管理关系数据库系统的标准计算机语言。自1970年代问世以来,SQL已经成为了数据库管理和数据操作的事实标准。本文旨在为初学者和有经验的数据库用户提供一个全面的SQL指南,涵盖SQL的基础知识、高级…...

sqlzoo答案4:SELECT within SELECT Tutorial

sql练习&#xff1a;SELECT within SELECT Tutorial - SQLZoo world表&#xff1a; namecontinentareapopulationgdpAfghanistanAsia6522302550010020343000000AlbaniaEurope28748283174112960000000AlgeriaAfrica238174137100000188681000000AndorraEurope46878115371200000…...

斐波那契数(信息学奥赛一本通-1071)

【题目描述】 菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1&#xff0c;接下来每个数都等于前面2个数之和。给出一个正整数k&#xff0c;要求菲波那契数列中第k个数是多少。 【输入】 输入一行&#xff0c;包含一个正整数k。&#xff08;1 ≤ k ≤ 46&#xff09;…...

数据结构与算法再探(六)动态规划

目录 动态规划 (Dynamic Programming, DP) 动态规划的基本思想 动态规划的核心概念 动态规划的实现步骤 动态规划实例 1、爬楼梯 c 递归&#xff08;超时&#xff09;需要使用记忆化递归 循环 2、打家劫舍 3、最小路径和 4、完全平方数 5、最长公共子序列 6、0-1背…...

ECMAScript--promise的使用

​ 一、Promise的简介 Promise是一个代理&#xff0c;它所代表的值在创建时并不一定是已知的。借助Promise&#xff0c;我们能够将处理程序与异步操作最终的成功值或者失败原因关联起来。这一特性使得异步方法可以像同步方法那样返回值&#xff0c;不同之处在于异步方法不会立…...

微服务入门(go)

微服务入门&#xff08;go&#xff09; 和单体服务对比&#xff1a;里面的服务仅仅用于某个特定的业务 一、领域驱动设计&#xff08;DDD&#xff09; 基本概念 领域和子域 领域&#xff1a;有范围的界限&#xff08;边界&#xff09; 子域&#xff1a;划分的小范围 核心域…...

【自学笔记】计算机网络的重点知识点-持续更新

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 计算机网络重点知识点一、计算机网络概述二、网络分类三、网络性能指标四、网络协议与体系结构五、数据交换方式六、物理层与数据链路层七、网络层与运输层八、应用…...

leetcode——二叉树的中序遍历(java)

给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,3,2] 示例 2&#xff1a; 输入&#xff1a;root [] 输出&#xff1a;[] 示例 3&#xff1a; 输入&#xff1a;root [1] 输出…...

neo4j-community-5.26.0 install in window10

在住处电脑重新配置一下neo4j, 1.先至官方下载 Neo4j Desktop Download | Free Graph Database Download Neo4j Deployment Center - Graph Database & Analytics 2.配置java jdk jdk 21 官网下载 Java Downloads | Oracle 中国 path: 4.查看java -version 版本 5.n…...

物联网智能项目之——智能家居项目的实现!

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///计算机爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于物联网智能项目之——智能家居项目…...

基于SpringBoot的假期周边游平台的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

JavaScript_03 超简计算器

版本一: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>计算器</title><script type"text/javascript">function add(){let num1 document.getElementById("number1&qu…...

【重生之我在学习C语言指针详解】

目录 ​编辑 --------------------------------------begin---------------------------------------- 引言 一、指针基础 1.1 内存地址 1.2 指针变量 1.3 指针声明 1.4 取地址运算符 & 1.5 解引用运算符 *** 二、指针运算 2.1 指针加减运算 2.2 指针关系运算 三…...

深度学习每周学习总结R5(LSTM-实现糖尿病探索与预测-模型优化)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客R7中的内容&#xff0c;为了便于自己整理总结起名为R5&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 目录 0. 总结优化细节&#xff08;目前只采用了1、2两种方式&#xff09;1. L2 正则…...

单元测试在复杂业务逻辑开发中的重要性与实践

背景 以前编写程序时&#xff0c;我并没有养成大量撰写单元测试的习惯&#xff0c;尤其是在写偏向业务代码的情况下&#xff0c;写的单元测试很少&#xff0c;只有在封装一些公共方法的时候才会写一些测试用例。 然而&#xff0c;最近我在开发的一个业务时&#xff0c;深刻地…...

Kubernetes 环境中的自动化运维实战指南

Kubernetes 作为容器编排领域的领导者,已经成为云原生应用的核心基础设施。然而,随着集群规模的扩大和应用的复杂化,手动运维 Kubernetes 集群变得愈发困难。自动化运维成为提升效率、保障系统稳定性的关键。本文将详细介绍如何在 Kubernetes 环境中实施自动化运维,涵盖工具…...

Linux 如何使用fdisk进行磁盘相关的操作

简介 fdisk 命令是 Linux 中用于管理磁盘分区的强大文本实用程序。它可以创建、删除、调整大小和修改硬盘上的分区。 基本语法 fdisk [options] <device> <device>&#xff1a;要管理的磁盘&#xff0c;例如 /dev/sda、/dev/nvme0n1 或 /dev/vda 示例用法 列…...

嵌入式Linux:如何监视子进程

目录 1、wait()函数 2、waitpid()函数 3、SIGCHLD信号 在嵌入式Linux系统中&#xff0c;父进程通常需要创建子进程来执行特定任务&#xff0c;例如处理网络请求、执行计算任务等。监视子进程的状态不仅可以确保资源的合理利用&#xff0c;还能防止僵尸进程的产生&#xff0c…...