Frame 框架

February 27, 2026 · View on GitHub

页面布局框架组件,包含顶部导航、左侧菜单和主内容区。

引入

import { AFrame } from '@airpower/web'

Props

参数说明类型默认值必填
menuWidth左侧菜单宽度number220
menuList菜单列表,需为 IMenu 实现类数组IMenu[][]
uniqueOpened是否只保持展开一个菜单booleanfalse
hideMenu是否隐藏菜单booleanfalse
headerHeight头部高度number40

Emits

Slots

插槽名说明作用域参数
logo顶部 Logo 区域-
navigator顶部导航区域-
user顶部用户区域-
default主内容区域-

示例

<template>
  <AFrame
    :menu-list="menuList"
    :unique-opened="true"
  >
    <!-- 自定义 Logo -->
    <template #logo>
      <img src="/logo.png" alt="Logo" />
    </template>

    <!-- 顶部导航 -->
    <template #navigator>
      <span>当前位置:首页 / 用户管理</span>
    </template>

    <!-- 用户区域 -->
    <template #user>
      <AUser :user="currentUser" />
    </template>

    <!-- 主内容 -->
    <router-view />
  </AFrame>
</template>

<script setup lang="ts">
import { ref } from 'vue'

const menuList = ref([
  {
    id: '1',
    name: '用户管理',
    path: '/user',
    icon: 'icon-user',
    children: []
  }
])

const currentUser = ref({...})
</script>

注意事项

  • 菜单列表需实现 IMenu 接口
  • 菜单支持多级嵌套,会自动渲染子菜单
  • 左侧菜单支持 Loading 状态
  • 组件自动固定定位填充整个页面