当前位置: 首页 > 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.jsqmd.com/news/957785/

相关文章:

  • 2026 深圳瓷砖空鼓维修商家实测测评|同城上门瓷砖起翘脱砖修补哪家靠谱 - 吉林同城获客
  • 移动端APP开发:MonkeyCode在 Flutter 中的应用
  • 成都H型钢经销商推荐|型钢厂家|四川盛世钢联青白江最新现货批发 - 四川盛世钢联营销中心
  • 小程序毕业设计-基于springboot后端的微信小程序视频点播基于springboot+微信小程序的视频点播微信小程序(源码+LW+部署文档+全bao+远程调试+代码讲解等)
  • 2026年6月重庆靠谱导游推荐TOP3|持证备案、纯玩无购物与避坑说明 - 随峰国旅
  • 基于小程序的医院预约挂号系统毕设
  • 实时机器人运动控制:智能制造底层核心,人形机器人催生全新增长曲线
  • 2026年6月四川靠谱导游TOP3参考|持证备案、纯玩无购物与避坑说明 - 随峰国旅
  • 靠谱的扫码点餐小程序哪个好?
  • 20260605 之所思 - 人生如梦
  • Claude Opus 4.8 vs GPT-5.5 vs DeepSeek V4:2026年三大旗舰模型实测对比与API接入方案
  • 嵌入式协议转换器设计:CAN总线与UART串口的双向透明通信实现
  • 2026年 国际物流专线推荐榜单:深圳/中美/中欧/中英/中日/东南亚专线实力派公司精选 - 品牌企业推荐师(官方)
  • SUMO进阶:利用TraCI Python接口实现车辆轨迹实时监控与数据提取
  • 会议视频快速转文字提取音频,实用办公工具实测 - 品牌测评鉴赏家
  • 同样是数字工厂,为什么别人降本千万,你却越上越亏?
  • 2026年10款降AIGC软件亲测:最高AI率100%直降至0.12% - 降AI小能手
  • Veo风格迁移部署踩坑清单:从A100到RTX 4090,6类硬件下显存溢出的5种精准定位法(含nvidia-smi实时诊断脚本)
  • 1986-2015年全球30米分辨率城镇用地扩张占用水体时空数据集
  • 新手福音:用快马AI生成带注释的comfyuiv8组件学习项目
  • HiBit Uninstaller:彻底卸载流氓软件的终极神器(附Hibit uninstaller官网安装包)
  • GHelper终极指南:华硕笔记本性能管家完全使用教程
  • 深圳本地五大搬家公司精选:2026最新实测红榜,实力靠谱商家一览 - 从来都是英雄出少年
  • 缺失值处理实战:从类型识别到下游模型敏感性测试
  • 出差连赶三场客户对接会攒了6小时录音 试了多款会议纪要模板后2026我挖到高效整理的靠谱方
  • Flutter | 商城项目鸿蒙(OpenHarmony)适配实战
  • 【荔湾区】骑楼趟栊间的焕然如新——2026荔湾单位保洁开荒三强纪事 - 广州搬家老班长
  • 以AI治理AI!悬镜原创“AI智能体疫苗技术”硬核守护智能体运行时安全
  • Hermes Verification协议:从代码到证据的闭环验证
  • Shiply App热修复紧急发布流程