news 2026/6/5 22:11:41

认识前端路由 VSCode 实操

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
认识前端路由 VSCode 实操

基础概念

什么是前端路由?

URL 变了,页面不刷新,只换掉局部内容 — 这就是前端路由的全部秘密

🌐

传统多页面(MPA)

每次点击链接都向服务器请求一个新的 HTML 文件,页面完全重新加载,有明显白屏闪烁。

单页面应用(SPA)

只加载一次 HTML,之后的"跳转"都由前端JavaScript控制,动态替换内容,体验丝滑。

🗺️

路由就是地图

路由表 = 一张地图,把每个URL 路径映射到对应的Vue 组件,告诉浏览器"这条路走哪里"。

对比项传统 MPA前端路由 SPA
页面跳转整页刷新✓ 不刷新
路由控制服务器✓ 前端 JS
用户体验有白屏✓ 流畅
首屏加载✓ 较快略慢(需加载JS)
SEO 友好✓ 天然支持需额外配置

原理图解

前端路由工作流程

从点击到渲染,5 个步骤完成一次"路由跳转"

① 用户点击<RouterLink>② URL 变化页面不刷新③ Router 监听onpopstate / hashchange④ 匹配路由表path → component⑤ 渲染组件<RouterView>Hash 模式监听 window.onhashchange,URL 含 #History 模式(推荐)调用 history.pushState(),URL 更干净

两种模式的 URL 长什么样

Hash 模式https://example.com/#/about

History 模式(推荐)https://example.com/about

核心 API

Vue Router 的三个核心角色

理解这三个东西,路由就掌握了 80%

<RouterLink>导航链接相当于 <a> 标签但不会刷新页面触发🗺️ Router路由核心维护路由表path → component执行导航守卫管理历史记录渲染<RouterView>内容显示区当前路由对应的组件渲染于此RouterLink 点击 → Router 查路由表 → RouterView 渲染对应组件

VSCode 实操

在 VSCode 中从零搭建路由

打开终端,跟着步骤一步步操作

1

创建 Vue 项目(选 Router)

