vue web端页面组件展示

有一部分页面没有左侧菜单,顶部导航几乎所有页面都有,特殊的搜索页面,登录页是独立的,

一、最终实现思路(非常重要)

我们把页面分成 3 类布局

  1. **公共布局(最常用)**顶部导航 + 内容区(无左侧菜单
  2. **侧边布局(需要左侧菜单)**顶部导航 + 左侧菜单 + 内容区
  3. **独立布局(登录、搜索)**纯页面,没有任何公共头部、侧边

二、项目结构(最标准)

plaintext

less 复制代码
src/
├── layout/
│   ├── PublicLayout.vue   // 公共布局:只有顶部
│   ├── SideLayout.vue     // 侧边布局:顶部 + 左侧菜单
│   └── Header.vue          // 公共顶部导航
├── views/
│   ├── login/Login.vue
│   ├── search/SearchPage.vue
│   ├── dashboard/Workbench.vue
│   ├── system/UserList.vue
│   └── info/NewsList.vue
└── router/index.js

三、直接可用的代码

1. router/index.js(核心!)

javascript

运行

javascript 复制代码
import { createRouter, createWebHistory } from 'vue-router'

// 布局
import PublicLayout from '@/layout/PublicLayout.vue'
import SideLayout from '@/layout/SideLayout.vue'

const routes = [
  // ======================================
  // 1. 独立页面(无任何头部、侧边)
  // ======================================
  {
    path: '/login',
    component: () => import('@/views/login/Login.vue'),
    meta: { hidden: true }
  },
  {
    path: '/search',
    component: () => import('@/views/search/SearchPage.vue'),
    meta: { hidden: true }
  },

  // ======================================
  // 2. 公共布局(只有顶部,无左侧菜单)
  // ======================================
  {
    path: '/',
    component: PublicLayout,
    children: [
      {
        path: '',
        component: () => import('@/views/dashboard/Workbench.vue')
      },
      {
        path: 'info/news',
        component: () => import('@/views/info/NewsList.vue')
      }
    ]
  },

  // ======================================
  // 3. 侧边布局(顶部 + 左侧菜单)
  // ======================================
  {
    path: '/system',
    component: SideLayout,
    children: [
      {
        path: 'user',
        component: () => import('@/views/system/UserList.vue')
      },
      {
        path: 'role',
        component: () => import('@/views/system/RoleList.vue')
      }
    ]
  }
]

const router = createRouter({
  history: createWebHistory(),
  routes
})

export default router

2. Header.vue(公共顶部,所有布局共用)

vue

xml 复制代码
<template>
  <div class="header">顶部导航</div>
</template>

<style scoped>
.header {
  height: 60px;
  background: #fff;
  border-bottom: 1px solid #eee;
}
</style>

3. PublicLayout.vue(公共布局:顶部 + 内容)

vue

xml 复制代码
<template>
  <div class="public-layout">
    <Header />
    <div class="container">
      <router-view />
    </div>
  </div>
</template>

<script setup>
import Header from './Header.vue'
</script>

<style scoped>
.public-layout {
  height: 100vh;
}
.container {
  padding: 20px;
}
</style>

4. SideLayout.vue(侧边布局:顶部 + 左侧菜单 + 内容)

vue

xml 复制代码
<template>
  <div class="side-layout">
    <Header />

    <div class="body">
      <!-- 左侧菜单 -->
      <div class="sidebar">
        <el-menu router>
          <el-menu-item index="/system/user">用户管理</el-menu-item>
          <el-menu-item index="/system/role">角色管理</el-menu-item>
        </el-menu>
      </div>

      <!-- 内容区 -->
      <div class="content">
        <router-view />
      </div>
    </div>
  </div>
</template>

<script setup>
import Header from './Header.vue'
</script>

<style scoped>
.side-layout {
  height: 100vh;
}
.body {
  display: flex;
  height: calc(100vh - 60px);
}
.sidebar {
  width: 200px;
  border-right: 1px solid #eee;
}
.content {
  flex: 1;
  padding: 20px;
  overflow-y: auto;
}
</style>

四、完美满足你的需求

1. 独立页面(登录、搜索)

  • /login
  • /search完全独立,没有顶部、没有侧边栏

2. 大部分页面(只有顶部,无左侧菜单)

  • /
  • /info/news有顶部导航,没有左侧菜单

3. 部分页面(顶部 + 左侧菜单)

  • /system/user
  • /system/role有顶部 + 左侧菜单
相关推荐
CoderYanger7 小时前
Java EE 进阶:2.3 JavaScript 综合案例
java·前端·javascript·css·职场和发展·java-ee·html
摸鱼仙人~8 小时前
Vue 核心知识体系(大厂秋招方向)
前端·javascript·vue.js
ljt27249606618 小时前
Vue笔记--状态管理
前端·vue.js·笔记
Larru-Sun8 小时前
Nginx + Vue Router 基础:SPA History 部署、反向代理与请求分流
运维·vue.js·nginx
benbenAItalk16 小时前
数字人口播视频的批量生产实践:素材规范、任务编排与质量验收
java·前端·音视频
2601_9628857216 小时前
如何用 Python 扫描 A 股跳空缺口并统计缺口回补概率?
java·前端·python
西瓜太郎123417 小时前
Claude Code、Codex CLI、Gemini CLI 能否共用一枚 Key?先看协议选择矩阵
前端·api 网关·claude code·gemini cli·codex cli
陈随易19 小时前
在Finch用了62亿词元,我认为这是新一代Agent工具之神
前端·人工智能·后端
水域安全老周19 小时前
水趣钓鱼救生衣专利拆解:两级锁紧如何解决落水人衣分离
java·前端·网络
计算机魔术师20 小时前
Anthropic CEO突然喊踩刹车,OpenAI罕见力挺:AI这辆车不能只踩油门了
前端