import './index.less'; import { defineComponent, unref, ref } from 'vue'; import { Layout } from 'ant-design-vue'; import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent'; import LayoutHeader from './header/LayoutHeader'; import LayoutContent from './content/index.vue'; import LayoutSideBar from './sider'; import LayoutMultipleHeader from './header/LayoutMultipleHeader'; import { useHeaderSetting } from '/@/hooks/setting/useHeaderSetting'; import { useMenuSetting } from '/@/hooks/setting/useMenuSetting'; import { createLayoutContext } from './useLayoutContext'; import { registerGlobComp } from '/@/components/registerGlobComp'; import { createBreakpointListen } from '/@/hooks/event/useBreakpoint'; import { isMobile } from '/@/utils/is'; const LayoutFeatures = createAsyncComponent(() => import('/@/layouts/default/feature/index.vue')); const LayoutFooter = createAsyncComponent(() => import('/@/layouts/default/footer/index.vue')); export default defineComponent({ name: 'DefaultLayout', setup() { const headerRef = ref(null); const isMobileRef = ref(false); createLayoutContext({ fullHeader: headerRef, isMobile: isMobileRef }); createBreakpointListen(() => { isMobileRef.value = isMobile(); }); // ! Only register global components here // ! Can reduce the size of the first screen code // default layout It is loaded after login. So it won’t be packaged to the first screen registerGlobComp(); const { getShowFullHeaderRef } = useHeaderSetting(); const { getShowSidebar } = useMenuSetting(); return () => { return ( {() => ( <> {unref(getShowFullHeaderRef) && } {() => ( <> {unref(getShowSidebar) && } {() => ( <> )} )} )} ); }; }, });