☁️ 简介
v3-admin 是一个中后台管理系统基础解决方案,基于 Vue3、TypeScript、Element-Plus 和 Vue-Cli 4.5
1️⃣ 功能
- 用户管理
- 登录
- 注销
- 权限验证
- 页面权限
- 指令权限
- 多环境
- dev
- stage
- prod
- 全局功能
- svg
- 国际化多语言
- 多种动态换肤
- 动态侧边栏(支持多级路由嵌套)
- 动态面包屑
- 快捷导航(标签页)
- Screenfull 全屏
- 自适应收缩侧边栏
- 错误页面
- 401
- 404
- Dashboard
- admin
- editor
复制代码
2️⃣ 目录
# v3-admin
├─ .env.dev # 开发环境
├─ .env.prod # 生产环境
├─ .env.stage # 预发布环境
├─ .eslintrc.js # eslint
├─ public # 静态资源
│ ├─ favicon.ico # favicon 图标
│ ├─ index.html # html模板
├─ src # 源码
│ ├─ @types # ts 声明
│ ├─ api-inject # 接口(全局注入的方式)
│ ├─ api-import # 接口(import/export 的方式)
│ ├─ assets # 主题、字体、svg等静态资源
│ ├─ components # 全局公用组件
│ ├─ config # 全局配置
│ ├─ constant # 常量/枚举
│ ├─ directives # 全局指令
│ ├─ layout # 全局 layout
│ ├─ locales # 国际化
│ ├─ model # 全局 model
│ ├─ plugins # 插件
│ ├─ router # 路由
│ ├─ store # 全局 store 管理
│ ├─ styles # 全局样式
│ ├─ utils # 全局公共方法
│ └─ views # 所有页面
├─ tsconfig.json # ts 编译配置
└─ vue.config.js # vue-cli 配置
复制代码
3️⃣ 安装
# 克隆项目
git clone https://github.com/v3-projects/v3-admin
# 进入项目目录
cd v3-admin
# 安装依赖
yarn
# 启动项目
yarn dev
复制代码
⛅ 基础
1️⃣ 路由
配置项
// 默认false,设置 true 的时候该路由不会在侧边栏出现
hidden: true
// 设置 noRedirect 的时候该路由在面包屑导航中不可被点击
redirect: 'noRedirect'
// 设定路由的名字,一定要填写不然重置路由可能会出问题
name: 'router-name'
meta: {
// 设置该路由进入的权限,支持多个权限叠加
roles: ['admin', 'editor']
// 设置该路由在侧边栏和面包屑中展示的名字
title: 'title'
// 设置该路由的图标,记得将 svg 导入 @/assets/svg-icons/icons
icon: 'svg-name'
// 默认true,如果设置为false,则不会在面包屑中显示
breadcrumb: false
// 默认false,如果设置为true,它则会固定在 tags-view 中
affix: true
// 当一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式
// 只有一个时,会将那个子路由当做根路由显示在侧边栏
// 若想不管路由下面的 children 声明的个数都显示你的根路由
// 可以设置alwaysShow: true,这样就会忽略之前定义的规则,一直显示根路由
alwaysShow: true
// 当设置了该属性,进入路由时,则会高亮 activeMenu 属性对应的侧边栏
activeMenu: '/dashboard'
}
复制代码
动态路由
constantRoutes
把不需要判断权限的路由放置在常驻路由里面,如 /login
、/dashboard
。
asyncRoutes
放置需求动态判断权限并通过 addRoute
动态添加的路由。
添加动态路由方法:
案例:在 @/router/asyncModules
下面创建例如 permission.ts
文件
import { RouteRecordRaw } from 'vue-router'
import Layout from '@/layout/index.vue'
const permissionRouter: Array<RouteRecordRaw> = [
{
path: '/permission',
component: Layout,
name: 'Permission',
redirect: '/permission/directive',
meta: {
title: 'permission',
icon: 'lock',
roles: ['admin', 'editor'], // 可以在根路由中设置角色
alwaysShow: true // 将始终显示根菜单
},
children: [
{
path: 'page',
component: () => import(/* webpackChunkName: "permission-page" */ '@/views/permission/page.vue'),
name: 'PagePermission',
meta: {
title: 'pagePermission',
roles: ['admin'] // 或者在子导航中设置角色
}
},
{
path: 'directive',
component: () => import(/* webpackChunkName: "permission-directive" */ '@/views/permission/directive.vue'),
name: 'DirectivePermission',
meta: {
title: 'directivePermission' // 如果未设置角色,则表示:该页面不需要权限,但会继承根路由的角色
}
}
]
}
]
export default permissionRouter
复制代码
2️⃣ 发送HTTP请求
大致的流程如下:
喜欢就支持一下吧
相关推荐