继续提交

This commit is contained in:
2025-12-19 15:51:26 +08:00
parent 0ce60d78df
commit cf2203e3eb
500 changed files with 3259 additions and 7739 deletions

207
README.md
View File

@@ -1,29 +1,198 @@
# Markdown To Web
# 萌芽笔记 🌱
> 将本地 Markdown 笔记目录“一键”编译为可部署的静态 React 网站
一个优雅的 Markdown 笔记 Web 应用,支持实时预览和 GitHub 风格渲染
此仓库会读取 `public/mengyanote/` 下的所有 Markdown 文件,生成 JSON 数据,并在前端通过 React + react-markdown 渲染,最终可直接构建成 **纯静态站点**(可部署到 GitHub Pages / Netlify / Vercel / 任意 Nginx / OSS 等)。
> **🎉 v2.0 重要更新 (2025-12-19)**
> - ✅ 完全移除 localStorage 依赖,解决浏览器权限弹窗问题
> - ✅ 完美支持移动端浏览器微信、Safari iOS 等)
> - ✅ 隐私模式/无痕模式下正常工作
> - ✅ 添加错误边界和友好的错误提示
> - ✅ 优化网络请求,支持相对路径部署
> - 📖 详细说明请查看 [前端优化说明.md](前端优化说明.md)
本 README中文包含项目定位、特性说明、运行与构建、内部工作原理、目录结构、忽略与定制、部署方式、常见问题FAQ与未来计划Roadmap
## ✨ 特性
如需英文版本,请查看 `README.en.md`
- 📝 **Markdown 渲染**: 使用 `react-markdown` 提供强大的渲染能力
- 🎨 **GitHub 风格**: 标准的 GitHub Markdown 样式
- 🔤 **霞鹜文楷字体**: 全站使用 LXGW WenKai Mono 等宽字体
- 📂 **文件树导航**: 直观的侧边栏目录结构
- 🚀 **快速响应**: FastAPI 后端 + React 前端
- 💡 **代码高亮**: 支持多种编程语言的语法高亮
- 🧮 **数学公式**: KaTeX 数学公式渲染支持
- 📱 **响应式设计**: 完美适配桌面和移动设备
- 🌐 **跨浏览器兼容**: 支持所有主流浏览器和移动端
- 🔒 **隐私模式支持**: 在隐私/无痕模式下正常工作
## ✨ 主要特性
## 🛠 技术栈
- 🚀 **一键生成数据**:脚本自动递归扫描 `public/mengyanote`,提取目录树、文件内容与统计信息。
- 📦 **纯静态输出**:构建阶段就准备好全部数据,无需后端 / Serverless API。
- 🧭 **动态目录树**:可展开/折叠,每个节点保留唯一 `path``id`
- 📝 **Markdown 全面支持**GFM表格 / 任务列表 / 删除线、换行、数学公式KaTeX、代码块高亮Highlight.js
- 🧮 **数学公式渲染**`remark-math` + `rehype-katex`
- 💡 **代码体验增强**:复制按钮、语言标签、自动高亮。
- 📚 **面包屑导航**:基于文件路径实时生成。
- 🧱 **可定制渲染组件**:可移除/替换任意 remark/rehype 插件,或覆写组件(如链接、图片、表格、代码块)。
- 🕶 **深色风格**可自定义CSS 易修改,可换成“极简/原味/图片优先”布局。
- 🔍 **预生成数据多路径兜底**:前端运行时尝试从 `/data``/src/data` 加载,兼容不同构建/部署结构。
- 🧯 **忽略机制**:支持 `ignore.json` 自定义排除目录 / 文件。
- 📊 **统计信息**:生成文件总数、文件夹总数、生成时间等元数据。
### 后端
- **Python 3.8+**
- **FastAPI** - 现代、快速的 Web 框架
- **Uvicorn** - ASGI 服务器
### 前端
- **React 19** - 用户界面库
- **Vite 7** - 极速构建工具
- **react-markdown** - Markdown 渲染
- **github-markdown-css** - GitHub 风格样式
- **rehype/remark 插件** - 扩展 Markdown 功能
- GFM (GitHub Flavored Markdown)
- 代码高亮 (highlight.js)
- 数学公式 (KaTeX)
- HTML 支持
## 🚀 快速开始
### 方式一使用批处理脚本Windows推荐
#### 启动后端
双击运行 `启动后端.bat`
#### 启动前端
双击运行 `启动前端.bat`
### 方式二:手动启动
#### 1. 启动后端服务
```bash
# 进入后端目录
cd mengyanote-backend
# 安装依赖(首次运行)
pip install -r requirements.txt
# 启动服务
python main.py
```
后端将在 `http://localhost:8000` 运行
#### 2. 启动前端服务
```bash
# 进入前端目录
cd mengyanote-frontend
# 安装依赖(首次运行)
npm install
# 启动开发服务器
npm run dev
```
前端将在 `http://localhost:5173` 运行
## 📁 项目结构
```
mengyanote/
├── mengyanote-backend/ # 后端服务
│ ├── main.py # FastAPI 应用入口
│ ├── requirements.txt # Python 依赖
│ └── mengyanote/ # Markdown 文件存储目录
│ ├── 编程语言/
│ ├── 计算机科普/
│ ├── 计算机网络/
│ └── ...
├── mengyanote-frontend/ # 前端应用
│ ├── src/
│ │ ├── components/ # React 组件
│ │ │ ├── Sidebar.jsx # 侧边栏组件
│ │ │ ├── MarkdownRenderer.jsx # Markdown 渲染器
│ │ │ └── ...
│ │ ├── context/ # React Context
│ │ ├── utils/ # 工具函数
│ │ ├── App.jsx # 主应用组件
│ │ └── main.jsx # 应用入口
│ ├── public/ # 静态资源
│ │ └── LXGWWenKaiMono-Medium.ttf # 字体文件
│ ├── package.json # 前端依赖
│ └── vite.config.js # Vite 配置
├── 启动后端.bat # 后端启动脚本
├── 启动前端.bat # 前端启动脚本
├── 启动说明.md # 详细启动说明
└── README.md # 项目说明
```
## 🎯 功能说明
### 后端 API
- `GET /api/tree` - 获取文件树结构
- `GET /api/file?path={path}` - 获取指定文件内容
- `GET /api/health` - 健康检查
- `GET /docs` - API 文档Swagger UI
### 前端功能
- **文件导航**: 点击左侧文件树浏览笔记
- **Markdown 渲染**: 自动渲染 GitHub 风格的 Markdown
- **代码高亮**: 自动识别并高亮代码块
- **数学公式**: 支持行内和块级数学公式
- **图片支持**: 点击图片可放大查看
- **外链处理**: 外部链接自动在新标签页打开
## 🎨 字体配置
项目使用 **霞鹜文楷等宽体 (LXGW WenKai Mono)** 作为全站字体。
字体文件位置:`mengyanote-frontend/public/LXGWWenKaiMono-Medium.ttf`
如果字体文件缺失,系统会自动回退到默认字体。
## 🔧 环境变量
### 前端环境变量(可选)
`mengyanote-frontend` 目录创建 `.env` 文件:
```env
VITE_API_BASE=http://localhost:8000
```
## 📦 构建生产版本
### 前端构建
```bash
cd mengyanote-frontend
npm run build
```
构建产物在 `dist` 目录,可部署到任何静态托管服务。
## 🐛 故障排除
### 前端无法连接后端
1. 确认后端服务正在运行(访问 http://localhost:8000/api/health
2. 检查浏览器控制台的网络请求错误
3. 确认后端端口为 8000
### 字体未加载
1. 确认 `LXGWWenKaiMono-Medium.ttf` 存在于 `public` 目录
2. 检查浏览器开发者工具的网络面板
3. 清除浏览器缓存重试
### Markdown 渲染异常
1. 检查文件编码是否为 UTF-8
2. 查看浏览器控制台错误信息
3. 确认 react-markdown 相关依赖已正确安装
## 📝 开发建议
1. **IDE**: 推荐使用 VS Code
2. **代码规范**: 前端使用 ESLint 进行代码检查
3. **热重载**: 后端和前端都支持热重载,修改代码自动刷新
4. **调试**: 使用 Chrome DevTools 进行前端调试
---
**Made with ❤️ by 树萌芽**
> 该项目适合:知识库发布、学习笔记归档、团队内部静态文档、离线备份网页化。
## 🛠 技术栈