# markdown-editor **Repository Path**: cutecuteyu/markdown-editor ## Basic Information - **Project Name**: markdown-editor - **Description**: markdown-editor - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-08 - **Last Updated**: 2026-03-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Markdown 编辑器 一个功能完整、界面美观的基于 Web 的 Markdown 编辑器,支持实时预览和文件保存功能。 ## 功能特性 ### 核心功能 - **实时预览** - 在编辑时即时查看 Markdown 渲染效果 - **文件保存** - 将 Markdown 内容保存到服务器 - **文件加载** - 从服务器加载已保存的文件 - **代码高亮** - 支持多种编程语言的语法高亮 - **美观界面** - 深色主题设计,类似 VS Code 风格 ### Markdown 语法支持 - 标题(H1-H6) - 列表(有序和无序) - 链接和图片 - 代码片段(行内和块级) - 表格 - 粗体、斜体、粗斜体 - 引用块 - 水平分隔线 ### 用户界面 - 左右分栏布局(编辑区 + 预览区) - 响应式设计,适配不同屏幕尺寸 - 文件名输入和操作按钮 - 操作结果提示(成功/错误消息) ## 技术栈 ### 后端 - **FastAPI** - 现代化的 Python Web 框架 - **Uvicorn** - ASGI 服务器 - **Pydantic** - 数据验证和序列化 - **Python 3.8+** - 编程语言 ### 前端 - **Vue 3.5.29** - 渐进式 JavaScript 框架 - **Vue Router 5.0.3** - 官方路由管理器 - **Marked 17.0.4** - Markdown 解析库 - **Highlight.js 11.11.1** - 代码语法高亮 - **Vite 7.3.1** - 快速的前端构建工具 - **Node.js 20.19.0+** - JavaScript 运行环境 ## 项目结构 ``` NEWTEST/ ├── backend/ # 后端服务 │ ├── data/ # 文件存储目录 │ ├── __init__.py │ └── main.py # FastAPI 应用主文件 ├── frontend/ # 前端应用 │ ├── public/ # 静态资源 │ ├── src/ │ │ ├── assets/ # 样式和资源 │ │ ├── components/ # Vue 组件 │ │ │ └── MarkdownEditor.vue │ │ ├── router/ # 路由配置 │ │ ├── views/ # 页面视图 │ │ ├── App.vue # 根组件 │ │ └── main.js # 应用入口 │ ├── package.json # 前端依赖配置 │ └── vite.config.js # Vite 配置 ├── pyproject.toml # Python 项目配置 ├── start_backend.ps1 # 后端启动脚本 └── README.md # 项目文档 ``` ## 快速开始 ### 环境要求 - Python 3.8 或更高版本 - Node.js 20.19.0 或更高版本 - uv(推荐)或 pip ### 安装步骤 #### 1. 克隆项目 ```bash git clone cd NEWTEST ``` #### 2. 安装后端依赖 使用 uv(推荐): ```bash uv sync ``` 或使用 pip: ```bash pip install -r requirements.txt ``` #### 3. 安装前端依赖 ```bash cd frontend npm install ``` #### 4. 配置环境变量 在 `frontend/` 目录下创建 `.env` 文件: ```bash cd frontend ``` 创建 `.env` 文件并添加以下内容: ```env VITE_API_BASE_URL=http://localhost:8000 ``` **环境变量说明:** - `VITE_API_BASE_URL`: 后端 API 的基础 URL - 开发环境:`http://localhost:8000` - 生产环境:应配置为实际的后端服务器地址(如:`https://api.yourdomain.com`) ### 运行项目 #### 启动后端服务 方式一:使用启动脚本(Windows) ```powershell .\start_backend.ps1 ``` 方式二:直接运行 ```bash uv run uvicorn backend.main:app --host 0.0.0.0 --port 8000 ``` 或使用 pip: ```bash python -m uvicorn backend.main:app --host 0.0.0.0 --port 8000 ``` 后端服务将运行在:http://localhost:8000 #### 启动前端服务 ```bash cd frontend npm run dev ``` 前端服务将运行在:http://localhost:5173 #### 访问应用 在浏览器中打开:http://localhost:5173 ## API 文档 后端 API 文档自动生成,可通过以下地址访问: - **Swagger UI**: http://localhost:8000/docs - **ReDoc**: http://localhost:8000/redoc ### API 端点 #### 1. 保存文件 **POST** `/api/save` 请求体: ```json { "filename": "example.json", "content": "# Hello World", "metadata": { "timestamp": "2024-01-01T00:00:00Z", "size": 13 } } ``` 响应: ```json { "success": true, "message": "File saved successfully", "filename": "example.json" } ``` #### 2. 加载文件 **GET** `/api/load/{filename}` 响应: ```json { "success": true, "filename": "example.json", "content": "# Hello World", "message": "File loaded successfully" } ``` #### 3. 列出所有文件 **GET** `/api/files` 响应: ```json { "files": ["example1.json", "example2.json"] } ``` #### 4. 删除文件 **DELETE** `/api/delete/{filename}` 响应: ```json { "success": true, "message": "File 'example.json' deleted successfully" } ``` ## 使用说明 ### 基本操作 1. **编辑 Markdown** - 在左侧编辑区输入 Markdown 内容 - 右侧预览区会实时显示渲染结果 2. **保存文件** - 在文件名输入框中输入文件名 - 点击"保存"按钮或按回车键 - 系统会自动添加 `.json` 后缀 3. **加载文件** - 在文件名输入框中输入已保存的文件名 - 点击"加载"按钮 - 系统会自动添加 `.json` 后缀 ### 支持的 Markdown 语法 #### 标题 ```markdown # 一级标题 ## 二级标题 ### 三级标题 ``` #### 代码块 ```markdown \`\`\`javascript function hello() { console.log('Hello, World!'); } \`\`\` ``` #### 表格 ```markdown | 列1 | 列2 | 列3 | |------|------|------| | 数据1 | 数据2 | 数据3 | ``` #### 链接 ```markdown [Vue.js](https://vuejs.org) ``` #### 图片 ```markdown ![alt text](image-url.jpg) ``` #### 列表 ```markdown - 无序列表项1 - 无序列表项2 1. 有序列表项1 2. 有序列表项2 ``` ## 开发指南 ### 后端开发 #### 添加新的 API 端点 在 `backend/main.py` 中添加新的路由: ```python @app.get("/api/your-endpoint") async def your_endpoint() -> Dict[str, Any]: return {"message": "Your response"} ``` #### 修改 CORS 配置 在 `backend/main.py` 中修改 CORS 中间件: **开发环境配置:** ```python app.add_middleware( CORSMiddleware, allow_origins=["http://localhost:5173"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) ``` **生产环境配置:** ```python app.add_middleware( CORSMiddleware, allow_origins=["https://yourdomain.com"], allow_credentials=True, allow_methods=["GET", "POST", "PUT", "DELETE"], allow_headers=["*"], ) ``` **CORS 配置说明:** - `allow_origins`: 允许的源地址 - 开发环境:使用 `http://localhost:5173`(前端开发服务器) - 生产环境:应配置为实际的域名(如:`https://yourdomain.com`) - 如需允许多个域名,使用列表:`["https://example1.com", "https://example2.com"]` - **安全警告**:不要在生产环境使用 `["*"]`,这会允许任何源访问你的 API - `allow_credentials`: 是否允许携带 Cookie - `allow_methods`: 允许的 HTTP 方法(建议明确指定,而非使用 `["*"]`) - `allow_headers`: 允许的请求头 ### 前端开发 #### 添加新组件 在 `frontend/src/components/` 中创建新的 Vue 组件: ```vue ``` #### 添加新路由 在 `frontend/src/router/index.js` 中添加新路由: ```javascript { path: '/your-page', name: 'YourPage', component: () => import('../views/YourPage.vue') } ``` ### 代码规范 #### Python 代码 - 所有函数参数和返回值必须有类型注解 - 使用 Pydantic 进行数据验证 - 遵循 PEP 8 代码风格 #### Vue/JavaScript 代码 - 使用 Composition API(`