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

【Vue3】路由基础

【Vue3】路由基础

  • 背景
  • 简介
  • 开发环境
  • 开发步骤及源码
  • 总结

背景

随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗的日子。本文内容并非完全原创,大多是参考其他文章资料整理所得,感谢每位技术人的开源精神。

简介

本文介绍 Vue3 中路由的基本写法。

开发环境

分类名称版本
操作系统WindowsWindows 11
IDEVisual Studio Code1.91.1

开发步骤及源码

1> 创建 Vue3 工程,参考:【Vue3】工程创建及目录说明。

2> 删除 src 目录下 assetscomponents 目录。

3> 修改 src 目录下 main.ts

import { createApp } from 'vue'
import App from './App.vue'createApp(App).mount('#app')

4> 创建三个页面组件,注意与功能组件不同,不放在 src/components 目录下,页面组件一般放在 pagesviews 目录下。

  • Dashboard.vue

    <template><div class="dashboard">这是仪表盘页面</div>
    </template><script setup lang="ts">
    </script><style scoped lang="scss">
    </style>
    
  • System.vue

    <template><div class="system">这是系统管理页面</div>
    </template><script setup lang="ts">
    </script><style scoped lang="scss">
    </style>
    
  • About.vue

    <template><div class="about">这是关于页面</div>
    </template><script setup lang="ts">
    </script><style scoped lang="scss">
    </style>
    

5> 执行 npm i vue-router 命令安装路由组件。

6> 在 src 下创建 router 目录,并在其中创建 index.ts 文件,此文件作用是创建并暴露路由器。

import { createRouter, createWebHistory } from 'vue-router'
import Dashboard from '@/pages/Dashboard.vue'
import System from '@/pages/System.vue'
import About from '@/pages/About.vue'const router = createRouter({// 路由器工作模式history: createWebHistory(),routes: [{path: '/dashboard',component: Dashboard},{path: '/system',component: System},{path: '/about',component: About}]
})export default router

7> 修改 main.ts 引入并使用路由器。

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'createApp(App).use(router).mount('#app')

8> 修改根组件 App.vue,调用路由器实现跳转功能。

