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

相关推荐
高级程序源9 小时前
django大学生创新创业项目管理系统94923-计算机课程设计、毕业设计
javascript·vue.js·spring boot·后端·python·django·课程设计
八荒启·交互动画9 小时前
# Web特效020—让 Web 特效真正动起来:时间循环应该怎么接
前端·webgl·网页特效·八荒启-交互动画·八荒启
动恰客流统计9 小时前
线下零售数字化浪潮下,客流统计的3个核心发展趋势
大数据·前端·人工智能
lizz22769 小时前
Babel插件手册
javascript
用户938515635079 小时前
从小米前端面试题,彻底搞懂闭包、作用域链与 useState 惰性初始化
前端·面试
粥里有勺糖10 小时前
视野修炼第133期 | Native 回春了?
前端·github·agent
aichitang202411 小时前
前端小skill
前端·人工智能·算法·ai·前端框架
前端·柱子11 小时前
q-floodfill白边锯齿?一招搞定抗锯齿边缘问题
前端·html·canva可画
葡萄城技术团队11 小时前
SpreadJS V19.2新特性揭秘:功能区键盘提示
前端
计算机魔术师12 小时前
AI 幻觉导致的错误情报险些引发美军拦截中国船只
前端