nargo-document 0.0.0

Nargo documentation tool
Documentation
# Nargo Document 架构设计

## 1. 整体架构

Nargo Document (nargo-document) 是一个基于 Nargo 编译器链的文档生成和管理工具,用于替代 VitePress,为 Nargo 项目提供完整的文档解决方案。

### 1.1 核心组件

```
nargo-document/
├── src/
│   ├── main.rs              # 主入口
│   ├── cli/                 # 命令行接口
│   ├── config/              # 配置系统
│   ├── generator/           # 文档生成器
│   │   ├── markdown/        # Markdown 处理
│   │   ├── html/            # HTML 生成
│   │   └── static/          # 静态资源处理
│   ├── server/              # 开发服务器
│   ├── theme/               # 主题系统
│   └── utils/               # 工具函数
├── Cargo.toml               # 依赖配置
└── README.md                # 说明文档
```

### 1.2 集成关系

```
┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│                 │     │                 │     │                 │
│   nargo-document  │────>│   nargo-tools     │────>│   nargo-compiler  │
│                 │     │                 │     │                 │
└─────────────────┘     └─────────────────┘     └─────────────────┘
        │                       │                       │
        ▼                       ▼                       ▼
┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│                 │     │                 │     │                 │
│   nargo-bundler   │<────│   nargo-parser    │<────│   nargo-ssr       │
│                 │     │                 │     │                 │
└─────────────────┘     └─────────────────┘     └─────────────────┘
```

## 2. 核心模块设计

### 2.1 命令行接口 (CLI)

- **功能**:提供 `nargo doc` 命令,支持构建和开发服务器模式
- **命令**  - `nargo doc build` - 构建静态文档
  - `nargo doc dev` - 启动开发服务器
  - `nargo doc serve` - 预览构建的文档
- **参数**  - `--config` - 指定配置文件路径
  - `--outDir` - 指定输出目录
  - `--port` - 指定开发服务器端口

### 2.2 配置系统

- **配置文件**:支持 `nargodoc.config.ts``nargodoc.config.js`
- **配置项**  - `title` - 文档标题
  - `description` - 文档描述
  - `locales` - 多语言配置
  - `themeConfig` - 主题配置(导航、侧边栏等)
  - `markdown` - Markdown 配置
  - `build` - 构建配置
- **配置解析**:使用 TypeScript/JavaScript 配置文件,支持类型提示

### 2.3 文档生成器

#### 2.3.1 Markdown 处理器

- **功能**:解析 Markdown 文件,支持扩展语法
- **特性**  - 语法高亮
  - Mermaid 图表
  - 代码块处理
  - 数学公式支持
- **实现**:利用现有的解析器,扩展支持文档特定功能

#### 2.3.2 HTML 生成器

- **功能**:将 Markdown 转换为 HTML 页面
- **特性**  - 主题应用
  - 导航生成
  - 侧边栏生成
  - 多语言支持
- **实现**:基于 nargo-bundler 的能力,生成静态 HTML

#### 2.3.3 静态资源处理

- **功能**:处理图片、CSS、JS 等静态资源
- **特性**  - 资源优化
  - 路径处理
  - 缓存控制
- **实现**:利用 nargo-bundler 的资源处理能力

### 2.4 开发服务器

- **功能**:提供热模块替换(HMR)的开发环境
- **特性**  - 实时预览
  - 文件监听
  - 自动刷新
  - 错误提示
- **实现**:基于 Nargo 现有的 HMR 实现,扩展支持文档场景

### 2.5 主题系统

- **功能**:提供可定制的文档主题
- **特性**  - 默认主题
  - 自定义主题
  - 样式覆盖
  - 布局定制
- **实现**:基于 CSS 变量和模板系统

### 2.6 工具函数

- **功能**:提供通用工具函数
- **模块**  - 文件操作
  - 路径处理
  - 日志系统
  - 错误处理
- **实现**:复用 Nargo 现有的工具函数

## 3. 数据流设计

### 3.1 构建流程

1. **配置解析**:读取并解析配置文件
2. **文件扫描**:查找所有 Markdown 和 Nargo 文件
3. **内容处理**   - 解析 Markdown 文件
   - 分析 Nargo 组件
   - 生成文档内容
