一个基于 Node.js + Koa + Vue 3 构建的个人写作应用,适合写小说、随笔等。
- 后端: Node.js + Koa 2 + koa-body + koa-static
- 前端: Vue 3 (Composition API) + Vite + Vue Router + Axios
- 数据存储: 本地 JSON 文件
- 编辑器: Markdown 支持 (marked + dompurify)
- ✅ 文章创建、编辑、删除
- ✅ Markdown 编辑器 + 实时预览
- ✅ 分类管理
- ✅ 标签管理
- ✅ 主题切换(浅色/深色/护眼)
- ✅ 一键插入分割线
- ✅ 导出为 Markdown
- ✅ 本地文件存储
- ✅ 搜索功能(支持标题、内容、标签搜索)
- ✅ 图片上传功能
- ✅ 更多导出格式(HTML、PDF、Word)
- ✅ 编辑器工具栏优化
write_APP/
├── backend/ # Koa 后端
│ ├── src/
│ │ ├── index.js # 入口
│ │ └── routes/ # API 路由
│ │ ├── articles.js
│ │ ├── categories.js
│ │ └── upload.js
│ ├── data/ # 数据存储
│ │ ├── articles/
│ │ ├── categories/
│ │ └── uploads/
│ └── package.json
├── frontend/ # Vue 3 前端
│ ├── src/
│ │ ├── views/
│ │ │ ├── ArticleList.vue
│ │ │ └── ArticleEditor.vue
│ │ ├── api/
│ │ │ └── index.js
│ │ ├── router/
│ │ │ └── index.js
│ │ ├── styles/
│ │ │ └── main.css
│ │ ├── App.vue
│ │ └── main.js
│ ├── index.html
│ ├── vite.config.js
│ └── package.json
├── package.json
└── README.md
# 安装后端依赖
cd backend
npm install
# 安装前端依赖
cd ../frontend
npm install# 终端 1: 启动后端服务(端口 3000)
cd backend
npm run dev
# 终端 2: 启动前端开发服务器(端口 5173)
cd ../frontend
npm run dev然后在浏览器中打开 http://localhost:5173
| 方法 | 路径 | 描述 |
|---|---|---|
| GET | /api/articles | 获取文章列表(支持 search 查询参数) |
| GET | /api/articles/:id | 获取单篇文章 |
| POST | /api/articles | 创建文章 |
| PUT | /api/articles/:id | 更新文章 |
| DELETE | /api/articles/:id | 删除文章 |
| GET | /api/articles/:id/export/markdown | 导出为 Markdown |
| GET | /api/articles/:id/export/html | 导出为 HTML |
| 方法 | 路径 | 描述 |
|---|---|---|
| GET | /api/categories | 获取分类列表 |
| POST | /api/categories | 创建分类 |
| DELETE | /api/categories/:id | 删除分类 |
| 方法 | 路径 | 描述 |
|---|---|---|
| POST | /api/upload | 上传图片 |
- 新建文章: 点击首页右上角"新建文章"按钮
- 搜索文章: 在搜索框中输入关键词,实时过滤文章列表
- 插入分割线: 在编辑器中点击"分割线"按钮,适合多线小说
- 上传图片: 点击"上传图片"按钮,选择图片后自动插入 Markdown 代码
- 添加分类: 在首页输入新分类名称并点击添加
- 切换主题: 在页面右上角选择不同主题(浅色/深色/护眼)
- 导出文章: 在编辑器中选择导出格式(Markdown/HTML/PDF/Word)
这个项目展示了以下技能:
- Node.js + Koa 2 框架使用
- RESTful API 设计与实现
- 路由中间件、错误处理
- 文件系统操作(fs-extra)
- 文件上传处理(koa-body)
- 静态文件服务
- Vue 3 Composition API
- Vue Router 路由管理
- 组件化开发
- Axios HTTP 请求
- Markdown 渲染与 XSS 防护
- 主题切换(CSS 变量)
- 响应式设计
- 前后端分离架构
- 模块化代码组织
- 功能迭代开发流程
- 本地数据持久化