内容管理前端

周玉环 34bd5d4c36 fix: 调整目录结构,增加路由鉴权白名单 10 hours ago
docs 95c4f1ed29 fix: 优化全局路径 1 week ago
public e7dda8d2c8 first commit 2 weeks ago
src 34bd5d4c36 fix: 调整目录结构,增加路由鉴权白名单 10 hours ago
.env.development 47b784eb6b feat: 增加qu全局loading 5 days ago
.env.production 8e3267ecba fix: 内容管理中心框架调整 1 week ago
.gitignore e7dda8d2c8 first commit 2 weeks ago
README.md 80bea2d925 first commit 2 weeks ago
eslint.config.js e7dda8d2c8 first commit 2 weeks ago
index.html e7dda8d2c8 first commit 2 weeks ago
nginx.local.conf 95c4f1ed29 fix: 优化全局路径 1 week ago
package.json 39cdd7fefd fix: update react version 14 hours ago
pnpm-lock.yaml 39cdd7fefd fix: update react version 14 hours ago
tsconfig.app.json 95c4f1ed29 fix: 优化全局路径 1 week ago
tsconfig.json e7dda8d2c8 first commit 2 weeks ago
tsconfig.node.json e7dda8d2c8 first commit 2 weeks ago
vite.config.ts 8e0e5a8021 add login page 1 week ago
yarn.lock d976b358ec fix: 调整目录结构,增加路由鉴权白名单 18 hours ago

README.md

Content Management System

基于 React + TypeScript + Vite 构建的内容管理系统,集成 JeecgBoot 后台权限系统。

技术栈

  • React 19 - UI 框架
  • TypeScript - 类型安全
  • Vite - 构建工具
  • Contentful F36 - UI 组件库
  • JeecgBoot - 后台权限系统

项目结构

src/
├── config/              # 配置文件
│   └── menuIds.ts      # 菜单ID配置
├── contexts/           # React Context
│   └── AuthContext.tsx # 权限上下文
├── hooks/              # 自定义Hooks
│   └── usePermission.ts # 权限Hook
├── layouts/            # 布局组件
│   ├── MainLayout.tsx
│   ├── Header.tsx
│   └── Sidebar.tsx
├── pages/              # 页面组件
│   └── ContentPage.tsx
├── components/         # 通用组件
│   └── common/
│       ├── EmptyState.tsx
│       ├── PermissionButton.tsx
│       └── PermissionWrapper.tsx
├── services/           # API服务层
│   ├── api.ts         # 系统API
│   ├── BaseService.ts # 基础服务类
│   ├── index.ts       # 统一导出
│   └── modules/       # 业务模块
│       ├── user.ts
│       ├── role.ts
│       └── content.ts
├── types/              # 类型定义
│   └── menu.ts
├── utils/              # 工具函数
│   └── request.ts     # 请求封装
└── examples/           # 使用示例
    ├── ApiUsage.tsx
    └── PermissionUsage.tsx

核心特性

1. 权限管理系统

  • ✅ 动态菜单渲染
  • ✅ 细粒度权限控制(view/add/edit/delete)
  • ✅ 三种权限使用方式
    • PermissionButton 组件
    • PermissionWrapper 组件
    • usePermission Hook

2. 请求封装

  • ✅ 参考 JeecgBoot 前端封装
  • ✅ 自动 Token 管理
  • ✅ 请求/响应拦截
  • ✅ 统一错误处理
  • ✅ 文件上传/下载
  • ✅ 超时控制

3. 服务层封装

  • ✅ BaseService 基类(CRUD)
  • ✅ 分页查询
  • ✅ 批量操作
  • ✅ 导入/导出

快速开始

1. 安装依赖

pnpm install

2. 配置环境变量

复制 .env.example.env

cp .env.example .env

修改 API 地址:

VITE_API_BASE_URL=http://localhost:8080

3. 启动开发服务器

pnpm dev

4. 构建生产版本

pnpm build

使用文档

使用示例

权限控制

import { usePermission } from "@/hooks/usePermission";
import PermissionButton from "@/components/common/PermissionButton";

function MyPage() {
  const permission = usePermission("user-management");

  return (
    <>
      {/* 方式1: 使用 Hook */}
      {permission.canAdd && <Button>新增</Button>}

      {/* 方式2: 使用组件 */}
      <PermissionButton menuId="user-management" action="edit">
        编辑
      </PermissionButton>
    </>
  );
}

API 请求

import { userService } from "@/services";

// 分页查询
const users = await userService.list({ pageNo: 1, pageSize: 10 });

// CRUD 操作
await userService.add({ username: "test" });
await userService.edit({ id: "1", username: "updated" });
await userService.delete("1");

// 导出
await userService.exportXls({}, "用户列表.xls");

开发规范

1. 组件组织

  • layouts/ - 布局组件
  • pages/ - 页面组件
  • components/common/ - 通用组件

2. 服务层组织

  • services/api.ts - 系统级 API
  • services/modules/ - 按业务模块组织

3. 类型定义

  • 所有接口都应该有类型定义
  • 使用 TypeScript 严格模式

浏览器支持

  • Chrome >= 90
  • Firefox >= 88
  • Safari >= 14
  • Edge >= 90

License

MIT