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

认识前端路由 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 状态管理。

http://www.rkmt.cn/news/1469415.html

相关文章:

  • 2026 深圳瓷砖空鼓维修商家实测测评|同城上门瓷砖起翘脱砖修补哪家靠谱 - 吉林同城获客
  • 移动端APP开发:MonkeyCode在 Flutter 中的应用
  • 成都H型钢经销商推荐|型钢厂家|四川盛世钢联青白江最新现货批发 - 四川盛世钢联营销中心
  • 2026年6月四川靠谱导游TOP3参考|持证备案、纯玩无购物与避坑说明 - 随峰国旅
  • 靠谱的扫码点餐小程序哪个好?
  • SUMO进阶:利用TraCI Python接口实现车辆轨迹实时监控与数据提取
  • 2026年10款降AIGC软件亲测:最高AI率100%直降至0.12% - 降AI小能手
  • 1986-2015年全球30米分辨率城镇用地扩张占用水体时空数据集
  • 出差连赶三场客户对接会攒了6小时录音 试了多款会议纪要模板后2026我挖到高效整理的靠谱方
  • VK16K33B 点阵数显LED驱动芯片高亮数码管驱动控制器内置RC振荡器
  • 从Hello World到高效开发:VS Code + Rust Analyzer + 常用插件全配置指南
  • mediasoup关键帧请求流程解析
  • 【荔湾区】骑楼趟栊间的焕然如新——2026荔湾单位保洁开荒三强纪事 - 广州搬家老班长
  • 以AI治理AI!悬镜原创“AI智能体疫苗技术”硬核守护智能体运行时安全
  • Hermes Verification协议:从代码到证据的闭环验证
  • 什么证件照制作工具好用?2026最全证件照工具实测对比推荐 - 科技大爆炸
  • 调参不再玄学:手把手教你用吴恩达的‘试错循环’优化你的第一个深层神经网络
  • 2026实测:专业降AIGC工具选这款就对了3秒改写无痕迹 - 降AI小能手
  • 轻量级本地图书管理工具:Python+PyQt5+SQLite一键运行
  • 实战避坑指南:FFmpeg处理YUV420 NV12/P010数据时,内存对齐与性能优化的那些事儿
  • Qt Quick 粒子系统(一):架构总览与四层模型
  • 调试手记:低端机型上 HTTP/2 与 HTTP/3 性能差异及内存泄漏排查
  • 考试报名用的证件照制作选什么工具性价比高?2026考试证件照工具对比推荐 - 科技大爆炸
  • Windows Terminal终极指南:如何构建高效命令行工作环境的完整方案
  • 从防晒霜到光伏板:生活中无处不在的‘吸收率、反射率、透射率’原理与应用
  • 5G NR PDSCH调度实战:手把手教你从MCS查表到TBSize计算的完整流程(含DMRS与Overhead配置详解)
  • 当Stable Diffusion遇上Unity+WebRTC+情感计算SDK:一个被低估的实时AI互动娱乐栈(GitHub Star 48h破2.3k,文档已加密限阅)
  • 山东闱进教育:【常识】“黑黄金”碳纤维
  • 【从化区】温泉氤氲中的素净本真——2026从化单位保洁开荒三强纪事 - 广州搬家老班长
  • 2026国际EMBA排名榜单解析|优质国际化EMBA项目实力盘点