开源啦!无界Markdown在线阅读器
开源地址:项目首页 – markdown在线阅读器
在线体验:点我在线阅读Markdown文档
一个功能完整的在线Markdown文档阅读器,支持文档上传、在线阅读、分享链接、访问统计、导出功能和后台管理。
功能特色
🚀 核心功能
- 快速上传: 支持拖拽上传,无需注册登录,5MB以内的Markdown文件秒传
- 在线阅读: 优雅的阅读界面,支持代码高亮、目录导航
- 便捷分享: 生成唯一分享链接,支持访问统计
- 多格式导出: 支持导出为HTML格式
- 响应式设计: 完美适配各种设备
📊 管理功能
- 后台管理: 完整的文档管理界面
- 访问统计: 实时统计文档访问次数和时间
- 搜索排序: 支持文档搜索和多种排序方式
- 批量操作: 支持文档删除等管理操作
🎨 用户体验
- 主题切换: 支持明暗主题切换
- 阅读进度: 实时显示阅读进度
- 键盘快捷键: 丰富的快捷键支持
- 打印友好: 优化的打印样式
技术栈
后端
- Node.js + Express: 服务器框架
- Multer: 文件上传处理
- Marked: Markdown解析
- UUID: 唯一ID生成
- fs-extra: 文件系统操作
前端
- 原生HTML/CSS/JavaScript: 无框架依赖
- Highlight.js: 代码语法高亮
- 响应式设计: 适配各种设备
安装和运行
环境要求
- Node.js 14.0 或更高版本
- npm 或 yarn
安装步骤
- 克隆或下载项目
# 如果是从git克隆 git clone <repository-url> cd 无界markdown在线阅读器
- 安装依赖
npm install
- 启动服务器
# 生产环境 npm start # 开发环境(需要先安装nodemon) npm run dev
- 访问应用
使用说明
上传文档
- 访问主页 http://localhost:3000
- 拖拽或点击选择.md文件(最大5MB)
- 等待上传完成,获取分享链接
阅读文档
- 通过分享链接访问文档
- 使用目录导航快速跳转
- 支持主题切换和打印
管理文档
- 访问管理后台 http://localhost:3000/admin
- 查看所有文档和统计信息
- 支持搜索、排序、删除等操作
- 管理配置在config.json文件中,默认admin admin123
导出功能
- HTML导出: 点击导出按钮下载HTML文件
- 打印/PDF: 使用浏览器打印功能保存为PDF
API接口
文档上传
POST /api/upload
Content-Type: multipart/form-data
参数:
- markdown: 文件 (必需)
返回:
{
"success": true,
"shareId": "uuid",
"shareUrl": "完整分享链接",
"message": "文档上传成功"
}
获取文档内容
GET /api/document/:shareId
返回:
{
"id": "文档ID",
"title": "文档标题",
"content": "原始Markdown内容",
"htmlContent": "HTML内容",
"uploadTime": "上传时间"
}
获取文档列表
GET /api/documents
返回: 文档数组,包含统计信息
导出HTML
GET /api/export/html/:shareId
返回: HTML文件下载
删除文档
DELETE /api/document/:shareId
返回:
{
"success": true,
"message": "文档删除成功"
}
目录结构
无界markdown在线阅读器/
├── server.js # 主服务器文件
├── package.json # 项目配置
├── README.md # 说明文档
├── public/ # 前端静态文件
│ ├── index.html # 主页
│ ├── styles.css # 主页样式
│ ├── script.js # 主页脚本
│ ├── reader.html # 阅读器页面
│ ├── reader-styles.css # 阅读器样式
│ ├── reader-script.js # 阅读器脚本
│ ├── admin.html # 管理后台页面
│ ├── admin-styles.css # 管理后台样式
│ └── admin-script.js # 管理后台脚本
├── uploads/ # 上传文件存储目录
└── data/ # 数据文件目录
├── documents.json # 文档信息
└── stats.json # 访问统计
配置说明
环境变量
PORT
: 服务器端口(默认3000)
限制设置
- 文件大小限制: 5MB
- 文件类型限制: .md
- 上传频率限制: 15分钟内最多10个文件
安全特性
- 文件类型验证: 只允许.md文件
- 文件大小限制: 防止大文件攻击
- 速率限制: 防止频繁上传
- 路径安全: 防止路径遍历攻击
- 输入验证: 防止XSS攻击
浏览器兼容性
- Chrome 60+
- Firefox 55+
- Safari 12+
- Edge 79+
开发说明
开发环境设置
# 安装开发依赖
npm install --save-dev nodemon
# 启动开发服务器
npm run dev
代码规范
- 使用ES6+语法
- 遵循RESTful API设计
- 注重代码注释和文档
故障排除
常见问题
- 端口被占用
# 查看端口占用 netstat -ano | findstr :3000 # 或修改端口 set PORT=3001 && npm start
- 文件上传失败
- 检查文件格式是否为.md
- 检查文件大小是否超过5MB
- 检查uploads目录权限
- 数据丢失
- 检查data目录是否存在
- 检查JSON文件格式是否正确
许可证
MIT License
贡献
欢迎提交Issue和Pull Request来改进这个项目。
更新日志
v1.0.0
- 初始版本发布
- 支持Markdown文档上传和在线阅读
- 实现分享链接和访问统计
- 提供管理后台和导出功能