Vue基本路由

一、前言

你是否见过这样的网站:点击导航菜单,页面内容变了,但浏览器并没有"刷新"?

这就是 单页应用(SPA) 的典型特征,而实现这种"无刷新跳转"的核心技术,就是------前端路由

在 Vue 中,我们使用 vue-router 来管理页面之间的跳转。它是 Vue 官方的路由管理器,与 Vue 深度集成,使用非常简单。

本文将带你: ✅ 理解什么是前端路由

✅ 快速搭建一个带路由的 Vue 项目

✅ 掌握 router-linkrouter-view 的基本用法

✅ 实现页面跳转与参数传递

无需任何前置知识,跟着步骤一步步操作,你也能轻松实现页面切换!

二、什么是路由?

在 Web 开发中,"路由"原本是服务器端的概念:根据不同的 URL,返回不同的页面内容

而在前端,"前端路由"指的是:根据不同的 URL,渲染不同的组件,而不刷新整个页面

比如:

  • 访问 / → 显示首页
  • 访问 /about → 显示关于页
  • 访问 /user/123 → 显示用户 123 的信息

这一切都在同一个 HTML 页面中完成,用户体验更流畅。

三、创建一个带路由的 Vue 项目

1. 使用 Vue CLI 创建项目(推荐)

bash 复制代码
# 安装 Vue CLI(如果未安装)
npm install -g @vue/cli

# 创建项目
vue create my-project

# 进入项目
cd my-project

在创建过程中,选择 "Manually select features" ,然后勾选 Router ,这样会自动安装并配置 vue-router


2. 项目结构说明

安装 vue-router 后,项目中会多出以下文件:

复制代码
src/
├── router/
│   └── index.js        # 路由配置文件
├── views/
│   ├── Home.vue        # 首页组件
│   └── About.vue       # 关于页组件
└── App.vue             # 根组件,包含 router-view

四、基本路由配置

打开 src/router/index.js,你会看到类似代码:

javascript 复制代码
import { createRouter, createWebHistory } from 'vue-router'
import Home from '../views/Home.vue'
import About from '../views/About.vue'

// 定义路由规则
const routes = [
  { path: '/', component: Home },
  { path: '/about', component: About }
]

// 创建路由实例
const router = createRouter({
  history: createWebHistory(), // 使用 history 模式
  routes
})

export default router

✅ 这段代码的意思是:

  • 当 URL 是 / 时,显示 Home 组件
  • 当 URL 是 /about 时,显示 About 组件

五、使用 <router-view><router-link>

1. <router-view>:路由出口

<router-view> 是一个占位符,匹配到的组件会在这里显示。

打开 App.vue

html 复制代码
<template>
  <div id="app">
    <h1>我的网站</h1>
    
    <!-- 导航菜单 -->
    <nav>
      <router-link to="/">首页</router-link> |
      <router-link to="/about">关于</router-link>
    </nav>

    <!-- 路由组件渲染在这里 -->
    <router-view></router-view>
  </div>
</template>

<style>
nav a {
  text-decoration: none;
  margin: 0 10px;
}
nav a.router-link-exact-active {
  color: #42b983;
  font-weight: bold;
}
</style>

2. <router-link>:声明式导航

  • to="/" 表示点击后跳转到 / 路径
  • 它会被渲染为 <a> 标签,但不会刷新页面
  • 当前激活的链接会自动添加 router-link-exact-active 类,可用于样式高亮

六、运行项目

bash 复制代码
npm run serve

打开浏览器访问 http://localhost:8080,你会发现:

  • 默认显示"首页"内容
  • 点击"关于",页面内容变为"关于页",URL 变为 /about,但页面没有刷新!

✅ 恭喜你,已经成功实现了 Vue 的基本路由!

七、动态路由(简单了解)

如果你想根据用户 ID 显示不同内容,比如 /user/1/user/2,可以使用动态路由

1. 添加动态路由

javascript 复制代码
// router/index.js
import User from '../views/User.vue'

const routes = [
  // ... 其他路由
  { path: '/user/:id', component: User } // :id 是动态参数
]

2. 在组件中获取参数

html 复制代码
<!-- views/User.vue -->
<template>
  <div>
    <h2>用户详情</h2>
    <p>当前用户ID:{{ $route.params.id }}</p>
  </div>
</template>

<script>
export default {
  mounted() {
    console.log('用户ID:', this.$route.params.id)
  }
}
</script>

现在访问 /user/123,页面会显示 "当前用户ID:123"。

八、编程式导航(用 JS 跳转)

除了点击链接,你也可以用 JavaScript 控制跳转。

html 复制代码
<template>
  <div>
    <button @click="goHome">回到首页</button>
    <button @click="goAbout">去关于页</button>
  </div>
</template>

<script>
export default {
  methods: {
    goHome() {
      this.$router.push('/')
    },
    goAbout() {
      this.$router.push('/about')
    }
  }
}
</script>
  • this.$router.push(path):跳转到指定路径
  • this.$router.back():后退一页

九、常见问题

❓ 页面跳转后,浏览器地址栏没变化?

检查是否正确引入了 router

javascript 复制代码
// main.js
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'  // 引入路由

createApp(App).use(router).mount('#app') // 使用路由

❓ 刷新页面出现 404?

如果你使用的是 history 模式(正常 URL),需要服务器配置支持,否则刷新会 404。

开发环境下不会有问题,生产部署时需配置服务器(如 Nginx)将所有请求指向 index.html

十、总结

概念 作用
vue-router Vue 的官方路由管理器
<router-link> 用于跳转的链接,不会刷新页面
<router-view> 匹配的组件会在这里显示
routes 定义路径与组件的映射关系
$route.params 获取动态路由参数
this.$router.push() 用 JS 跳转页面

📌 一句话记住
路由 = 路径 + 组件 ,通过 <router-link> 跳转,<router-view> 显示。

十一、结语

感谢您的阅读!如果你有任何疑问或想要分享的经验,请在评论区留言交流!

相关推荐
青衫码上行2 小时前
【Java Web学习 | 第七篇】JavaScript(1) 基础知识1
java·开发语言·前端·javascript·学习
咖啡の猫2 小时前
Vue编程式路由导航
前端·javascript·vue.js
夏鹏今天学习了吗6 小时前
【性能优化】前端高性能优化策略
前端·性能优化
weixin_427771619 小时前
css font-size 的妙用
前端·css
凤凰战士芭比Q10 小时前
web中间件——Nginx
前端·nginx·中间件
一 乐10 小时前
点餐|智能点餐系统|基于java+ Springboot的动端的点餐系统小程序(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·小程序·论文
bitbitDown11 小时前
从零打造一个 Vite 脚手架工具:比你想象的简单多了
前端·javascript·面试
liangshanbo121512 小时前
CSS 数学函数完全指南:从基础计算到高级动画
前端·css
码上成长13 小时前
GraphQL:让前端自己决定要什么数据
前端·后端·graphql