尽管我对于 xLog 的整体体验十分满意,但不得不说,相比于 Hexo、VitePress 之类静态生成的站点,它的访问速度还是有些慢。目前来说,我们没有简单的方式来自己部署 xLog 或是利用 xLog 的数据生成静态站点。
xLog 允许我们方便地通过 CSS 自定义网站的外观,但是当涉及到如何渲染页面时,这样的自定义程度就显得有限了。在 如何优雅编译一个 Markdown 文档 一文中 diygod 介绍了 xLog 如何渲染 Markdown。但是你可能会不满意代码高亮的样式,或是有支持高亮特定行的需求。有的时候,你可以通过给 xLog 提 PR 的方式来满足你的需求,但不是所有的需求都适合 xLog 的每个用户。如果我们能自己控制如何渲染 markdown 的话,就有了更多的自由度。
对于很多人来说,xLog 不是他们唯一的博客、笔记或发布日常的平台,可能有人习惯使用 VS Code 来编辑博客,有人喜欢 Obsidian。拥有一个 xLog SDK 的话,集成其它平台时,社区的作者就不需要每个人都去实现一遍 xLog server 的逻辑了。这些重复性的工作应当通过 SDK 来统一解决。
https://github.com/hyoban/sakuin
我发布了 sakuin 0.1.0 版本,你可以通过 npm 安装:
ni sakuin
从 sakuin 导入 Client
并使用,它基于 crossbell.js
。一般来说,你需要传递 handle
来获取特定站点的数据,它是你的 xLog 子域名。
import { Client } from "sakuin"
const client = new Client()
const site = = await client.site.getInfo(HANDLE)
你可以进行如下几类操作:
client.site.getInfo
client.site.getStat
client.post.getAll
client.post.getMany
client.post.get
或是 client.post.getBySlug
client.post.put
client.post.update
在这里我无法介绍全部你可用的 API 和参数,你可以通过 TS 的类型来了解如何使用,后面我也会生成文档。
sakuin 是从我的博客项目衍生出来的,所以很自然的我使用它来构建自己的博客,你可以对比它和原版 xLog 的访问速度。此外,我按照自己的喜好重新实现了布局和文章的渲染,我拥有了完全可控的自由度。对接 xLog 提供的匿名评论接口,我可以轻松的实现评论模块。
https://github.com/hyoban/vscode-xlog
VS Code xLog 插件,通过这个插件,你可以下载全部的博客文章到本地,在本地编辑或创建你的博客。你同样也可以在 VS Code 中上传本地文件或是远端链接文件到 IPFS。
关于 xLog SDK 的后续,我大概能想到如下几点:
关于利用 SDK 集成 xLog 的想法有:
相信 xLog SDK 的出现能够让 xLog 更符合去中心化这个设定,有越来越多的人能真正的利用他们自己的数据,而不是只通过平台访问。BTW,这篇博客就是我在 VS Code 中进行编写,使用 xLog 插件发布的。