# 布局

页面整体布局是一个产品最外层的框架结构,往往会包含导航、页脚、侧边栏、通知栏以及内容等。在页面之中,也有很多区块的布局结构。在真实项目中,页面布局通常统领整个应用的界面,有非常重要的作用。

# San Admin 的布局

layout

在 San Admin 中,我们抽离了使用过程中的通用布局,都放在 components/BasicLayout 目录中,分别为:

  • BasicLayout:包含SiderMunu,Header,Footer组件的一个重型布局组件

  • GlobalFooter:全局的 Footer 组件

  • GlobalHeader:全局的 Header 组件

  • PageContainer:包含面包屑的布局组件

  • SettingDrawer:抽屉组件,用于可视化配置页面布局

  • SiderMenu:侧边栏组件

  • TopNavHeader:Nav 组件

# 如何使用 San Admin 布局

通常布局是和路由系统紧密结合的,San Admin 的路由使用了 San Router (opens new window) 的路由方案,为了统一方便的管理路由和页面的关系,我们将配置信息统一抽离到 config/routes.js 下,通过如下配置定义每个页面的布局:

const routes = [
    {
        rule: '/',
        hideInMenu: true,
        Component: () => import('/src/pages/dashboard/analysis'),
        name: '欢迎',
        icon: 'smile'
    },
    {
        rule: '/dashboard',
        name: 'Dashboard',
        icon: 'dashboard',
        children: [
            {
                rule: '/dashboard/analysis',
                Component: () => import('/src/pages/dashboard/analysis'),
                name: '分析页',
                root: '首页',
            },
            {
                rule: '/dashboard/monitor',
                Component: () => import('/src/pages/dashboard/monitor'),
                name: '监控页',
                root: '首页',
            },
            {
                rule: '/dashboard/workplace',
                Component: () => import('/src/pages/dashboard/workplace'),
                name: '工作台',
                root: '首页',
            },
        ]
    },
    {
        rule: '/form',
        name: '表单页',
        icon: 'form',
        children: [
            {
                rule: '/form/basic-form',
                name: 'basic-form',
                Component: () => import('/src/pages/form/basic-form'),
                name: '基础表单',
                root: '首页',
            },
            {
                rule: '/form/step-form',
                name: 'step-form',
                Component: () => import('/src/pages/form/step-form'),
                name: '分步表单',
                root: '首页',
            },
            {
                rule: '/form/advanced-form',
                name: 'advanced-form',
                Component: () => import('/src/pages/form/advanced-form'),
                name: '高级表单',
                root: '首页',
            },
        ]
    }
];

export default routes;

映射路由和页面布局(组件)的关系如代码所示,完整映射转换实现可以参看 routes.js (opens new window)