4. **HTML 生成**   - 应用主题
   - 生成导航和侧边栏
   - 生成静态 HTML 文件
5. **资源处理**   - 处理静态资源
   - 优化输出文件
6. **输出**:将生成的文件写入输出目录

### 3.2 开发服务器流程

1. **配置解析**:读取并解析配置文件
2. **文件监听**:监听文件变化
3. **服务器启动**:启动 HTTP 服务器
4. **热更新**   - 检测文件变化
   - 重新处理变化的文件
   - 通过 WebSocket 通知浏览器更新
5. **实时预览**:浏览器自动更新显示

## 4. 与现有 Nargo 工具的集成

### 4.1 与 nargo-tools 的集成

- **复用**:使用 nargo-tools 现有的文档生成功能
- **扩展**:扩展脚本分析能力,支持更详细的文档生成
- **集成**:将 nargo-document 作为 nargo-tools 的一个子命令

### 4.2 与 nargo-bundler 的集成

- **使用**:利用 nargo-bundler 的打包和构建能力
- **扩展**:添加文档特定的构建逻辑
- **优化**:针对文档场景优化构建性能

### 4.3 与 nargo-parser 的集成

- **使用**:利用 nargo-parser 解析 Nargo 文件
- **扩展**:添加对 Markdown 文件的解析支持
- **集成**:统一解析接口,支持多种文件格式

## 5. 性能优化策略

### 5.1 增量构建

- **实现**:只重新处理变化的文件
- **缓存**:缓存已处理的文件内容
- **依赖分析**:跟踪文件依赖关系,只重建受影响的文件

### 5.2 并行处理

- **实现**:利用 Rust 的多线程能力
- **并行**:并行处理多个文件
- **批处理**:批量处理相似任务

### 5.3 内存优化

- **实现**:优化内存使用
- **流式处理**:大文件采用流式处理
- **内存缓存**:合理使用内存缓存

## 6. 扩展性设计

### 6.1 插件系统

- **设计**:简单的插件接口
- **支持**:自定义插件扩展功能
- **集成**:与现有 Nargo 插件系统兼容

### 6.2 主题扩展

- **设计**:主题继承和覆盖机制
- **支持**:自定义主题和样式
- **集成**:与现有 CSS 处理工具集成

### 6.3 多语言支持

- **设计**:基于配置的多语言系统
- **支持**:自动生成多语言文档
- **集成**:与现有国际化工具集成

## 7. 迁移策略

### 7.1 从 VitePress 迁移

- **配置兼容**:提供 VitePress 配置的转换工具
- **内容兼容**:支持 VitePress 的 Markdown 扩展
- **主题迁移**:提供主题迁移指南

### 7.2 渐进式采用

- **设计**:支持与 VitePress 共存
- **工具**:提供迁移辅助工具
- **文档**:详细的迁移指南

## 8. 技术栈

- **核心语言**:Rust
- **前端**:HTML, CSS, JavaScript
- **构建工具**:Nargo 编译器链
- **依赖**  - nargo-tools
  - nargo-bundler
  - nargo-parser
  - markdown-rs (Markdown 解析)
  - tokio (异步运行时)
  - warp (HTTP 服务器)

## 9. 开发计划

1. **阶段 1**:基础架构搭建
   - 命令行接口
   - 配置系统
   - 基础文档生成

2. **阶段 2**:核心功能实现
   - Markdown 处理
   - HTML 生成
   - 静态站点构建

3. **阶段 3**:开发服务器
   - 服务器实现
   - 热模块替换
   - 实时预览

4. **阶段 4**:主题系统
   - 默认主题
   - 主题定制
   - 样式系统

5. **阶段 5**:优化和集成
   - 性能优化
   - 与 Nargo 工具链集成
   - 迁移工具

## 10. 结论

Nargo Document 架构设计充分利用了 Nargo 现有的编译器链和工具能力,通过扩展和集成,构建一个完整的文档系统。该架构具有以下优势:

- **性能优势**:基于 Rust 的高性能实现
- **集成优势**:与 Nargo 工具链深度集成
- **扩展优势**:模块化设计,易于扩展
- **迁移优势**:支持从 VitePress 平滑迁移

通过这个架构,Nargo Document 可以为 Nargo 项目提供一个高效、灵活、功能完整的文档解决方案,替代现有的 VitePress 系统。