删除了不需要的文件
This commit is contained in:
661
ai.md
661
ai.md
@@ -1,661 +0,0 @@
|
||||
# FutureOSS - AI 专用项目介绍
|
||||
|
||||
## 项目概述
|
||||
|
||||
**FutureOSS** 是一个面向开发者的插件化运行时框架,采用「一切皆为插件」的设计理念。它是一个轻量级、安全、灵活的底层支撑系统,适用于构建微服务、开发工具链和可扩展的业务系统。
|
||||
|
||||
**核心设计哲学**:最小化核心框架,最大化插件扩展能力。核心框架仅提供最基本的插件加载和管理功能,所有其他功能(HTTP服务、Web界面、日志系统等)都通过插件实现。
|
||||
|
||||
## 技术栈
|
||||
|
||||
- **语言**: Python 3.10+
|
||||
- **主要依赖**:
|
||||
- `click`: CLI 框架
|
||||
- `pyyaml`: 配置解析
|
||||
- `websockets`: WebSocket 支持
|
||||
- `psutil`: 系统监控
|
||||
- `cryptography`: 加密和签名验证
|
||||
- **架构**: 插件化微内核架构
|
||||
- **协议支持**: HTTP RESTful API, WebSocket, TCP HTTP
|
||||
- **部署**: Docker 容器化支持
|
||||
|
||||
## 项目结构
|
||||
|
||||
```
|
||||
/root/future-oss/
|
||||
├── 📁 oss/ # 核心框架代码
|
||||
│ ├── cli.py # CLI 命令入口
|
||||
│ ├── config/ # 配置系统
|
||||
│ ├── logger/ # 日志系统
|
||||
│ ├── plugin/ # 插件框架核心
|
||||
│ │ ├── capabilities.py # 能力接口定义
|
||||
│ │ ├── loader.py # 插件加载器
|
||||
│ │ ├── manager.py # 插件生命周期管理
|
||||
│ │ └── types.py # 类型定义
|
||||
│ └── shared/ # 共享组件
|
||||
│ └── router.py # 统一路由系统
|
||||
├── 📁 store/ # 插件仓库(核心功能)
|
||||
│ ├── @{FutureOSS}/ # 官方核心插件
|
||||
│ │ ├── plugin-loader/ # 插件加载器(核心)
|
||||
│ │ ├── http-api/ # HTTP API 服务
|
||||
│ │ ├── http-tcp/ # TCP HTTP 服务
|
||||
│ │ ├── ws-api/ # WebSocket API
|
||||
│ │ ├── dashboard/ # Web 控制台
|
||||
│ │ ├── dependency/ # 依赖解析
|
||||
│ │ ├── signature-verifier/ # 签名验证
|
||||
│ │ ├── plugin-bridge/ # 插件间通信
|
||||
│ │ ├── plugin-storage/ # 数据持久化
|
||||
│ │ ├── pkg-manager/ # 包管理
|
||||
│ │ ├── log-terminal/ # 日志终端
|
||||
│ │ ├── json-codec/ # JSON 编解码器
|
||||
│ │ └── webui/ # Web 用户界面
|
||||
│ └── @{Falck}/ # 社区插件
|
||||
│ ├── html-render/ # HTML 渲染引擎
|
||||
│ └── web-toolkit/ # Web 开发工具集
|
||||
├── 📁 data/ # 运行时数据目录
|
||||
├── 📁 static/ # 静态资源
|
||||
├── 📁 templates/ # 模板文件
|
||||
├── 📁 tools/ # 开发工具脚本
|
||||
├── 📁 video/ # 演示视频和文档
|
||||
├── 📄 pyproject.toml # Python 项目配置
|
||||
├── 📄 requirements.txt # Python 依赖
|
||||
├── 📄 docker-compose.yml # Docker 编排配置
|
||||
├── 📄 Dockerfile # Docker 构建文件
|
||||
├── 📄 README.md # 项目说明文档
|
||||
└── 📄 LICENSE # Apache 2.0 许可证
|
||||
```
|
||||
|
||||
## 核心架构
|
||||
|
||||
### 1. 插件系统架构
|
||||
|
||||
FutureOSS 采用三层插件架构:
|
||||
|
||||
1. **核心框架层** (`oss/`): 提供最基本的插件加载和管理能力
|
||||
2. **核心插件层** (`store/@{FutureOSS}/`): 官方提供的核心功能插件
|
||||
3. **社区插件层** (`store/@{Falck}/`): 第三方社区插件
|
||||
|
||||
### 2. 插件生命周期
|
||||
|
||||
```
|
||||
加载 (load) → 初始化 (init) → 启动 (start) → 运行 (run) → 停止 (stop)
|
||||
```
|
||||
|
||||
### 3. 插件元数据格式
|
||||
|
||||
每个插件必须包含 `manifest.json` 文件,格式如下:
|
||||
|
||||
```json
|
||||
{
|
||||
"metadata": {
|
||||
"name": "插件名称",
|
||||
"version": "版本号",
|
||||
"author": "作者",
|
||||
"description": "功能描述",
|
||||
"type": "插件类型 (core/protocol/utility)"
|
||||
},
|
||||
"config": {
|
||||
"enabled": true/false,
|
||||
"args": {
|
||||
"参数名": "参数值"
|
||||
}
|
||||
},
|
||||
"dependencies": ["依赖插件列表"],
|
||||
"permissions": ["所需权限列表"]
|
||||
}
|
||||
```
|
||||
|
||||
### 4. 安全机制
|
||||
|
||||
- **数字签名验证**: 每个插件包含 SIGNATURE 文件
|
||||
- **权限分级控制**: 插件声明所需权限
|
||||
- **沙箱环境**: 可选的安全隔离
|
||||
- **来源验证**: 插件作者命名空间 (@{作者名})
|
||||
|
||||
## 核心插件功能
|
||||
|
||||
### 系统核心插件
|
||||
|
||||
1. **plugin-loader**: 插件扫描、加载与生命周期管理(必需)
|
||||
2. **http-api**: HTTP RESTful API 服务(端口 8080)
|
||||
3. **http-tcp**: TCP 高性能 HTTP 服务(端口 8082)
|
||||
4. **ws-api**: WebSocket API 服务(端口 8081)
|
||||
5. **dashboard**: Web 可视化监控仪表盘
|
||||
6. **dependency**: 插件依赖解析与自动安装
|
||||
7. **signature-verifier**: 插件数字签名验证
|
||||
8. **plugin-bridge**: 插件间通信桥接
|
||||
9. **plugin-storage**: 插件数据持久化存储
|
||||
10. **pkg-manager**: 插件包管理(安装/卸载/搜索)
|
||||
11. **log-terminal**: 日志终端实时输出
|
||||
12. **json-codec**: 统一 JSON 编解码器
|
||||
13. **webui**: Web 用户界面框架
|
||||
|
||||
### 社区插件
|
||||
|
||||
1. **html-render**: HTML 模板渲染引擎
|
||||
2. **web-toolkit**: Web 开发工具集(静态文件/模板/路由)
|
||||
|
||||
### 禁用插件(默认不加载)
|
||||
|
||||
1. **hot-reload**: 开发模式热重载
|
||||
2. **i18n**: 国际化支持
|
||||
3. **lifecycle**: 插件生命周期钩子
|
||||
4. **code-reviewer**: 代码审查工具
|
||||
5. **plugin-loader-pro**: 高级插件加载器
|
||||
|
||||
## PL 注入机制
|
||||
|
||||
PL 注入是 plugin-loader 插件提供的一种扩展机制,允许插件通过 `PL/` 文件夹向插件加载器注册自定义功能。
|
||||
|
||||
### 工作原理
|
||||
|
||||
插件加载器在启动时自动扫描所有插件,检查其 `manifest.json` 中是否声明了 `pl_injection` 配置项:
|
||||
|
||||
```
|
||||
插件加载器启动
|
||||
↓
|
||||
扫描所有插件 manifest.json
|
||||
↓
|
||||
检查 config.args.pl_injection
|
||||
├── true → 检查 PL/ 文件夹
|
||||
│ ├── 存在 PL/main.py → 沙箱执行 → 调用 register(injector) → ✅ 正常加载
|
||||
│ └── 缺少 PL/ 或 PL/main.py → ⚠️ 警告并 ❌ 拒绝加载
|
||||
└── false/未声明 → ✅ 正常加载(跳过 PL 检查)
|
||||
```
|
||||
|
||||
### 使用方式
|
||||
|
||||
#### 1. 在 manifest.json 中声明
|
||||
|
||||
```json
|
||||
{
|
||||
"config": {
|
||||
"args": {
|
||||
"pl_injection": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### 2. 创建 PL/main.py
|
||||
|
||||
```
|
||||
store/@{作者名}/插件名/
|
||||
├── manifest.json # 声明 pl_injection: true
|
||||
├── main.py # 插件主逻辑
|
||||
├── PL/ # PL 注入文件夹
|
||||
│ └── main.py # 注入逻辑(必须包含 register() 函数)
|
||||
└── README.md
|
||||
```
|
||||
|
||||
#### 3. 实现 register() 函数
|
||||
|
||||
```python
|
||||
# PL/main.py
|
||||
def register(injector):
|
||||
"""向插件加载器注册功能
|
||||
|
||||
Args:
|
||||
injector: PLInjector 实例
|
||||
"""
|
||||
# 注册普通功能
|
||||
injector.register_function("my_helper", my_func, "功能描述")
|
||||
|
||||
# 注册 HTTP 路由
|
||||
injector.register_route("GET", "/pl/hello", handler)
|
||||
|
||||
# 注册事件处理器
|
||||
injector.register_event_handler("plugin.started", on_started)
|
||||
```
|
||||
|
||||
### 注入器 API
|
||||
|
||||
| 方法 | 说明 |
|
||||
|------|------|
|
||||
| `register_function(name, func, description="")` | 注册注入功能 |
|
||||
| `register_route(method, path, handler)` | 注册 HTTP 路由 |
|
||||
| `register_event_handler(event_name, handler)` | 注册事件处理器 |
|
||||
| `get_injected_functions(name=None)` | 获取已注册的注入功能 |
|
||||
| `get_injection_info(plugin_name=None)` | 获取注入信息 |
|
||||
| `has_injection(plugin_name)` | 检查插件是否有 PL 注入 |
|
||||
| `get_registry_info()` | 获取注册表完整信息 |
|
||||
|
||||
### 安全限制
|
||||
|
||||
PL 注入机制实施了多层安全限制:
|
||||
|
||||
| 限制类型 | 具体措施 |
|
||||
|---------|---------|
|
||||
| **文件类型限制** | 禁止 PL 文件夹中包含 `.sh`、`.bat`、`.exe`、`.dll`、`.so` 等可执行文件 |
|
||||
| **静态源码检查** | 编译前扫描源码,禁止导入 `os/sys/subprocess/socket/ctypes` 等系统模块,禁止 `exec/eval/compile/open/__import__` |
|
||||
| **沙箱执行** | 在受限沙箱中执行 PL/main.py,仅提供安全的 builtins |
|
||||
| **参数校验** | 功能名称、路由路径、HTTP 方法、事件名称均通过正则校验 |
|
||||
| **数量限制** | 每个插件最多注册 50 个功能,每个名称最多被注册 10 次 |
|
||||
| **异常安全** | 所有注册函数自动包装 try-catch,异常不影响主流程 |
|
||||
| **调用者溯源** | 通过栈帧回溯自动识别调用者插件名,防止冒充注册 |
|
||||
|
||||
### 行为说明
|
||||
|
||||
| 场景 | 结果 |
|
||||
|------|------|
|
||||
| `pl_injection: true` + 存在 `PL/main.py` | ✅ 正常加载,执行注入 |
|
||||
| `pl_injection: true` + 缺少 `PL/` 文件夹 | ❌ 警告并拒绝加载该插件 |
|
||||
| `pl_injection: true` + 存在 `PL/` 但缺少 `main.py` | ❌ 警告并拒绝加载该插件 |
|
||||
| 未声明 `pl_injection` | ✅ 正常加载,跳过 PL 检查 |
|
||||
| `pl_injection: false` | ✅ 正常加载,跳过 PL 检查 |
|
||||
|
||||
## 开发与部署
|
||||
|
||||
### 开发环境设置
|
||||
|
||||
```bash
|
||||
# 安装依赖
|
||||
pip install -e .
|
||||
|
||||
# 启动开发服务器
|
||||
oss serve
|
||||
|
||||
# 访问 Web 控制台
|
||||
# http://localhost:8080
|
||||
```
|
||||
|
||||
### Docker 部署
|
||||
|
||||
```bash
|
||||
# 使用 Docker Compose
|
||||
docker-compose up -d
|
||||
|
||||
# 暴露端口
|
||||
# 8080: HTTP API + 网站
|
||||
# 8081: WebSocket
|
||||
# 8082: HTTP TCP
|
||||
```
|
||||
|
||||
### 插件开发
|
||||
|
||||
1. **创建插件目录**: `store/@{作者名}/{插件名}/`
|
||||
2. **编写 manifest.json**: 定义插件元数据
|
||||
3. **实现 main.py**: 插件主逻辑
|
||||
4. **添加 SIGNATURE**: 数字签名(可选)
|
||||
5. **测试插件**: 通过 pkg-manager 安装测试
|
||||
|
||||
## API 接口
|
||||
|
||||
### HTTP API (端口 8080)
|
||||
|
||||
- `GET /health`: 健康检查
|
||||
- `GET /api/plugins`: 获取插件列表
|
||||
- `GET /api/plugins/{name}`: 获取插件详情
|
||||
- `POST /api/plugins/{name}/enable`: 启用插件
|
||||
- `POST /api/plugins/{name}/disable`: 禁用插件
|
||||
|
||||
### WebSocket API (端口 8081)
|
||||
|
||||
- 实时日志推送
|
||||
- 系统状态监控
|
||||
- 插件事件通知
|
||||
|
||||
### TCP HTTP (端口 8082)
|
||||
|
||||
- 高性能 HTTP 服务
|
||||
- 兼容 HTTP/1.1 协议
|
||||
|
||||
## 配置系统
|
||||
|
||||
### 配置文件位置
|
||||
|
||||
1. **全局配置**: `config.yaml` (可选)
|
||||
2. **插件配置**: `store/@{作者名}/{插件名}/config.json`
|
||||
3. **环境变量**: 支持 Docker 环境变量覆盖
|
||||
|
||||
### 配置优先级
|
||||
|
||||
```
|
||||
环境变量 > 全局配置文件 > 插件默认配置
|
||||
```
|
||||
|
||||
## 数据存储
|
||||
|
||||
### 数据目录结构
|
||||
|
||||
```
|
||||
data/
|
||||
├── html-render/ # 网站渲染文件
|
||||
├── web-toolkit/ # Web 工具配置
|
||||
├── plugin-storage/ # 插件持久化数据
|
||||
└── DCIM/ # 共享资源存储
|
||||
```
|
||||
|
||||
### 存储类型
|
||||
|
||||
1. **临时存储**: 内存缓存
|
||||
2. **持久化存储**: 文件系统 (data/ 目录)
|
||||
3. **插件私有存储**: 每个插件独立存储空间
|
||||
|
||||
## 监控与日志
|
||||
|
||||
### 日志系统
|
||||
|
||||
- **日志级别**: DEBUG, INFO, WARNING, ERROR, CRITICAL
|
||||
- **输出目标**: 控制台、文件、WebSocket
|
||||
- **日志格式**: 结构化 JSON 日志
|
||||
|
||||
### 监控指标
|
||||
|
||||
- 系统资源使用率 (CPU/内存/磁盘)
|
||||
- 插件运行状态
|
||||
- API 请求统计
|
||||
- 错误率和异常监控
|
||||
|
||||
## 扩展能力
|
||||
|
||||
### 自定义插件开发
|
||||
|
||||
FutureOSS 支持多种插件类型:
|
||||
|
||||
1. **协议插件**: 实现网络协议 (HTTP/WebSocket/TCP)
|
||||
2. **工具插件**: 提供开发工具功能
|
||||
3. **界面插件**: 扩展 Web 控制台
|
||||
4. **存储插件**: 实现数据存储后端
|
||||
5. **中间件插件**: 请求处理管道
|
||||
|
||||
### 插件间通信
|
||||
|
||||
- **事件系统**: 发布/订阅模式
|
||||
- **直接调用**: 通过插件管理器
|
||||
- **共享存储**: 通过 plugin-storage
|
||||
- **消息队列**: 通过 plugin-bridge
|
||||
|
||||
## 最佳实践
|
||||
|
||||
### 性能优化
|
||||
|
||||
1. **懒加载插件**: 按需加载非核心插件
|
||||
2. **连接池管理**: 数据库和网络连接复用
|
||||
3. **缓存策略**: 合理使用内存缓存
|
||||
4. **异步处理**: I/O 密集型操作异步化
|
||||
|
||||
### 安全建议
|
||||
|
||||
1. **签名验证**: 生产环境启用所有插件签名验证
|
||||
2. **权限最小化**: 插件只申请必要权限
|
||||
3. **沙箱隔离**: 不可信插件启用沙箱模式
|
||||
4. **定期更新**: 及时更新插件和安全补丁
|
||||
|
||||
### 高可用性
|
||||
|
||||
1. **健康检查**: 配置完整的健康检查端点
|
||||
2. **故障转移**: 关键插件多实例部署
|
||||
3. **监控告警**: 设置系统监控和告警
|
||||
4. **备份恢复**: 定期备份插件配置和数据
|
||||
|
||||
## 故障排除
|
||||
|
||||
### 常见问题
|
||||
|
||||
1. **插件加载失败**: 检查 manifest.json 格式和依赖
|
||||
2. **服务启动失败**: 检查端口冲突和权限
|
||||
3. **性能问题**: 监控系统资源使用情况
|
||||
4. **内存泄漏**: 检查插件资源释放
|
||||
|
||||
### 调试工具
|
||||
|
||||
1. **日志终端**: 实时查看系统日志
|
||||
2. **Web 控制台**: 可视化监控插件状态
|
||||
3. **API 接口**: 通过 REST API 获取系统信息
|
||||
4. **开发工具**: tools/ 目录下的辅助脚本
|
||||
|
||||
## 官方网站项目
|
||||
|
||||
### 项目位置
|
||||
`/root/future-oss/website/` - FutureOSS 官方宣传网站
|
||||
|
||||
### 技术栈
|
||||
- **后端**: Node.js + Express.js
|
||||
- **前端**: EJS 模板引擎 + 原生 JavaScript + CSS3
|
||||
- **构建工具**: npm
|
||||
- **开发工具**: VS Code 运行与调试配置
|
||||
|
||||
### 项目结构
|
||||
```
|
||||
website/
|
||||
├── 📁 public/ # 静态资源
|
||||
│ ├── css/ # 样式文件
|
||||
│ │ ├── main.css # 基础样式和变量
|
||||
│ │ ├── components.css # 组件样式
|
||||
│ │ ├── animations.css # 动画效果
|
||||
│ │ └── pages/ # 页面特定样式
|
||||
│ ├── js/ # JavaScript 文件
|
||||
│ │ ├── main.js # 主逻辑
|
||||
│ │ ├── router.js # 前端路由
|
||||
│ │ ├── animations.js # 动画控制
|
||||
│ │ └── pages/ # 页面特定脚本
|
||||
│ └── images/ # 图片资源
|
||||
├── 📁 src/ # 源代码
|
||||
│ ├── server.js # Express 服务器
|
||||
│ ├── router.js # 路由配置
|
||||
│ ├── controllers/ # 控制器
|
||||
│ │ ├── pagesController.js # 页面控制器
|
||||
│ │ └── apiController.js # API 控制器
|
||||
│ ├── middleware/ # 中间件
|
||||
│ │ └── performance.js # 性能优化中间件
|
||||
│ ├── components/ # 组件(预留)
|
||||
│ ├── pages/ # 页面逻辑(预留)
|
||||
│ └── styles/ # 样式源码(预留)
|
||||
├── 📁 views/ # EJS 视图模板
|
||||
│ ├── layouts/ # 布局文件
|
||||
│ │ └── main.ejs # 主布局
|
||||
│ ├── pages/ # 页面模板
|
||||
│ │ ├── home.ejs # 首页
|
||||
│ │ ├── features.ejs # 特性页
|
||||
│ │ ├── architecture.ejs # 架构页
|
||||
│ │ └── plugins.ejs # 插件页
|
||||
│ └── partials/ # 局部组件
|
||||
│ ├── navbar.ejs # 导航栏
|
||||
│ └── footer.ejs # 页脚
|
||||
├── 📄 package.json # npm 配置
|
||||
├── 📄 package-lock.json # 依赖锁定
|
||||
└── 📄 server.log # 服务器日志
|
||||
```
|
||||
|
||||
### 核心功能
|
||||
|
||||
#### 1. 多页面网站
|
||||
- **首页** (`/`): 项目介绍和快速开始
|
||||
- **特性页** (`/features`): 核心功能展示
|
||||
- **架构页** (`/architecture`): 技术架构说明
|
||||
- **插件页** (`/plugins`): 插件生态系统
|
||||
|
||||
#### 2. 性能优化特性
|
||||
- **响应时间监控**: X-Response-Time 头部
|
||||
- **缓存控制**: 静态资源长期缓存
|
||||
- **压缩支持**: Gzip 和预压缩
|
||||
- **安全头**: CSP、XSS 保护等
|
||||
- **内存监控**: 实时内存使用监控
|
||||
|
||||
#### 3. 用户体验增强
|
||||
- **加载动画**: 页面加载旋转指示器
|
||||
- **页面切换动画**: 平滑的页面过渡效果
|
||||
- **图片懒加载**: 延迟加载非视口图片
|
||||
- **骨架屏**: 内容加载占位符
|
||||
- **响应式设计**: 完整的移动端适配
|
||||
|
||||
#### 4. API 接口
|
||||
- `GET /api/health`: 健康检查
|
||||
- `GET /api/metrics`: 性能指标
|
||||
- `GET /api/info`: 服务器信息
|
||||
- `GET /api/stress-test`: 压力测试(仅开发环境)
|
||||
|
||||
### 技术特点
|
||||
|
||||
#### 服务器特性
|
||||
- **端口自动切换**: 8080被占用时自动使用8081、8082等
|
||||
- **优雅关闭**: 支持 SIGTERM/SIGINT 信号优雅关闭
|
||||
- **错误处理**: 完善的错误处理和404页面
|
||||
- **中间件栈**: 完整的性能优化中间件
|
||||
|
||||
#### 前端特性
|
||||
- **组件化设计**: 导航栏、页脚等独立组件
|
||||
- **前端路由**: 支持无刷新页面切换
|
||||
- **CSS 变量**: 统一的主题变量系统
|
||||
- **动画系统**: 丰富的CSS动画和过渡效果
|
||||
|
||||
#### 开发工具
|
||||
- **VS Code 调试配置**: 支持直接运行与调试
|
||||
- **热重载支持**: nodemon 开发模式
|
||||
- **性能监控**: 实时性能指标输出
|
||||
- **日志系统**: 结构化服务器日志
|
||||
|
||||
### 部署与运行
|
||||
|
||||
#### 开发模式
|
||||
```bash
|
||||
cd /root/future-oss/website
|
||||
npm install
|
||||
npm start
|
||||
# 访问 http://localhost:8080 (或自动切换的端口)
|
||||
```
|
||||
|
||||
#### 生产部署
|
||||
```bash
|
||||
# 使用 PM2 进程管理
|
||||
pm2 start src/server.js --name "futureoss-website"
|
||||
|
||||
# 使用 Docker
|
||||
docker build -t futureoss-website .
|
||||
docker run -p 8080:8080 futureoss-website
|
||||
```
|
||||
|
||||
#### VS Code 调试
|
||||
1. 打开运行与调试面板 (Ctrl+Shift+D)
|
||||
2. 选择 "FutureOSS 网站: 启动Node.js服务器"
|
||||
3. 按 F5 启动调试
|
||||
|
||||
### 性能优化措施
|
||||
|
||||
#### 已实施的优化
|
||||
1. **响应头优化**: 缓存控制、安全头、压缩头
|
||||
2. **静态资源优化**: 长期缓存、预压缩支持
|
||||
3. **代码分割**: 按页面加载CSS和JS
|
||||
4. **图片优化**: 懒加载、占位符、响应式图片
|
||||
5. **动画优化**: 减少重绘、will-change提示
|
||||
|
||||
#### 监控指标
|
||||
- **响应时间**: X-Response-Time 头部
|
||||
- **内存使用**: X-Memory-Usage 头部(开发环境)
|
||||
- **慢响应日志**: 超过1秒的请求记录
|
||||
- **错误率**: 500错误监控和记录
|
||||
|
||||
### 已知问题和解决方案
|
||||
|
||||
#### 1. ERR_HTTP_HEADERS_SENT 错误
|
||||
- **问题**: 在响应已发送后设置响应头
|
||||
- **原因**: `responseTime` 中间件在 `finish` 事件中设置头部
|
||||
- **解决方案**: 使用 `headers` 事件或重写 `end` 方法
|
||||
- **修复代码**:
|
||||
```javascript
|
||||
// 错误写法(在 finish 事件中):
|
||||
res.on('finish', () => {
|
||||
res.setHeader('X-Response-Time', `${duration}ms`); // 错误!
|
||||
});
|
||||
|
||||
// 正确写法(重写 end 方法):
|
||||
const originalEnd = res.end;
|
||||
res.end = function(...args) {
|
||||
if (!res.headersSent) {
|
||||
res.setHeader('X-Response-Time', `${duration}ms`);
|
||||
}
|
||||
return originalEnd.apply(this, args);
|
||||
};
|
||||
```
|
||||
|
||||
#### 2. CSS 加载问题
|
||||
- **问题**: 页面只显示纯文本,CSS未加载
|
||||
- **原因**: EJS 布局系统未正确配置
|
||||
- **解决方案**: 安装并配置 `express-ejs-layouts`
|
||||
- **修复步骤**:
|
||||
1. `npm install express-ejs-layouts`
|
||||
2. 在 server.js 中添加中间件
|
||||
3. 设置默认布局 `app.set('layout', 'layouts/main')`
|
||||
|
||||
#### 3. 加载性能问题
|
||||
- **问题**: 页面加载慢,无加载反馈
|
||||
- **解决方案**: 添加加载动画和性能优化
|
||||
- **实施措施**:
|
||||
1. 添加页面加载旋转动画
|
||||
2. 实现图片懒加载
|
||||
3. 添加骨架屏占位符
|
||||
4. 优化静态资源缓存
|
||||
|
||||
### 扩展和定制
|
||||
|
||||
#### 添加新页面
|
||||
1. 在 `views/pages/` 创建新的 `.ejs` 文件
|
||||
2. 在 `controllers/pagesController.js` 添加渲染函数
|
||||
3. 在 `src/router.js` 添加路由
|
||||
4. 在 `public/css/pages/` 添加页面特定CSS
|
||||
5. 在 `public/js/pages/` 添加页面特定JS
|
||||
|
||||
#### 添加新组件
|
||||
1. 在 `views/partials/` 创建组件 `.ejs` 文件
|
||||
2. 在 `public/css/components.css` 添加组件样式
|
||||
3. 在布局或页面中使用 `<%- include('partials/组件名') %>`
|
||||
|
||||
#### 主题定制
|
||||
通过修改 CSS 变量实现主题切换:
|
||||
```css
|
||||
:root {
|
||||
--primary-color: #1e6fbb; /* 主色调 */
|
||||
--text-primary: #333333; /* 主要文字 */
|
||||
--bg-primary: #ffffff; /* 背景色 */
|
||||
/* 更多变量... */
|
||||
}
|
||||
```
|
||||
|
||||
### 维护指南
|
||||
|
||||
#### 日常维护
|
||||
1. **日志监控**: 定期检查 `server.log` 文件
|
||||
2. **性能监控**: 关注慢响应日志
|
||||
3. **错误处理**: 及时修复报告的错误
|
||||
4. **依赖更新**: 定期更新 npm 包
|
||||
|
||||
#### 故障排除
|
||||
1. **服务器无法启动**: 检查端口占用,查看日志
|
||||
2. **页面样式异常**: 检查CSS文件路径和网络请求
|
||||
3. **API 无响应**: 检查路由配置和控制器
|
||||
4. **性能下降**: 使用 `/api/metrics` 接口诊断
|
||||
|
||||
#### 备份策略
|
||||
1. **代码备份**: Git 版本控制
|
||||
2. **配置备份**: 备份 `package.json` 和服务器配置
|
||||
3. **数据备份**: 备份用户上传内容(如有)
|
||||
4. **日志归档**: 定期归档服务器日志
|
||||
|
||||
## 未来发展方向
|
||||
|
||||
### 短期规划
|
||||
|
||||
1. 插件市场功能完善
|
||||
2. 更多官方插件开发
|
||||
3. 性能优化和稳定性提升
|
||||
4. 官方网站功能增强
|
||||
|
||||
### 长期愿景
|
||||
|
||||
1. 跨语言插件支持
|
||||
2. 云原生集成
|
||||
3. 企业级功能扩展
|
||||
4. 生态系统建设
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **生产部署**: 建议使用 Docker 容器化部署
|
||||
2. **数据备份**: 定期备份 data/ 目录重要数据
|
||||
3. **安全更新**: 关注安全公告并及时更新
|
||||
4. **社区支持**: 通过 Gitee Issues 获取帮助
|
||||
5. **网站维护**: 定期更新官方网站内容和功能
|
||||
|
||||
---
|
||||
|
||||
*本文件专为 AI 助手设计,提供 FutureOSS 项目的全面技术概述,帮助 AI 理解项目架构、功能和使用方式。更新日期:2026年4月19日*
|
||||
Reference in New Issue
Block a user