博客设置
基本信息
{/* Preline 风格表单 */}
)
}
```
**验证点**: Settings 页面显示正常,表单能正常提交
---
### Phase 3: Dashboard 首页 (第 2 天)
**目标**: 后台首页改用 Preline 风格
**改动内容**:
- [ ] 新建 `components-preline/StatsCard.jsx` (统计卡片)
- [ ] 改写 `pages/Dashboard.jsx`
- [ ] 添加图表支持 (可选,用 Recharts 或 Preline Charts)
**Dashboard 新布局**:
```
┌─────────────────────────────────────────────────────────┐
│ [Sidebar] │ Header: Dashboard [🔔][👤] │
│ (dark) ├───────────────────────────────────────────┤
│ │ │
│ Dashboard │ ┌──────────┬──────────┬──────────┐ │
│ Posts │ │ StatsCard│ StatsCard│ StatsCard│ │
│ Categories │ └──────────┴──────────┴──────────┘ │
│ Images │ │
│ Settings │ ┌───────────────────────────────┐ │
│ │ │ Recent Posts Table │ │
│ │ └───────────────────────────────┘ │
│ │ │
└─────────────┴───────────────────────────────────────────┘
```
---
### Phase 4: Posts 管理页面 (第 2-3 天)
**目标**: 文章列表改用 Preline 风格
**改动内容**:
- [ ] 新建 `components-preline/DataTable.jsx` (数据表格)
- [ ] 新建 `components-preline/Badge.jsx` (状态标签)
- [ ] 新建 `components-preline/Pagination.jsx` (分页)
- [ ] 改写 `pages/Posts.jsx`
---
### Phase 5: PostEdit 编辑页面 (第 3 天)
**目标**: 文章编辑改用 Preline 风格
**改动内容**:
- [ ] 新建 `components-preline/Textarea.jsx` (Markdown 编辑器容器)
- [ ] 改写 `pages/PostEdit.jsx`
---
### Phase 6: 剩余页面 (后续)
- [ ] Login 页面
- [ ] Categories 页面
- [ ] Images 页面
- [ ] CrawlEdit 页面
---
### Phase 7: 主题切换功能 (可选)
**目标**: 支持在 Settings 切换后台主题
- [ ] 后端 Setting 表添加 `admin_theme` 字段
- [ ] 主题切换逻辑
- [ ] 主题持久化
---
## 5. 文件清单
### 5.1 需要新建的组件
```
src/components-preline/
├── Layout.jsx # 后台布局 (深色侧边栏 + 顶部栏)
├── Sidebar.jsx # 侧边栏导航
├── Header.jsx # 顶部栏
├── Button.jsx # 按钮
├── Card.jsx # 卡片
├── Input.jsx # 输入框
├── Textarea.jsx # 文本域
├── Select.jsx # 下拉选择
├── Badge.jsx # 标签
├── DataTable.jsx # 数据表格
├── Pagination.jsx # 分页
├── StatsCard.jsx # 统计卡片
├── PageHeader.jsx # 页面标题
├── Modal.jsx # 模态框
├── Alert.jsx # 提示消息
└── index.js # 统一导出
```
### 5.2 需要改写的页面
```
src/pages/
├── Dashboard.jsx # Phase 3
├── Posts.jsx # Phase 4
├── PostEdit.jsx # Phase 5
├── Login.jsx # Phase 6
└── admin/
├── Settings.jsx # Phase 2 (试点)
├── Categories.jsx # Phase 6
└── Images.jsx # Phase 6
```
---
## 6. 风险与回滚方案
### 6.1 潜在风险
| 风险 | 概率 | 影响 | 应对 |
|------|------|------|------|
| CSS 冲突 | 中 | 样式错乱 | 双主题 CSS 变量隔离 |
| JS 兼容 | 低 | Preline 组件失效 | 保留原有组件作为后备 |
| 构建失败 | 低 | 无法部署 | 每次改动后单独测试 |
| 功能回归 | 中 | 原有功能失效 | 逐个页面迁移,充分测试 |
### 6.2 回滚方案
如果某个页面迁移后出问题:
```bash
# 回滚单个页面
git checkout src/pages/Posts.jsx
# 或者使用原有组件
# 把 import { Button } from '../components-preline/Button'
# 改回 import { Button } from '../components/Button'
```
---
## 7. 验证清单
每个 Phase 完成后检查:
- [ ] 页面能正常加载
- [ ] 样式显示正确
- [ ] 表单能正常提交
- [ ] 响应式正常 (移动端/平板/桌面)
- [ ] 访客端页面不受影响
- [ ] 构建无警告/错误
---
## 8. 参考资源
- [Preline Documentation](https://preline.co/docs/index.html)
- [Preline Components](https://preline.co/docs/buttons.html)
- [Preline Admin Templates](https://preline.co/templates.html)
- [Preline React Integration](https://preline.co/docs/frameworks-react.html)
---
## 9. 下一步行动
确认方案后,从 **Phase 1** 开始执行:
1. ✅ 先更新配置文件 (CSS + Tailwind + main.jsx)
2. ✅ 然后 Phase 2: Settings 页面试点
3. ✅ 验证通过后继续后续 Phase
---
**确认开始执行吗?** 先确认一下理解:
> 采用双主题共存方案,访客端保持 Neobrutalism 奶油色粗边框风格,管理后台逐步迁移到 Preline 深色侧边栏现代风格,从 Settings 页面开始试点迁移。
确认后我开始写 Phase 1 的代码。