vue3 后台管理框架geeker admin -- layout加载、布局介绍

1,972 阅读3分钟

0 环境

1 文档

geeker admin官方文档

element-plus官方文档

vue router官方文档

2 思考:跳转到home/index都做了什么

之前讲到了初始化动态路由、获得了token,并且通过了路由拦截。然后到了跳转到指定path。如下图:渲染了首页的内容,但是它们之间的布局是啥子时候产生的呢?

image.png

3 layout做了啥

我们的疑问是:首页结构是哪里布局的,这里就牵扯到初始化动态路由了,初始化路由里的目的就是将路由加载到layout,可参考如下代码:而一旦我访问了首页,那么layout组件必然会被渲染,因为是首页的父路由。

{
  path: "/layout",
  name: "layout",
  component: () => import("@/layouts/index.vue"),
  // component: () => import("@/layouts/indexAsync.vue"),
  redirect: HOME_URL,
  children: [
      path: "/home/index",
      ....
  ]
}

现在进入 @/layouts/index.vue 中,如下图:这里是一次性加载 LayoutComponents

image.png

往下翻找到LayoutComponents,鼠标悬浮在Record上,如下图所示,还有补充一点:Record<K,T> 用于创建一个对象类型,其属性的键的类型是 K,值的类型是 T。这里对K做了限制了,只能这4种类型。这4种类型对应的含义是啥呢。 image.png

如下图所示:点开右上角衣服按钮,布局类型就是对应的它。 image.png

image.png

在看 LayoutComponents[layout] 里的 layoutlayout默认是classic,就是经典模式,但是我更喜欢vertical(纵向模式),我默认是后者,其实它两区别不大,如下图就是一个竖线的差别。接着往下说:这里我得到的组件是LayoutVertical

image.png

image.png

光标放在LayoutVertical上,ctrl + 左键,进到LayoutVertical/index.vuegitee源码具体位置image.png

4 LayoutVertical如何纵向布局的

大体布局如下图: image.png

它的布局是从哪里来的呢,请先打开element-plus,然后找到基础组件下的Container 布局容器,具体链接:Container 布局容器。一直翻到如下图的位置:

默认是有页脚的这张。 image.png

上面两张图一对照,1对应的是aside,2对应的是header,3对应的是mainfooter,在结合下图的说明。

image.png

5 小结

token设置好、动态路由加载成功...、路由push到首页时,也通过了路由拦截,正式的访问path了,假如是一个path,那还好,若是动态路由里有多个可访问的path呢,总不能一个个手输+回车吧,是不是要有一个区域管理path,那么path内容的展示是不是也要有个区域用来专门展示。。。首页的布局方式分纵向、横向、经典、分栏,我喜欢默认设置为纵向,题外话:经典和纵向布局大差不差的,代码中是通过useGlobalStore里的layout的值,来控制的。一旦它发生变化,那么组件会重新加载,布局随着会被实时改变。后面又具体介绍了,纵向布局的划分:侧边栏、顶栏、主要区域、底栏,以及找到对应的UI框架对应的组件介绍和案例。