Solos Admin 是一个面向中后台项目的 Vue 3 通用管理模板。它不是绑定某个业务的后台,而是提供一套可直接二开的后台骨架:路由菜单、权限、请求、Mock、布局、常用页面模板和质量门槛都已经预置。
- 企业内部管理后台
- SaaS 管理端
- 运营平台
- 内容管理系统
- 数据看板与配置平台
- 需要快速搭建权限、菜单、列表、表单、详情页的 Vue 项目
- Vue 3 +
<script setup lang="ts"> - Vite 8
- TypeScript
- Vue Router + unplugin-vue-router
- Pinia
- Element Plus
- UnoCSS + Iconify
- alova
- ECharts
- MdEditorV3
- xlsx
- Vitest + Vue Test Utils
- ESLint + Prettier
- 文件路由:
src/pages下的页面自动注册为路由 - Route Meta:页面标题、图标、权限、缓存、隐藏状态集中在
definePage().meta - 后台布局:侧边栏、顶栏、标签页、面包屑、内容区
- 菜单派生:根据路由与后端访问授权生成菜单
- 权限体系:登录态、角色路由权限、按钮权限 key
- 请求层:alova/fetch 统一封装
- API 模式:
mock/real可切换 - Mock 数据:本地可完整演示登录、权限、菜单和列表数据
- 页面模板:列表、表单、详情、高级搜索、批量操作、行内编辑、树形表格
- 内容示例:图表、Markdown、上传、Excel 导入导出
- 质量门槛:类型检查、单元测试、构建、Lint、格式检查
pnpm install
pnpm dev默认开发环境使用 mock API,可以直接登录体验。
默认演示账号:
- 管理员:登录页选择
管理员 - 编辑员:登录页选择
编辑员
pnpm dev # 启动开发服务
pnpm typecheck # TypeScript / Vue 类型检查
pnpm test # 运行单元测试
pnpm build # 类型检查并构建生产包
pnpm lint # ESLint 检查
pnpm format:check # Prettier 格式检查
pnpm check # 模板完整质量门槛
pnpm preview # 预览生产构建开发环境默认:
VITE_API_MODE=mock
VITE_API_BASE_URL=生产环境默认:
VITE_API_MODE=real
VITE_API_BASE_URL=https://api.example.com模式说明:
VITE_API_MODE=mock- 使用
src/api/mock.ts - 适合模板演示、本地开发、无后端联调
- 使用
VITE_API_MODE=real- 使用真实后端
- 需要配置
VITE_API_BASE_URL
更多说明见:docs/api-integration.md、docs/mock-guide.md 和 docs/template-contracts.md。
src/
api/ # alova 客户端、响应处理、mock、模块 API
auth/ # token refresh、登录过期事件
components/admin/ # 后台通用组件
composables/ # 页面查询、表单、权限、搜索、tabs 等复用逻辑
constants/ # 常量
layouts/ # AdminLayout / BlankLayout
pages/ # 文件路由页面
router/ # 路由守卫、菜单与访问控制
stores/ # app/user/permission/tabs
styles/ # 全局样式
types/ # 模板契约、应用类型与路由类型扩展
docs/ # 模板使用与二开文档详细说明见:docs/project-structure.md。
- 在
src/pages下新增.vue页面。 - 使用
definePage({ meta: ... })声明页面元信息。 - 如果要显示在菜单中,提供
meta.title,并确保没有设置hidden: true。 - 如果页面需要权限控制,设置
roles或permissions。 - 如果页面需要接口,在
src/api/modules下新增 API method。
示例:
<script setup lang="ts">
definePage({
meta: {
title: '用户管理',
icon: 'i-ep-user',
layout: 'admin',
requiresAuth: true,
roles: ['admin'],
permissions: ['system:user:view'],
order: 10,
},
})
</script>路由、菜单、权限详细约定见:docs/route-menu-permission.md。
Solos Admin 默认遵循以下边界:
- 桌面端后台优先,不作为移动端模板
- 默认使用 RBAC 权限模型
- 路由能力由前端
definePage().meta声明 - 可访问范围由后端
/auth/access返回 - 按钮权限由用户 profile 的
permissions控制 - Mock 只用于模板演示和本地开发,不代表生产鉴权方案
- 模板不绑定任何业务领域,业务模块应放在独立页面/API 模块中扩展
docs/getting-started.md:快速开始docs/project-structure.md:目录结构与模块边界docs/route-menu-permission.md:路由、菜单和权限约定docs/template-contracts.md:路由 Meta、后端访问清单与 API 响应契约docs/api-integration.md:真实后端接入契约docs/mock-guide.md:Mock 模式和本地演示数据docs/crud-guide.md:标准 CRUD 页面建议docs/deployment.md:构建与部署docs/faq.md:常见问题
拿到模板后通常需要先改:
package.json的项目名- 登录页品牌文案
- 侧边栏 Logo / 系统名称
- favicon
- 主题色和基础样式
.env.*的 API 地址src/api/modules里的业务 APIsrc/pages下的业务页面src/api/mock.ts中的本地演示数据
提交前建议运行:
pnpm check该命令会依次执行:
pnpm lintpnpm format:checkpnpm testpnpm build
- 强化 route meta 校验测试
- 抽象标准 CRUD composable
- 增加更多组件级测试
- 增加 CI 示例
- 增加主题/品牌初始化脚本