|
# 锿–¹ React 皮肤 NewLife.Cube.React




锿–¹ï¼ˆNewLife.Cube)第三代 WebAPI å‰ç«¯çš„ **React 皮肤**,独立 NuGet 包 + 独立仓库管ç†ã€‚基于 **React 19 + Ant Design 6 + Zustand + Vite**,由åŽç«¯å—段元数æ®ï¼ˆ`GetPage`ï¼‰é©±åŠ¨ï¼ŒåŠ¨æ€æ¸²æŸ“通用列表页 / 表å•页,符åˆ[锿–¹çš®è‚¤è®¾è®¡è§„范](https://github.com/NewLifeX/NewLife.Cube/blob/master/Doc/UI设计/皮肤设计规范.md)。
引用 `NewLife.Cube` + `NewLife.Cube.React` 两个包,`dotnet run` åŽæµè§ˆå™¨æ‰“开峿œ‰å®Œæ•´ç®¡ç†åŽå°â€”—登录ã€åЍæ€èœå•ã€å—段元数æ®é©±åŠ¨çš„åˆ—è¡¨/表å•ã€CRUDã€å¯¼å…¥å¯¼å‡ºã€AI 助手ç‰ï¼Œ**é›¶å‰ç«¯å¼€å‘**。
> 演示/æ•™ç¨‹ï¼šé”æ–¹æ•™ç¨‹ <https://newlifex.com/cube> | 演示站点 <https://cube.newlifex.com>
---
## 亮点
- **开箱å³ç”¨**:`app.UseReact(env)` 一行接入,构建产物嵌入 DLL éš NuGet 分å‘ï¼Œæ— ç‰©ç†æ–‡ä»¶ä¾èµ–
- **å—æ®µå…ƒæ•°æ®é©±åЍ**:列表/表å•/æœç´¢/详情全部由åŽç«¯ `GetPage` 元数æ®åŠ¨æ€æ¸²æŸ“,新增实体零å‰ç«¯å¼€å‘
- **符åˆé”方皮肤设计规范**:认è¯ç™»å½•å…¨æµç¨‹ã€é€šç”¨åˆ—表ã€é€šç”¨è¡¨å•ã€LOV/ä¸Šä¼ /富文本/AI 助手ç‰å…¬å…±ç»„ä»¶
- **消费共享公共包**:基于 `@cube/*`(api-core/auth-logic/page-logic/field-mapping/page-utilsï¼‰ï¼Œæ¡†æž¶æ— å…³æ ¸å¿ƒå¤šçš®è‚¤å…±äº«
- **å•一主题 × 明暗**:antd token 驱动的原生观感,明暗切æ¢ä¸€é”®å®Œæˆ
- **AI 智能助手**:SSE æµå¼å¯¹è¯ + å¿«æ·æŒ‡ä»¤ + 智能填表 + 系统诊æ–,内置 mermaid 渲染
- **测试完备**ï¼šå•æµ‹ 136 个 + E2E 48 个全过,Playwright 登录会è¯å¤ç”¨
## 文档索引
- 📋 [需求文档](/NewLife/NewLife.Cube.React/Blob/master/Doc/需求文档.md) — æ„¿æ™¯ã€æ ¸å¿ƒç›®æ ‡ã€åŠŸèƒ½éœ€æ±‚ã€æš‚缓/ä¸åšä»€ä¹ˆ
- ✅ [功能清å•](/NewLife/NewLife.Cube.React/Blob/master/Doc/功能清å•.md) — 实现/测试/注释三维状æ€è¿½è¸ª
- ðŸ—ï¸ [架构设计](/NewLife/NewLife.Cube.React/Blob/master/Doc/架构设计.md) — .NET 皮肤集æˆã€å…¬å…±åŒ…ç–ç•¥ã€å‰ç«¯æž¶æž„
- ðŸ–¥ï¸ [å‰ç«¯å·¥ç¨‹è¯´æ˜Ž](/NewLife/NewLife.Cube.React/Blob/master/NewLife.Cube.React/web/README.md) — web 目录开å‘/构建/测试指å—
## 快速开始
å‰ç½®ï¼šæœ¬åœ°éœ€æœ‰ `../NewLife.Cube` monorepo(团队公共å‰ç«¯åŒ…仓库,且已 `pnpm install` ä¿è¯ `packages/*/dist` å˜åœ¨ï¼‰ã€‚
```bash
# 1. å¯åЍåŽç«¯ API(CubeDemo,默认 http://localhost:5050,SQLite å…外部ä¾èµ–)
dotnet run --project CubeDemo/CubeDemo.csproj
# 2. å¯åЍå‰ç«¯ devï¼ˆç«¯å£ 5188)
cd NewLife.Cube.React/web
pnpm install
pnpm dev
```
æµè§ˆå™¨æ‰“å¼€ <http://localhost:5188> å³å¯çœ‹åˆ°ç™»å½•页,登录åŽè¿›å…¥å®Œæ•´ç®¡ç†åŽå°ã€‚
## 本地开å‘
```bash
# å‰ç«¯æž„建/检查/啿µ‹ï¼ˆweb/ 目录)
cd NewLife.Cube.React/web
pnpm build # 输出 ../wwwroot(供 .NET 嵌入)
pnpm type-check # tsc 类型检查
pnpm test:unit # Vitest 啿µ‹ï¼ˆ136 个)
pnpm test:e2e # Playwright E2E(48 个;默认 5050ï¼Œå¯ $env:E2E_BASE_URL 覆盖)
# .NET 构建(嵌入 wwwroot → DLL)
dotnet build 锿–¹React.slnx -c Release
```
**修改公共包**:改 `../NewLife.Cube/packages/*` æºç åŽï¼Œåœ¨ monorepo 执行 `pnpm build:packages`(或 `pnpm dev:packages` watch 实时é‡å»ºï¼‰ï¼Œçš®è‚¤ï¼ˆ`file:` 符å·é“¾æŽ¥ï¼‰å³æ—¶ç”Ÿæ•ˆã€‚
## 测试
- **å•元测试**:Vitest + React Testing Library + jsdom,136 个用例全过
- **E2E 测试**:Playwright 48 个用例(登录/注册/激活/忘记密ç /安全ä¸å¿ƒ/åˆ—è¡¨å¢žåˆ æ”¹/导入导出/布局/ä¸Šä¼ /AI),登录会è¯å¤ç”¨
- **.NET 集æˆ**:CubeDemo + `UseReact` å…¨æµç¨‹ç«¯åˆ°ç«¯ï¼ˆç™»å½•→èœå•→CRUDâ†’å¯¼å‡ºâ†’åˆ·æ–°ä¸ 404)
## å‘布
- **NuGet 包**:`NewLife.Cube.React`(版本 `1.0.{yyyy.MMdd}`ï¼Œå« snupkg 符å·åŒ…)
- **CI 自动化**:⸠规划ä¸â€”—待公共包 npm å‘å¸ƒå°±ç»ªåŽæ”¹é€ `.github/workflows/`(web å‰ç½®æž„建 → `dotnet pack` → å‘布 nuget.org + GitHub Packages),è§[功能清å•](/NewLife/NewLife.Cube.React/Blob/master/Doc/功能清å•.md) §4
## 相关仓库
| 仓库 | 说明 |
|------|------|
| [NewLife.Cube](https://github.com/NewLifeX/NewLife.Cube) | 锿–¹æ ¸å¿ƒï¼ˆWebAPI/æƒé™/èœå•/å—æ®µå…ƒæ•°æ®ï¼‰+ å‰ç«¯å…¬å…±åŒ… `packages/@cube/*` |
| [锿–¹çš®è‚¤è®¾è®¡è§„范](https://github.com/NewLifeX/NewLife.Cube/blob/master/Doc/UI设计/皮肤设计规范.md) | 锿–¹æ‰€æœ‰çš®è‚¤åº”éµå¾ªçš„统一设计规范,React 皮肤符åˆè¯¥è§„范 |
| NewLife.Cube.Vue | Vue ç³»å‰ç«¯çš®è‚¤ï¼ˆVue3 + Element Plus) |
| [NewLife.Cube.React](https://github.com/NewLifeX/NewLife.Cube.React) | 本仓库(React ç³»å‰ç«¯çš®è‚¤ï¼‰ |
## License
[MIT](/NewLife/NewLife.Cube.React/Blob/master/LICENSE) © 2002-2026 新生命开å‘团队
|