Skip to content

Layout 快速开始

@uozi-admin/layout-antdv 是一个基于 Ant Design Vue 的后台布局组件库,提供了一套完整的后台管理系统布局解决方案。

特性

  • 🎨 开箱即用 - 提供完整的后台布局方案
  • 🔧 高度可配置 - 支持多种布局模式和主题
  • 📱 响应式设计 - 完美适配桌面和移动端
  • 🌍 国际化支持 - 内置多语言切换
  • 🎯 TypeScript - 完整的类型定义
  • 🚀 性能优化 - 虚拟滚动和懒加载

安装

bash
npm install @uozi-admin/layout-antdv
bash
yarn add @uozi-admin/layout-antdv
bash
pnpm add @uozi-admin/layout-antdv

基础用法

vue
<script setup lang="ts">
import { HomeOutlined } from '@ant-design/icons-vue'
import { AdminLayout } from '@uozi-admin/layout-antdv'

const sidebarItems = [
  {
    title: '首页',
    path: '/home',
    icon: HomeOutlined
  },
  {
    title: '用户管理',
    path: '/users',
    children: [
      {
        title: '用户列表',
        path: '/users/list'
      }
    ]
  }
]
</script>

<template>
  <AdminLayout
    site-title="管理后台"
    :sidebar-items="sidebarItems"
  >
    <router-view />
  </AdminLayout>
</template>

配置选项

基础配置

属性类型默认值说明
site-titlestring-网站标题
sidebar-itemsSidebarItem[][]侧边栏菜单项
collapsedbooleanfalse是否折叠侧边栏
theme'light' | 'dark''light'主题模式
layout-mode'side' | 'top' | 'mix''side'布局模式

侧边栏配置

typescript
interface SidebarItem {
  title: string          // 菜单标题
  path?: string         // 路由路径
  icon?: Component      // 图标组件
  children?: SidebarItem[]  // 子菜单
  meta?: {
    hidden?: boolean    // 是否隐藏
    disabled?: boolean  // 是否禁用
    badge?: string | number  // 徽章
  }
}

高级用法

自定义头部

vue
<template>
  <AdminLayout :sidebar-items="sidebarItems">
    <template #header>
      <div class="custom-header">
        <a-space>
          <a-button type="primary">自定义按钮</a-button>
          <a-dropdown>
            <a-button>
              用户菜单
              <DownOutlined />
            </a-button>
            <template #overlay>
              <a-menu>
                <a-menu-item>个人设置</a-menu-item>
                <a-menu-item>退出登录</a-menu-item>
              </a-menu>
            </template>
          </a-dropdown>
        </a-space>
      </div>
    </template>
    
    <router-view />
  </AdminLayout>
</template>

自定义侧边栏底部

vue
<template>
  <AdminLayout :sidebar-items="sidebarItems">
    <template #sidebar-footer>
      <div class="sidebar-footer">
        <a-button block type="primary">
          升级到专业版
        </a-button>
      </div>
    </template>
    
    <router-view />
  </AdminLayout>
</template>

响应式配置

vue
<script setup lang="ts">
import { ref, onMounted } from 'vue'
import { AdminLayout } from '@uozi-admin/layout-antdv'

const collapsed = ref(false)
const isMobile = ref(false)

// 响应式处理
onMounted(() => {
  const handleResize = () => {
    isMobile.value = window.innerWidth < 768
    if (isMobile.value) {
      collapsed.value = true
    }
  }
  
  window.addEventListener('resize', handleResize)
  handleResize()
})
</script>

<template>
  <AdminLayout
    :sidebar-items="sidebarItems"
    :collapsed="collapsed"
    :layout-mode="isMobile ? 'side' : 'mix'"
    @update:collapsed="collapsed = $event"
  >
    <router-view />
  </AdminLayout>
</template>

主题定制

CSS 变量

css
:root {
  --layout-header-height: 64px;
  --layout-sidebar-width: 256px;
  --layout-sidebar-collapsed-width: 80px;
  --layout-primary-color: #1890ff;
  --layout-bg-color: #f0f2f5;
}

暗色主题

vue
<template>
  <AdminLayout
    theme="dark"
    :sidebar-items="sidebarItems"
  >
    <router-view />
  </AdminLayout>
</template>

事件

事件名参数说明
update:collapsed(collapsed: boolean)侧边栏折叠状态变化
menu-click(item: SidebarItem)菜单项点击
theme-change(theme: string)主题切换

下一步

根据 Apache-2.0 许可发布。