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

145 lines
6.1 KiB
Markdown
Raw Permalink Normal View History

2026-04-06 22:24:03 +08:00
# 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