Admin 项目实战(六):可配置布局管理
这是 Admin 练习项目的第六篇,练习如何进行布局管理,并给出第一版布局示例。
效果
Login
登陆页面布局简单,效果如下图:
Dashboard
dashboard 页面包含了 navbar、sidemenu、footer,页面中间会加载其它的 component,如下图:
Exception
通过配置,可以指定异常时加载的组件,如下图:
实现
安装布局插件
| pnpm i vite-plugin-vue-layouts
|
在 vite.config.ts
中加入插件配置:
| import Layouts from "vite-plugin-vue-layouts";
export default defineConfig({
//...
plugins: [
//...
Layouts(),
],
});
|
修改 tsconfig.json
为编辑器提供支持:
| {
"compilerOptions": {
"types": [
"vite/client",
"vite-plugin-pages/client",
"vite-plugin-vue-layouts/client"
],
}
}
|
配置路由
修改 main.ts 中修改路由配置。
修改前
| import routes from "~pages";
const router = createRouter({
history: createWebHistory(),
routes
});
|
修改后
| import { setupLayouts } from "virtual:generated-layouts";
import generatedRoutes from "virtual:generated-pages";
const routes = setupLayouts(generatedRoutes);
const router = createRouter({
history: createWebHistory(),
routes
});
|
路由过滤
这里需要注意的是,有一些组件 url 不需要暴露出来,需要在 vite.config.ts
中进行配置:
| import Layouts from "vite-plugin-vue-layouts";
export default defineConfig({
plugins: [
Pages({
extensions: ["vue"],
exclude: ["**/components/*.vue"],
}),
],
});
|
上面的配置中,所有 components 文件夹下的 vue 文件都不会向外提供路由。
配置布局
Login 布局
| <!--src/layouts/login.vue-->
<template>
<router-view />
</template>
|
Default 布局
| <!--src/layouts/default.vue-->
<template>
<main>
<div class="pt-14 xl:pl-60">
<div class="bg-white text-base dark:bg-gray-800 dark:text-gray-100">
<navbar></navbar>
<side-menu></side-menu>
<router-view></router-view>
<footer-content></footer-content>
</div>
</div>
</main>
</template>
|
在页面中使用布局
可以添加下面的脚本:
| <route lang="yaml">
meta:
layout: login
</route>
|
注意:这里根据需要指定模具的名称,对于使用默认布局的页面可以不添加。
实现组件
组件代码可参考:https://github.com/smarty-team/smarty-admin
这里需要介绍如何进行配置。
新建 layouts 目录,提供 login 和 default 两种布局:
配置组件目录
项目级别的组件,包括 navbar、sidemenu、footer 都存放在 components 目录,需要在 vite.config.ts
中进行配置:
| import Layouts from "vite-plugin-vue-layouts";
export default defineConfig({
Components({
dirs: ["src/components", "src/pages/**/components"],
extensions: ["vue"],
include: [/\.vue$/],
dts: "src/components.d.ts",
}),
});
|
上面的代码中,指定了 src/components
目录。
配置页面下的组件
对于复杂的页面,比如 dashboard ,会包含很多自己的组件,还是利用上面的配置,指定了 src/pages/**/components
目录。
配置异常处理页面
这里需要新建特殊的文件,例如 [...all].vue
| <template lang="">
<div>Exception Page</div>
</template>
<script>
export default {};
</script>
<style lang=""></style>
|
上一课
Admin 项目实战(七):i18n 国际化
凡本网注明"来源:XXX "的文/图/视频等稿件,本网转载出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如涉及作品内容、版权和其它问题,请与本网联系,我们将在第一时间删除内容!
作者: 勃纳什
来源: https://zhuanlan.zhihu.com/p/644431110