开源啦!无界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

安装步骤

  1. 克隆或下载项目
    # 如果是从git克隆
    git clone <repository-url>
    cd 无界markdown在线阅读器
    
  2. 安装依赖
    npm install
    
  3. 启动服务器
    # 生产环境
    npm start
    
    # 开发环境(需要先安装nodemon)
    npm run dev
    
  4. 访问应用

使用说明

上传文档

  1. 访问主页 http://localhost:3000
  2. 拖拽或点击选择.md文件(最大5MB)
  3. 等待上传完成,获取分享链接

阅读文档

  1. 通过分享链接访问文档
  2. 使用目录导航快速跳转
  3. 支持主题切换和打印

管理文档

  1. 访问管理后台 http://localhost:3000/admin
  2. 查看所有文档和统计信息
  3. 支持搜索、排序、删除等操作
  4. 管理配置在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设计
  • 注重代码注释和文档

故障排除

常见问题

  1. 端口被占用
    # 查看端口占用
    netstat -ano | findstr :3000
    # 或修改端口
    set PORT=3001 && npm start
    
  2. 文件上传失败
    • 检查文件格式是否为.md
    • 检查文件大小是否超过5MB
    • 检查uploads目录权限
  3. 数据丢失
    • 检查data目录是否存在
    • 检查JSON文件格式是否正确

许可证

MIT License

贡献

欢迎提交Issue和Pull Request来改进这个项目。

更新日志

v1.0.0

  • 初始版本发布
  • 支持Markdown文档上传和在线阅读
  • 实现分享链接和访问统计
  • 提供管理后台和导出功能
欢迎转载,请尊重作者劳动成果,保留原站链接
老念博客🌈 » 开源啦!无界Markdown在线阅读器

简单课程表 - 小念的个人博客