第五节:Vue‑Router4 路由配置,布局嵌套路由

第五节:Vue‑Router4 路由配置,布局嵌套路由

仿若依设计:

  1. 登录页面独立路由,不套 Layout
  2. 后台页面全部嵌套在 Layout 布局下
  3. 拆分常量路由,后续预留动态路由位置;全部使用 setup 语法,路由懒加载

步骤 1:新建登录页面

新建 src/views/login/index.vue

c 复制代码
<template>
  <div class="login-container">
    <el-card style="width:420px;margin:100px auto;">
      <h2 style="text-align:center;margin-bottom:20px;">系统登录</h2>
      <el-form>
        <el-form-item label="账号">
          <el-input v-model="loginForm.username"></el-input>
        </el-form-item>
        <el-form-item label="密码">
          <el-input v-model="loginForm.password" type="password"></el-input>
        </el-form-item>
        <el-button type="primary" style="width:100%" @click="handleLogin">登录</el-button>
      </el-form>
    </el-card>
  </div>
</template>

<script setup>
const loginForm = reactive({
  username: '',
  password: ''
})

const handleLogin = () => {
  console.log('登录表单', loginForm)
  // 暂时只打印,登录逻辑后面axios章节完善
}
</script>

<style scoped>
.login-container {
  background-color: #f5f7fa;
  min-height: 100vh;
}
</style>

步骤 2:完善路由 src/router/index.js

复制代码
import { createRouter, createWebHistory } from 'vue-router'
// 布局组件
const Layout = () => import('@/layout/index.vue')

// 常量路由:所有人都可以访问
export const constantRoutes = [
  {
    path: '/',
    redirect: '/login'
  },
  {
    path: '/login',
    component: () => import('@/views/login/index.vue')
  },
  {
    path: '/404',
    component: () => import('@/views/error/404.vue')
  }
]

// 嵌套布局路由,后台菜单页面都写在这里
export const asyncRoutes = [
  {
    path: '/dashboard',
    component: Layout,
    redirect: '/dashboard/index',
    children: [
      {
        path: 'index',
        name: 'Dashboard',
        component: () => import('@/views/dashboard/index.vue'),
        meta: { title: '首页看板' }
      }
    ]
  }
]

const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes: [...constantRoutes, ...asyncRoutes]
})

export default router

步骤 3:新建需要的占位页面

  1. src/views/error/404.vue

  2. src/views/dashboard/index.vue(后台首页)

  3. 修改 src/layout/index.vue,必须增加 <router‑view> 用于渲染子路由

✅第五节测试

  1. 重启 pnpm dev
  2. 浏览器访问:
  • /login → 正常展示登录表单页面 ✔
  • /dashboard/index → 看到 Layout 容器 + 后台首页卡片 ✔
  • /xxx随便写 → 跳 404 页面(注意:我们还没写全局路由守卫,直接访问不存在路径才会到 404)
  1. F12 控制台无报错。

注意:现在访问 /dashboard/index 不需要登录校验,路由守卫后面再补充。

相关推荐
Geoffwo几秒前
DSH-SKILL基础
javascript
小兔子4 分钟前
Integer 的 == 在 100 时是 true,在 1000 时是 false
前端
AI副业搞钱研究所5 分钟前
用 12 组正则写一个骗局话术检测器:权重打分、硬红旗保底和高亮区间合并
javascript
程序员大阳17 分钟前
副队长JavaScript教程(48)-异常处理基础
javascript·异常处理·finally·catch·try
尘世中一位迷途小书童21 分钟前
和 AI 打交道会撞见的一整串词:从大模型到 Agent、RAG、MCP、Skill,一次串清
前端·人工智能
lusklusklusk24 分钟前
Python 全局变量与局部变量区别——global 关键字、__main__ 块与作用域示例
开发语言·前端·python
志尊宝28 分钟前
AI原生前端开发(038):AI辅助的Next.js 15全栈开发
javascript·人工智能·ai-native
产品经理爱开发43 分钟前
AxureShow(艾可秀)国内通用的html托管
前端·人工智能·html·ai编程
jktantan43 分钟前
前端也需要事务:Vue Router 乐观更新、回滚与“过期事务”
前端·javascript·vue.js
怕浪猫1 小时前
K3.1 直追 Astra,先补 13%
前端·javascript·面试