catalog/repos/abczsl520--nodejs-project-arch.md

145 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Node.js项目架构规范
`Node.js` `项目架构` `AI开发` `代码规范` `模块化`
# nodejs-project-arch
**面向 AI 辅助开发的 Node.js 项目架构规范。**
这是一个 [OpenClaw](https://openclaw.ai) / AI 智能体技能,用于强制执行模块化文件结构,将每个文件控制在足够小的体积,使 AI 能够在不超出上下文窗口的情况下读取和编辑。
## ✨ 为什么需要它?
当 AI 智能体处理大型单文件代码库时,问题会迅速暴露:
| 场景 | 每次读取的 Token 数 | 上下文占用200K |
|------|----------------|-----------------|
| 3000 行的 `server.js` | ~40K | 20% |
| 200 行的模块 | ~2.7K | 1.3% |
**结论:** 拆分文件意味着在上下文压缩前可完成 **10-15 轮高效操作**,而单体文件只能完成 3-5 轮。这相当于每次文件读取节省了 **70-93% 的 Token**
## 📐 核心规则
- **单文件 ≤ 400 行** / `index.html` ≤ 200 行 / `server.js` 入口 ≤ 100 行
- **所有可调参数**存入 `config.json`——运行时加载,可通过管理后台编辑
- **后端:** `routes/` 按业务域划分,`services/` 存放共享逻辑,`db.js` 负责数据库初始化
- **前端:** HTML 仅保留骨架JS/CSS 分离存放于 `public/` 目录下
- **每个项目**都包含 `admin.html` + `routes/admin.js`,用于配置热重载和统计信息
## 🎮 支持的项目类型
| 类型 | 识别信号 | 参考文档 |
|------|---------|---------|
| **H5 游戏** | Canvas、Phaser、Matter.js、游戏循环、精灵图 | [references/game.md](references/game.md) |
| **数据工具** | 爬虫、采集器、调度器、数据同步、数据分析 | [references/tool.md](references/tool.md) |
| **内容/工具类** | 生成器、库、发布工具、文件处理 | [references/tool.md](references/tool.md) |
| **看板/监控** | 图表、实时数据、告警、指标 | [references/tool.md](references/tool.md) |
| **API 服务** | REST 接口、中间件、微服务 | [references/tool.md](references/tool.md) |
| **SDK/库** | 共享模块、构建步骤、多消费者 | [references/sdk.md](references/sdk.md) |
## 📁 典型目录结构
```
project-name/
server.js ← 入口文件,仅挂载路由(<100 行)
config.json ← 所有可调参数(管理后台可编辑)
db.js ← 数据库初始化 + 工具函数
routes/
auth.js ← 认证路由
game.js ← 核心游戏/业务路由
admin.js ← 管理员 API配置增删改查、统计信息
services/ ← 共享业务逻辑
public/
index.html ← 纯 HTML 骨架(<200 行)
admin.html ← 管理后台
css/style.css
js/ ← 按职责拆分,每个文件 <400 行
assets/
```
## 🚀 安装方式
### OpenClaw 用户
将技能复制到你的智能体技能目录:
```bash
# 克隆并复制
git clone https://github.com/abczsl520/nodejs-project-arch.git
cp -r nodejs-project-arch ~/.agents/skills/
# 或者如果你安装了 clawhub
# clawhub install nodejs-project-arch
```
当你要求 AI 智能体执行以下操作时,该技能会自动激活:
- 创建新的 Node.js 项目
- 重构大型单文件代码库
- 拆分超大文件
### 手动参考
直接浏览参考文档:
- [游戏架构](references/game.md) —— 基于 Canvas/Phaser 的 H5 游戏
- [工具架构](references/tool.md) —— 数据工具、看板、API 服务
- [SDK 架构](references/sdk.md) —— 共享库与 SDK
## 📖 文档
完整文档可在 [Wiki](https://github.com/abczsl520/nodejs-project-arch/wiki) 上查阅:
- [首页](https://github.com/abczsl520/nodejs-project-arch/wiki) —— 概览
- [安装指南](https://github.com/abczsl520/nodejs-project-arch/wiki/Installation) —— 配置步骤
- [游戏架构](https://github.com/abczsl520/nodejs-project-arch/wiki/Game-Architecture) —— H5 游戏规范
- [工具架构](https://github.com/abczsl520/nodejs-project-arch/wiki/Tool-Architecture) —— 非游戏项目规范
- [SDK 架构](https://github.com/abczsl520/nodejs-project-arch/wiki/SDK-Architecture) —— 库/SDK 规范
- [配置模式](https://github.com/abczsl520/nodejs-project-arch/wiki/Config-Pattern) —— 通用 config.json 模式
- [管理后台](https://github.com/abczsl520/nodejs-project-arch/wiki/Admin-Dashboard) —— 管理面板规范
- [Token 节省分析](https://github.com/abczsl520/nodejs-project-arch/wiki/Token-Savings) —— Token 节省效果分析
## 🔧 快速示例config.json 模式
```javascript
// server.js —— 加载并提供配置
const config = JSON.parse(fs.readFileSync('./config.json', 'utf8'));
app.get('/api/config', (req, res) => {
const safe = { ...config };
delete safe.admin;
res.json(safe);
});
// 管理员热重载
app.post('/admin/config', requireAdmin, (req, res) => {
fs.writeFileSync('./config.json.bak', fs.readFileSync('./config.json'));
fs.writeFileSync('./config.json', JSON.stringify(req.body, null, 2));
Object.assign(config, req.body);
res.json({ ok: true });
});
```
## 📊 真实场景 Token 节省数据
| 场景 | 优化前 | 优化后 | 节省比例 |
|------|--------|-------|---------|
| 读取游戏功能代码 | ~40K Token | ~2.7K Token | **93%** |
| 单轮开发(读取→编辑→验证) | ~52K Token | ~4K Token | **92%** |
| 4 轮 SDK 开发会话 | ~196K Token | ~69K Token | **65%** |
| 大型数据工具模块 | ~84K Token | ~8K Token | **90%** |
## 🧬 project-arch 家族的一员
该技能实现了 [project-arch-core](https://github.com/abczsl520/project-arch-core) 中针对 Node.js 的专项模式——project-arch-core 是面向 AI 辅助开发的语言无关架构原则集合。
| 技能 | 语言 | 状态 |
|------|------|------|
| **project-arch-core** | 通用原则 | ✅ 基础版 |
| **nodejs-project-arch**(本项目) | Node.js / Express | ✅ 已发布 |
| [react-project-arch](https://github.com/abczsl520/react-project-arch) | React / Vite | ✅ 已发布 |
| python-project-arch | Python | 🔲 欢迎社区贡献 |
| go-project-arch | Go | 🔲 欢迎社区贡献 |
## 许可证
MIT