為什麼我們需要 xLog SDK?#
儘管我對於 xLog 的整體體驗十分滿意,但不得不說,相較於 Hexo、VitePress 這類靜態生成的站點,它的訪問速度還是有些慢。目前來說,我們沒有簡單的方式來自己部署 xLog 或是利用 xLog 的數據生成靜態站點。
xLog 允許我們方便地通過 CSS 自定義網站的外觀,但是當涉及到如何渲染頁面時,這樣的自定義程度就顯得有限了。在 如何優雅編譯一個 Markdown 文檔 一文中 diygod 介紹了 xLog 如何渲染 Markdown。但是你可能會不滿意代碼高亮的樣式,或是有支持高亮特定行的需求。有的時候,你可以通過給 xLog 提 PR 的方式來滿足你的需求,但不是所有的需求都適合 xLog 的每個用戶。如果我們能自己控制如何渲染 markdown 的話,就有了更多的自由度。
對於很多人來說,xLog 不是他們唯一的博客、筆記或發布日常的平台,可能有人習慣使用 VS Code 來編輯博客,有人喜歡 Obsidian。擁有一個 xLog SDK 的話,集成其它平台時,社區的作者就不需要每個人都去實現一遍 xLog server 的邏輯了。這些重複性的工作應當通過 SDK 來統一解決。
現在 SDK 具備的功能#
SDK for XLog
我發布了 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
- 獲取全部博客
- 獲取評論信息、發送匿名評論
- 獲取 short,portfolio 信息
在這裡我無法介紹全部你可用的 API 和參數,你可以通過 TS 的類型來了解如何使用,後面我也會生成文檔。
我們用 SDK 能做什麼?#
sakuin 是從我的博客項目衍生出來的,所以很自然的我使用它來構建自己的博客,你可以對比它和原版 xLog 的訪問速度。此外,我按照自己的喜好重新實現了佈局和文章的渲染,我擁有了完全可控的自由度。對接 xLog 提供的匿名評論接口,我可以輕鬆的實現評論模塊。
VS Code plugin for xLog
VS Code xLog 插件,通過這個插件,你可以下載全部的博客文章到本地,在本地編輯或創建你的博客。你同樣也可以在 VS Code 中上傳本地文件或是遠端鏈接文件到 IPFS。
一些展望#
關於 xLog SDK 的後續,我大概能想到如下幾點:
- 進一步完善第三方與 xLog 進行交互所需要的 API,與 xLog 社區作者聯繫,為社區作者提供統一方便的開發體驗。
- 完整實現 xLog server 的能力,將項目轉到 Crossbell 組織下,甚至替換 xLog server 的目前實現。
- 為 SDK 提供 server API,使得我們可以不用通過 SDK 來進行交互。
關於利用 SDK 集成 xLog 的想法有:
- 集成 git commit hook,實現自動創建更新博客。
相信 xLog SDK 的出現能夠讓 xLog 更符合去中心化這個設定,有越來越多的人能真正的利用他們自己的數據,而不是只通過平台訪問。BTW,這篇博客就是我在 VS Code 中進行編寫,使用 xLog 插件發布的。