SmallDocs(SDocs)

6个月前发布 190 00

SDocs 是一个轻量级、无状态的 Markdown 编辑器,支持实时样式定制。你的整个文档都保存在 URL 哈希中——永远不会发送到服务器。

所在地:
美国
收录时间:
2026-04-19
其他站点:
SmallDocs(SDocs)SmallDocs(SDocs)

SDocs 是一款极简主义、注重隐私的 Markdown 文档处理工具。它允许你阅读、美化并以完全私密的方式分享 Markdown 文件。其核心创新在于:所有文档内容都经过压缩并编码在 URL 的哈希片段(Hash Fragment)中,这意味着数据永远不会发送到服务器,实现了真正的“无状态”和“零信任”分享。

SmallDocs(SDocs)

核心亮点

1. 极致隐私与安全

  • 零服务器存储:文档内容仅存在于客户端浏览器和 URL 链接中。服务器仅提供静态 HTML/JS 文件,不接收、不存储、不记录任何文档内容。
  • 哈希片段机制:利用浏览器特性,URL # 后面的内容不会发送给服务器。即使你使用公共托管实例,你的文档内容对托管者也是不可见的。

2. 实时美化与定制

  • 可视化编辑:提供直观的控制面板,可实时调整字体、颜色、字号、行高和间距。
  • YAML Front Matter 支持:样式配置可以直接写入 Markdown 文件的头部(styles: 键),实现文档与样式的绑定。
  • 主题切换:支持浅色/深色模式,并可保存偏好。

3. 无缝分享

  • 链接即文档:分享一个链接,对方打开即可看到渲染好且带有样式的文档,无需安装任何软件或注册账户。
  • 深度链接:支持直接链接到文档的特定章节(Header)。

4. 多格式导出

  • 支持导出为 PDF, Word (.docx), 原始 .md 或 带样式 Front Matter 的 .md。

快速开始 (CLI)

SDocs 提供了强大的命令行工具,方便开发者集成到工作流中。

安装

npm i -g sdocs-dev

常用命令

# 1. 在浏览器中打开并美化本地文件
sdoc README.md

# 2. 生成分享链接并复制到剪贴板
sdoc share report.md

# 3. 生成深色模式的分享链接
sdoc share report.md --dark

# 4. 生成指向特定章节的深度链接
sdoc share report.md --section "Results"

# 5. 创建新的空白文档(写入模式)
sdoc new

# 6. 通过管道传输内容(适合配合其他 CLI 工具使用)
cat notes.md | sdoc

# 7. 查看所有可用的样式属性 schema
sdoc schema

技术原理

SDocs 的工作流程极其精简且高效:

  1. 压缩:使用 brotli-wasm(WebAssembly)在浏览器端对 Markdown 内容进行高强度的 Brotli 压缩。
  2. 编码:将压缩后的二进制数据转换为 Base64URL 格式。
  3. 嵌入:将编码后的字符串附加到 URL 的哈希部分:
    https://sdocs.dev/#md={brotli_compressed_base64url_string}
    
  4. 解析:当用户打开链接时,前端 JS 从哈希中提取数据,解压并渲染为 HTML。

注意:由于 URL 长度限制(通常浏览器支持 2KB-32KB 不等,取决于具体实现),SDocs 适合分享中小型文档。对于超大文件,建议直接使用本地文件或私有部署。

技术栈与设计哲学

  • 极简主义:无构建步骤,无重型框架(React/Vue等)。
  • 纯原生:前端使用纯 HTML, CSS, JS。
  • 最小依赖:运行时仅依赖 marked (Markdown 解析器) 和 brotli-wasm。
  • 简单服务器:后端仅是一个几行的 Node.js http 模块,用于提供静态文件。
  • 测试驱动:使用自定义测试框架 + Playwright 确保稳定性。

应用场景

  • 即时分享代码片段或文档:无需搭建 Wiki,无需发送文件,一个链接搞定。
  • 隐私敏感的笔记分享:确保中间人无法窥探内容。
  • 静态博客辅助:快速预览 Markdown 文件的渲染效果。
  • CLI 工作流集成:配合 git diff 或其他工具,快速查看格式化后的文本差异。

部署与自托管

你可以直接使用官方托管实例 sdocs.dev,也可以轻松自托管:

git clone https://github.com/sdocs-dev/sdocs.git
cd sdocs
node server.js

自托管实例同样遵循隐私原则,除非你主动添加分析代码,否则不会回传任何数据。

相关导航