Hyoban

Hyoban

Don’t do what you should do, do you want.
x
github
telegram
follow
email

xLog SDK 的一些進展

為什麼我們需要 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)

你可以進行如下幾類操作:

  1. 獲取站點信息 client.site.getInfo
    1. 獲取站點統計信息 client.site.getStat
  2. 獲取博客信息
    1. 獲取全部博客 client.post.getAll
    2. 分頁獲取博客 client.post.getMany
    3. 獲取單個博客 client.post.get 或是 client.post.getBySlug
    4. 創建博客 client.post.put
    5. 更新博客 client.post.update
  3. 獲取評論信息、發送匿名評論
  4. 獲取 short,portfolio 信息

在這裡我無法介紹全部你可用的 API 和參數,你可以通過 TS 的類型來了解如何使用,後面我也會生成文檔。

我們用 SDK 能做什麼?#

sakuin 是從我的博客項目衍生出來的,所以很自然的我使用它來構建自己的博客,你可以對比它和原版 xLog 的訪問速度。此外,我按照自己的喜好重新實現了佈局和文章的渲染,我擁有了完全可控的自由度。對接 xLog 提供的匿名評論接口,我可以輕鬆的實現評論模塊。

評論界面截圖

VS Code plugin for xLog

VS Code xLog 插件,通過這個插件,你可以下載全部的博客文章到本地,在本地編輯或創建你的博客。你同樣也可以在 VS Code 中上傳本地文件或是遠端鏈接文件到 IPFS。

一些展望#

關於 xLog SDK 的後續,我大概能想到如下幾點:

  1. 進一步完善第三方與 xLog 進行交互所需要的 API,與 xLog 社區作者聯繫,為社區作者提供統一方便的開發體驗。
  2. 完整實現 xLog server 的能力,將項目轉到 Crossbell 組織下,甚至替換 xLog server 的目前實現。
  3. 為 SDK 提供 server API,使得我們可以不用通過 SDK 來進行交互。

關於利用 SDK 集成 xLog 的想法有:

  1. 集成 git commit hook,實現自動創建更新博客。

相信 xLog SDK 的出現能夠讓 xLog 更符合去中心化這個設定,有越來越多的人能真正的利用他們自己的數據,而不是只通過平台訪問。BTW,這篇博客就是我在 VS Code 中進行編寫,使用 xLog 插件發布的。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。