# mathPages 目录重构方案

## 当前目录结构

```
mathPages/
├── addition/           # 页面
├── compare/            # 页面
├── countingSelect/     # 页面
├── countMatch/         # 页面
├── missingNumber/      # 页面
├── numberDecompose/    # 页面
├── numberFind/         # 页面
├── assets/             # 静态资源
├── common/             # 公共文件（mixin等）
├── components/         # 组件
└── service/            # 服务（Draw相关）
```

## 问题

- 页面和服务放在同一级，不易区分
- 目录较多，查找页面不够直观
- 公共服务散落在不同目录

## 推荐方案：使用 `shared/` 目录

### 重构后的目录结构

```
mathPages/
├── addition/           # 页面
├── compare/            # 页面
├── countingSelect/     # 页面
├── countMatch/         # 页面
├── missingNumber/      # 页面
├── numberDecompose/    # 页面
├── numberFind/         # 页面
├── assets/             # 静态资源
└── shared/             # 公共服务目录（新建）
    ├── service/        # 服务（从 service/ 移动）
    ├── common/         # 公共文件（从 common/ 移动）
    └── components/     # 组件（从 components/ 移动）
```

### 优点

1. ✅ **语义清晰**：`shared/` 明确表示共享代码
2. ✅ **结构清晰**：页面和公共服务分离，一目了然
3. ✅ **易于维护**：所有公共服务集中在一个目录下
4. ✅ **符合常见实践**：`shared/` 在很多项目中都有使用
5. ✅ **扩展性好**：未来可以添加 `shared/utils/`、`shared/types/` 等

### 需要修改的导入路径

#### 页面文件中的导入

**之前：**

```typescript
import AdditionDraw from '../service/additionDraw';
import { createMathPage } from '../common/mathPageMixin';
import MathBottomButtons from '../components/math-bottom-buttons/math-bottom-buttons';
```

**之后：**

```typescript
import AdditionDraw from '../shared/service/additionDraw';
import { createMathPage } from '../shared/common/mathPageMixin';
import MathBottomButtons from '../../components/math-bottom-buttons/math-bottom-buttons';
```

#### service 文件之间的导入

**之前：**

```typescript
import { BaseDrawService } from './baseMathDraw';
```

**之后：**

```typescript
import { BaseDrawService } from './baseMathDraw';
// 或者如果跨目录
import { BaseDrawService } from '../baseMathDraw';
```

## 备选方案：使用 `lib/` 目录

如果不想用 `shared/`，也可以考虑 `lib/`：

```
mathPages/
├── addition/
├── compare/
├── ...
├── assets/
└── lib/              # 公共服务目录
    ├── service/
    ├── common/
    └── components/
```

**优点：**

- 简洁
- 表示库文件

**缺点：**

- `lib/` 通常用于第三方库或编译产物
- 语义上不如 `shared/` 清晰

## 备选方案：使用 `core/` 目录

```
mathPages/
├── addition/
├── compare/
├── ...
├── assets/
└── core/             # 核心功能目录
    ├── service/
    ├── common/
    └── components/
```

**优点：**

- 表示核心功能

**缺点：**

- `core/` 通常用于框架核心，不太适合业务代码

## 迁移步骤

1. **创建 `shared/` 目录**
2. **移动目录**
    - `service/` → `shared/service/`
    - `common/` → `shared/common/`
    - `components/` → `shared/components/`
3. **批量更新导入路径**
    - 所有页面文件中的 `../service/` → `../shared/service/`
    - 所有页面文件中的 `../common/` → `../shared/common/`
    - 所有页面文件中的 `../components/` → `../shared/components/`
    - 检查 `shared/` 内部文件的相互导入
4. **更新配置文件**
    - 检查是否有路径配置需要更新（如 `app.json` 中的组件路径）
5. **测试验证**
    - 确保所有页面功能正常
    - 确保导入路径正确

## 推荐使用 `shared/` 目录

综合考虑，**推荐使用 `shared/` 目录**，因为：

- 语义最清晰
- 符合常见实践
- 易于理解和维护
