Skip to content

布局介绍


1. 页面级布局

  • UserLayout ------- 用户布局
  • BlankLayout ------ 空白布局
  • BasicLayout ------ 基础布局

2. 基础布局 - Content 部分

  • PageFrame -------- iframe 布局
  • RouteView -------- Route 布局
  • PageView --------- Page 布局

UserLayout

用户布局,属于页面级整体布局,它预设了用户布局样式,目前用于用户登录页面。

BlankLayout

空白布局,属于页面级整体布局,它没有预设任何的样式,仅设有 <RouterView/> 组件,一般在完全自定义页面时使用。

BasicLayout

基础布局,属于页面级整体布局,它主要由 侧边栏(Layout.Sider) + 顶部导航栏(Layout.Header) + 内容区域(Layout.Content) 这几部分组成。

markdown
- 顶部菜单导航
- 侧边菜单导航
- 内容区域路由
- 面包屑/多页签
- 个性化设置中心
typescript
export type ThemeMode = "light" | "dark" | "realDark";
export type LayoutMode = "side" | "top" | "mix";
export type ContentWidth = "Fixed" | "Fluid";
export type ComponentSize = "small" | "middle" | "large" | undefined;

export default {
  themeWeak: false, // 弱色模式
  themeMode: "light" as ThemeMode, // 主题风格
  layoutMode: "side" as LayoutMode, // 整体布局方式
  contentWidth: "Fluid" as ContentWidth, // 内容区布局
  componentSize: "middle" as ComponentSize, // 组件尺寸
  multiTab: true, // 多标签页
  keepAlive: true, // 多标签缓存
  fixedHeader: true, // 固定顶部栏导航
  fixedSidebar: true, // 固定左侧菜单栏
  fixedHeaderTab: true, // 固定导航栏页签
  hideMixHeaderTab: true, // 隐藏混合导航页签
};

PageFrame

iframe 布局,属于基础布局中 Layout.Content 一部分,通过 <iframe/> 标签为基础布局加载 第三方页面 提供支持和适配。了解更多

typescript
import BasicLayout from "@/layout/BasicLayout";

export default {
  path: "/",
  name: "Basic",
  component: BasicLayout,
  children: [
    {
      name: "JueJin",
      path: "https://juejin.cn",
      component: "PageFrame",
      meta: {
        title: "掘金首页",
      },
    },
  ],
};

PageView

Page 布局,属于基础布局中 Layout.Content 一部分,通过 <RouterView/> 组件为基础布局 Content 区域加载渲染 Vue 组件。同时该布局预设了容器样式,提供了 Layout.Content 动态宽高值 (这点在实现自适应高度非常好用),我们一般也选择 BasicLayout + PageView 布局

vue
<template>
  <section :style="{ height: appStore.layoutViewStyle.minHeight }">
    <!-- Render Height is appStore.layoutViewStyle.minHeight -->
    <div style="height: 100%;" />
  </section>
</template>

<script setup lang="ts">
import useAppStore from "@/store/app";
const appStore = useAppStore();
</script>

RouteView

Route 布局,属于基础布局中 Layout.Content 一部分,通过 <RouterView /> 组件为基础布局 Content 区域加载渲染 Vue 组件。但是该布局没有任何样式 (很少会用到,我们一般选择 PageView)。

基于 MIT 许可发布