第五节: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 不需要登录校验,路由守卫后面再补充。

相关推荐
溪语流沙5 分钟前
【每天一个CSS | Day18】会摆动的拟物怀表:黄铜、皮革与催眠摆
前端·css3·html5
OpsEye10 分钟前
大模型会话里的手机号、身份证,怎么自动脱敏?
javascript·ai编程
Lvan的前端笔记11 分钟前
docker:基于docker的前端部署方案
前端·docker·状态模式
程序人生88811 分钟前
从“把隐私文件上传到别人云端“到本地可控:DocConverter Web 立项初心与架构选型
前端·图像处理·人工智能·opencv·架构·ocr·文心一言
开开心心就好19 分钟前
视频里的图片怎么提取?双击一下就导出
java·前端·人工智能·spring·智能手机·intellij-idea·excel
爱喝水的小周22 分钟前
实验十 Vue‑Router 王者荣耀战绩查询 APP 开发实践
前端·javascript·vue.js
yexianglunbai22 分钟前
Vue 3 全面详解:从核心特性到工程化实践
前端·javascript·vue.js
传人once24 分钟前
选择文件按钮样式如何美化
前端·html·css3·jquery·html5
parade岁月39 分钟前
告别 Deno 时代?运行时进入一年倒计时,Deno 团队并入 Cloudflare
前端
Lucky_Turtle43 分钟前
【HTML】前端页面禁止缩放
前端·html