<template><h1 class="title">Vue3路由</h1><hr><div class="route"><div class="menu"><div class="menu-item"><RouterLink to="/dashboard" active-class="active">仪表盘</RouterLink></div><div class="menu-item"><RouterLink to="/system" active-class="active">系统管理</RouterLink></div><div class="menu-item"><RouterLink to="/about" active-class="active">关于</RouterLink></div></div><div class="content"><RouterView /></div></div>
</template><script setup lang="ts">
import { RouterLink, RouterView } from 'vue-router'
</script><style scoped lang="scss">
.title {text-align: center;
}
.route {display: flex;justify-content: center;.menu {width: 200px;height: 500px;background-color: #F1F2F3;border-radius: 6px;.menu-item {height: 40px;line-height: 40px;text-align: center;margin: 5px;border-radius: 3px;text-decoration: none;}.menu-item:hover {background-color: white;cursor: pointer}a {text-decoration: none;}.active {color: #00AEEC;}}.content {width: 600px;height: 500px;margin-left: 10px;border: 1px solid #F1F2F3;}
}
</style>

9> 执行命令 npm run dev 启动应用,浏览器访问:http://localhost:5173/,点击左侧菜单观察页面变化。
在这里插入图片描述

总结

关键步骤:

  1. 安装路由组件:npm i vue-router
  2. 创建并暴露路由器:src/router/index.ts,包括:
    • 引入 createRouter 用于创建路由器;
    • 通过 createRouter 参数对象的 history 属性配置路由器工作模式,路由器工作模式有两类:createWebHistory()createWebHashHistory(),本文使用的是 createWebHistory(),两类工作模式间的差异将在其他文章中说明;
    • 通过 createRouter 参数对象的 routes 属性配置路由,每个路由由一个路径 path 和一个组件 component 构成;
    • 暴露路由 export default router
  3. 引入路由器:src/main.ts,作用是:
    • 全局注册 RouterLinkRouterView 组件;
    • 添加全局 $router$route 属性;
    • 启用 useRouter()useRoute() 组合式函数;
    • 触发路由器解析初始路由。
  4. 使用 Vue Router 提供的组件实现路由功能:
    • RouterLink:代替常规的 <a> 标签创建链接,使得能够在不重新加载页面的情况下改变 URL,处理 URL 的生成、编码和其他功能;
    • RouterView:渲染当前 URL 路径对应的页面组件。

相关文章:

【Vue3】路由基础

【Vue3】路由基础 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗的日子。本…...

掌握网络数据的钥匙:Python Requests-HTML库深度解析

文章目录 掌握网络数据的钥匙&#xff1a;Python Requests-HTML库深度解析背景&#xff1a;为何选择Requests-HTML&#xff1f;什么是Requests-HTML&#xff1f;如何安装Requests-HTML&#xff1f;5个简单库函数的使用方法3个场景下库的使用示例常见Bug及解决方案总结 掌握网络…...

网络安全: 模型的脆弱性,鲁棒性和隐私性

在网络安全领域&#xff0c;通常描述模型安全性时&#xff0c;会提到以下三个特性&#xff1a; 脆弱性&#xff08;Vulnerability&#xff09;&#xff1a;指模型在某些情况下容易受到攻击或被利用的弱点。例如&#xff0c;模型可能对对抗性攻击或梯度泄露攻击敏感。 鲁棒性&a…...

【go语言】go-webview2用法(持续更新)

文章目录 背景核心接口和方法扩展接口遗憾的是 背景 目前为止&#xff0c;已经有很多优秀的electron应用。但其特点也很明显&#xff1a;使用htmlcssjs构建的布局很精致&#xff0c;但是体积不容小觑&#xff08;最新版electron-egg打包出来的程序已经300MB&#xff09;。 vs…...

KNN 图像识别

KNN&#xff08;K-Nearest Neighbors&#xff0c;K最近邻&#xff09;算法是一种简单而有效的分类算法&#xff0c;也可以用于图像识别。它的基本思想是通过计算样本之间的距离&#xff0c;将待分类的样本归为其在训练集中最相近的K个样本所属的类别中最常见的类别 1. 准备工作…...

基于STM32和云平台的花卉养护系统设计(微信小程序)(209)

文章目录 一、前言1.1 项目介绍【1】项目功能介绍【2】设计实现的功能【3】项目硬件模块组成1.2 设计思路【1】整体设计思路【2】ESP8266工作模式配置1.3 项目开发背景【1】选题的意义【2】可行性分析【3】参考文献【4】摘要【5】选题背景【6】国内外技术发展现状1.4 开发工具的…...

编程语言进化史

编程语言多到你想象不到。 图片来自: 程序设计语言概念 发展历史 自从1946年冯诺依曼原理被提出&#xff0c;计算机数据和指令是通过二进制形式以及后来的汇编语言(二进制助记符)&#xff0c;但依然没有改变容易出错的本质。1951年Rutishauser提出的用编译程序实现高级语言的思…...

vuex的原理和使用方法

简介 Vuex 是 Vue.js 应用的状态管理模式&#xff0c;它为应用内的所有组件提供集中式的状态&#xff08;数据&#xff09;管理。可以帮我们管理 Vue 通用的数据 (多组件共享的数据)。 Vuex的构成 state&#xff1a;state 是 Vuex 的数据中心&#xff0c;也就是说state是用来…...

(javaweb)SpringBootWeb案例(毕业设计)案例--文件上传

1.简介 前端程序和服务端程序 对于前端 html文件放在static目录下 location---文件提交的位置 右键--copy value -------------c盘目录下 2.本地上传--文件存储 1. 2. 使用uuid&#xff1a;保证文件名是唯一的 此时 并没有文件的拓展名--所以需要---写后缀 用字符串截取 此时图…...

数据库之存储过程和函数

目录 一、存储过程和函数概述 二、创建并调用存储过程和函数 1.创建存储过程 2.创建存储函数 3.调用存储过程和函数 三、关于存储过程和函数的表达式 1.变量 1.变量的分类 2.在存储过程和函数中应用变量 2.定义条件和处理程序 1.定义条件 2.定义处理程序 3.游标的…...

《SPSS零基础入门教程》学习笔记——02.数据管理

文章目录 2.1 连续变量的离散化2.2 自动重编码、编秩与数值计数2.3 几个常用过程2.4 多个数据文件的操作2.5 数据字典2.6 数据核查&#xff08;1&#xff09;数据验证模块&#xff08;2&#xff09;数据检验 2.7 数据准备 计算新变量&#xff08;转换 -> 计算变量&#xff0…...

嵌入式软件的一些常用调试测试方法

嵌入式软件的仿真调试测试是确保软件质量和功能正确性的关键步骤。以下是几种常见的仿真调试测试方式&#xff1a; 1.集成开发环境&#xff08;IDE&#xff09;调试&#xff1a; 使用IDE&#xff08;如IAR EWARM、Keil MDK、Eclipse等&#xff09;内置的调试器进行断点设置、单…...

Android T about screen rotation(二)

需求:客户因为模具问题,屏幕方向需要动态的变动.(方向: 0 , 90 , 180 ,270) 拆分:设备开机过程中图像显示可分为三个阶段,boot logo(1)->kernel logo(2),这一段的处理需要驱动层,所以暂时忽略. 开机动画 Bootanimation(3)阶段 和 Home Launcher应用显示(4)阶段是需要修改的…...

qt反射之类反射、方法反射、字段反射

话不多说&#xff0c;直接上代码&#xff1a; main.cpp: #include < QCoreApplication > #include “fstudent.h” #include “manage.h” int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); //注册类型 qRegisterMetaType(“FStudent”); Manage m…...

服务器数据恢复—raid5阵列离线硬盘强制上线失败如何恢复数据?

服务器数据恢复环境&#xff1a; 某品牌2850服务器上有一组由6块SCSI硬盘组建的raid5磁盘阵列&#xff0c;上层操作系统为Redhat linuxext3文件系统。 服务器故障&初检&#xff1a; 服务器在运行过程中突然瘫痪&#xff0c;管理员对服务器中的raid进行检查后发现有两块硬盘…...

FastAPI+Vue3零基础开发ERP系统项目实战课 20240815上课笔记 列表和字典相关方法的学习和练习

昨日回顾 1、大小写转换2、去除空格3、判断是否为数字4、前缀后缀 昨日练习题进度 练习&#xff1a;判断验证码是否正确 1、生成一个由四个字符组成的验证码字符串&#xff0c;要求有大写有小写&#xff0c;要求左右两边有空格2、打印到控制台3、让用户输入这个验证码&…...

基于微信小程序的诗词智能学习系统的设计与实现(全网独一无二,24年最新定做)

文章目录 前言&#xff1a; 博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为…...

httplib库:用C++11搭建轻量级HTTP服务器

目录 引言 一. httplib库概述 二. httplib核心组件 2.1 数据结构 2.2 类和函数 2.3 服务器搭建 ​编辑 结语 引言 在现代软件开发中&#xff0c;HTTP服务是网络应用的基础。对于需要快速搭建HTTP服务器或客户端的场景&#xff0c;使用成熟的第三方库可以极大提高开发效…...

基于嵌入式C++、SQLite、MQTT、Modbus和Web技术的工业物联网网关:从边缘计算到云端集成的全栈解决方案设计与实现

一、项目概述 1.1 项目目标与用途 随着工业4.0时代的到来&#xff0c;传统工业设备与现代信息技术的结合越来越紧密。物联网工业网关作为连接工业设备与云端平台的桥梁&#xff0c;在工业自动化、设备监控、远程运维等方面发挥着至关重要的作用。本项目旨在设计并实现一个能够…...

Chapter 38 设计模式

欢迎大家订阅【Python从入门到精通】专栏&#xff0c;一起探索Python的无限可能&#xff01; 文章目录 前言一、单例模式二、工厂模式 前言 在软件开发中&#xff0c;设计模式提供了一种可重用的解决方案&#xff0c;以应对在特定环境中反复出现的问题。这些模式是基于经验总结…...

Z-Image-GGUF模型量化与压缩教程:在低显存GPU上运行大模型

Z-Image-GGUF模型量化与压缩教程&#xff1a;在低显存GPU上运行大模型 想用AI生成图片&#xff0c;但一看模型大小和显存要求就头疼&#xff1f;手头只有一张8GB显存的消费级显卡&#xff0c;是不是就只能和那些功能强大的图像生成模型说再见了&#xff1f; 别急着放弃。今天…...

实战应用:基于快马AI与OpenClaw构建Mac本地电商价格监控系统

最近在做一个电商价格监控的小工具&#xff0c;发现用OpenClaw配合Mac本地环境搭建特别方便。这里分享一下我的实战经验&#xff0c;希望能帮到有类似需求的同学。 为什么选择OpenClaw OpenClaw是个轻量级的Python爬虫框架&#xff0c;特别适合需要快速搭建数据采集系统的场景…...

Java 无人图书借阅系统设计与完整源码实现

以下是一个基于Java的无人图书借阅系统的设计与完整源码实现方案&#xff0c;涵盖系统架构、核心模块、数据库设计、关键代码实现及部署建议&#xff1a;一、系统架构设计1. 分层架构表现层&#xff1a;用户端&#xff1a;微信小程序&#xff08;UniApp开发&#xff09; H5页面…...

别再只测烟雾了!用STM32CubeMX+MQ-2传感器,做个厨房燃气泄漏+烟雾双检测器(附完整代码)

厨房安全卫士&#xff1a;基于STM32CubeMX与MQ-2的燃气烟雾双模检测系统 厨房是家庭安全事故的高发区域&#xff0c;燃气泄漏和烟雾积聚都可能引发严重后果。传统烟雾报警器功能单一&#xff0c;而市面上的复合型安防设备价格昂贵。本文将带你用STM32单片机和MQ-2气敏传感器&am…...

Qwen3-TTS快速部署教程:一键启动Web服务,3分钟开始声音克隆

Qwen3-TTS快速部署教程&#xff1a;一键启动Web服务&#xff0c;3分钟开始声音克隆 1. 为什么选择Qwen3-TTS进行语音克隆 想象一下这样的场景&#xff1a;你需要为海外客户录制多语言产品介绍&#xff0c;但雇佣专业配音演员成本高昂&#xff1b;或者想为自己的视频内容添加个…...

半导体制造中的ProcessJob与Control Job:从定义到实战避坑指南

半导体制造中的ProcessJob与Control Job&#xff1a;从定义到实战避坑指南 在半导体制造的高精度世界里&#xff0c;每一片晶圆的流转都像一场精密编排的交响乐。而ProcessJob&#xff08;PJ&#xff09;和Control Job&#xff08;CJ&#xff09;就是这场演奏中不可或缺的指挥…...

GLM-4-9B-Chat-1M与Dify平台集成:无代码长文本处理系统搭建

GLM-4-9B-Chat-1M与Dify平台集成&#xff1a;无代码长文本处理系统搭建 1. 引言 想象一下&#xff0c;你手头有一份200页的法律合同需要快速审核&#xff0c;或者需要分析整本学术专著的核心观点&#xff0c;甚至要处理多语言的长篇商业文档。传统的人工处理方式耗时耗力&…...

小麦联合收割机的设计【说明书+SW三维+CAD图纸】

小麦联合收割机作为现代农业机械化的核心装备&#xff0c;其设计需兼顾效率、可靠性与适应性。该设备通过集成收割、脱粒、清选及集粮功能&#xff0c;实现小麦收获环节的连续作业&#xff0c;显著缩短田间作业周期&#xff0c;降低人工劳动强度。其核心作用体现在三方面&#…...

Z-Image-Turbo商业应用探索:稳定可靠的AI绘画方案推荐

Z-Image-Turbo商业应用探索&#xff1a;稳定可靠的AI绘画方案推荐 1. 商业级AI绘画的新选择 在数字内容创作需求爆炸式增长的今天&#xff0c;Z-Image-Turbo作为阿里通义实验室开源的文生图模型&#xff0c;凭借其卓越的稳定性和高效性&#xff0c;正在成为商业应用领域的新宠…...

Flutter项目卡在‘assembleDebug’?Gradle配置优化全攻略

1. 为什么Flutter项目会卡在assembleDebug阶段&#xff1f; 这个问题困扰过无数Flutter开发者&#xff0c;尤其是刚入门的新手。当你满怀期待地运行flutter run命令&#xff0c;结果控制台卡在Running Gradle task assembleDebug...一动不动&#xff0c;那种感觉就像等一辆永远…...