在 VSCode 终端(Ctrl + `)中运行:

PowerShell 终端

# 进入你的项目目录 cd C:\Users\22121\Documents # 创建 Vue 项目 npm create vue@latest vue-router-demo

⚠️ 关键选项出现Add Vue Router for SPA development?时,一定选Yes,其他选项可以选 No。

2

安装依赖并启动

PowerShell 终端

cd vue-router-demo npm install npm run dev

浏览器打开http://localhost:5173,看到默认页面说明成功 ✅

3

查看自动生成的项目结构

VSCode 左侧资源管理器中,项目结构如下:

vue-router-demo/

├── src/

│ ├── router/

│ │ └── index.js ← 路由配置文件(核心)

│ ├── views/

│ │ ├── HomeView.vue ← 首页组件

│ │ └── AboutView.vue ← 关于页组件

│ ├── components/

│ ├── App.vue ← 根组件(含 RouterView)

│ └── main.js ← 入口(注册路由)

└── package.json

4

读懂路由配置文件 src/router/index.js

src/router/index.js

import { createRouter, createWebHistory } from 'vue-router' import HomeView from '../views/HomeView.vue' const router = createRouter({ // History 模式:URL 更干净,无 # 号 history: createWebHistory(import.meta.env.BASE_URL), routes: [ { path: '/', component: HomeView }, // 懒加载:访问 /about 时才加载组件,节省性能 { path: '/about', component: () => import('../views/AboutView.vue') }, ], }) export default router

5

读懂根组件 src/App.vue

src/App.vue

<template> <nav> <!-- RouterLink 相当于 <a>,但不刷新页面 --> <RouterLink to="/">首页</RouterLink> <RouterLink to="/about">关于</RouterLink> </nav> <!-- 当前路由匹配的组件渲染在这里 --> <RouterView /> </template>

6

✍️ 动手:新建第三个页面 ContactView.vue

src/views/下新建文件ContactView.vue

src/views/ContactView.vue

<template> <div> <h1>联系我们 📬</h1> <p>邮箱:lijunjie@example.com</p> </div> </template>

然后在router/index.js的 routes 数组里添加一行:

src/router/index.js — 新增一行

{ path: '/contact', component: () => import('../views/ContactView.vue') },

再在App.vue的 nav 里加个链接:

src/App.vue — 新增一行

<RouterLink to="/contact">联系</RouterLink>

✅ 保存后直接在浏览器点"联系"URL 变成/contact,页面不刷新但内容切换 — 前端路由生效!

7

🎯 进阶:动态路由(URL 带参数)

新建src/views/UserView.vue

src/views/UserView.vue

<script setup> import { useRoute } from 'vue-router' const route = useRoute() // 获取当前路由信息 </script> <template> <div> <h1>用户页面</h1> <!-- route.params.id 获取 URL 中的 :id 参数 --> <p>当前用户 ID:{{ route.params.id }}</p> </div> </template>

在路由表加:

src/router/index.js

// :id 是动态参数,可以是任意值 { path: '/user/:id', component: () => import('../views/UserView.vue') },

💡 试一试浏览器访问http://localhost:5173/user/42,页面显示 "用户ID:42"。 改成/user/99,内容也跟着变 — 这就是动态路由!

进阶概念

导航守卫 — 跳转前的"门卫"

在路由跳转前拦截,用于登录验证、权限控制等

用户点击跳转/dashboard🛡️ 导航守卫router.beforeEach()检查是否已登录?✓ 已登录允许进入渲染目标页面✗ 未登录重定向跳到 /login

src/router/index.js — 添加守卫

// 全局前置守卫:每次路由跳转前都会执行 router.beforeEach((to, from, next) => { const isLoggedIn = localStorage.getItem('token') // 如果目标页需要登录,但未登录 → 跳到登录页 if (to.path === '/dashboard' && !isLoggedIn) { next('/login') } else { next() // 放行 } })

总结

知识点一览表

把这张表背下来,路由相关的面试题基本都能应对

概念是什么代码/示例
路由配置path → component 的映射表{ path: '/about', component: About }
RouterLink不刷新的导航链接<RouterLink to="/about">
RouterView组件的渲染占位符<RouterView />
动态路由URL 中携带参数path: '/user/:id'
useRoute()获取当前路由信息route.params.id
useRouter()编程式导航router.push('/home')
懒加载按需加载组件,提升性能() => import('./About.vue')
导航守卫跳转前拦截,做权限检查router.beforeEach((to, from, next) => {})
Hash 模式URL 含 #,兼容性好createWebHashHistory()
History 模式URL 干净,需服务器配置createWebHistory()

🚀 下一步学什么?掌握基础路由后,可以进一步学习:嵌套路由(路由套路由)、路由元信息(meta)、命名路由、过渡动画、以及结合 Pinia 状态管理。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/5 22:09:29

强力工具完全指南:如何用Unlock-Music破解主流音乐平台加密限制

强力工具完全指南&#xff1a;如何用Unlock-Music破解主流音乐平台加密限制 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库&#xff1a; 1. https://github.com/unlock-music/unlock-music &#xff1b;2. https://git.unlock-music.dev/um/web 项目地…

作者头像 李华
网站建设 2026/6/5 22:08:18

Agent Memory Management

为什么需要 Memory LLM 原生没有记忆 大语言模型本质上是类似 y f(x) 的函数 其中 x 是用户输入&#xff0c;模型参数 A、B、C 在训练结束后就固定了&#xff0c;不会因为输入的改变而改变 因此原生 LLM 没有任何记忆能力 我们之所以觉得大模型"有记忆"&#xff0c;…

作者头像 李华
网站建设 2026/6/5 22:07:58

实战二:umask、sudo提权、进程

一、权限&umask配置&#xff08;1~3题&#xff09; 1、临时设置developer的umask027 # 切换developer su - developer umask 027知识点&#xff1a; umask027&#xff1a;文件默认权限666-027640 → rw-r-----&#xff1b;目录777-027750&#xff0c;符合题目要求文件rw-r-…

作者头像 李华
网站建设 2026/6/5 22:06:12

DeepSeek总结的使用实体-组件-系统和基于存在性处理进行Python编程39-40

39 — 系统的系统 到目前为止的主干假设每个系统都运行每个滴答&#xff0c;并在滴答预算内完成。这涵盖了模拟器的大部分工作——运动、EBP 分发、清理、持久化——以及围绕这些假设的章节。但这个假设并非普遍适用。实际模拟器至少有三种不符合此假设的工作类别。 优化。 一…

作者头像 李华
网站建设 2026/6/5 22:04:42

RemoteApp Tool终极指南:Windows远程应用管理的完整解决方案

RemoteApp Tool终极指南&#xff1a;Windows远程应用管理的完整解决方案 【免费下载链接】remoteapptool Create and manage RemoteApps hosted on Windows 7, 8, 10, 11, XP and Server. Generate RDP and MSI files for clients. 项目地址: https://gitcode.com/gh_mirrors…

作者头像 李华