Wordgard: 由 ProseMirror 創作者開發的新型語義富文本編輯器

Wordgard: 由 ProseMirror 創作者開發的新型語義富文本編輯器

Wordgard 是一個開源的 JavaScript 函式庫,旨在構建結構化的瀏覽器內富文本編輯器。由 ProseMirror 的作者 Marijn Haverbeke 所開發,Wordgard 提供了一個框架,讓開發者可以透過 schema 精確控制文件結構,而不是提供一個自由形式的 HTML 編輯器。

核心架構與功能

Wordgard 被構建為一個語義編輯系統,這意味著它優先考慮內容的結構而非原始的 HTML 表示。這種方法允許開發者創建自定義編輯器,並保持嚴格的文件完整性。

基於 Schema 的文件控制

Wordgard 使用 schema 來定義文件的確切結構。這允許開發者創建自定義文件元素,並確保內容符合特定格式,從而防止自由形式編輯器中常見的任意嵌套或無效 HTML。

多功能程式介面

該函式庫具有作者所描述的「Deluxe API」,旨在實現通用性與多功能性。此 API 旨在作為複雜、高需求編輯器的基礎,這些編輯器需要超出標準開箱即用功能的深度自定義。

模組化擴充系統

大多數編輯器功能都是以擴充功能的形式實現的。這種模組化允許開發者在預設實作不符合其需求時,替換或修改特定行為。

進階內容支援

Wordgard 包含對幾種複雜編輯需求的原生支援:

  • 協作編輯:系統支援多個使用者同時編輯同一個文件,並具備合併併發編輯的機制。
  • 結構化內容:編輯器可以處理表格、嵌套列表、帶標題的圖表以及其他自定義結構。
  • 從右至左 (RTL) 支援:該函式庫對於介面和內容都具備方向感知能力,支援雙向文本和 RTL 文件。
  • 無障礙性:編輯器旨在為僅使用鍵盤的使用者、螢幕閱讀器使用者以及行動裝置使用者提供支援,包括對 UI 國際化支援。

技術哲學

Wordgard 使用函數式編程風格進行開發,以提高清晰度和可測試性。它在 MIT 授權下發布,並託管在 code.haverbeke.berlin 的自託管實例上,而非 GitHub。

社群討論與觀點

社群回饋突顯了從 ProseMirror 轉向 Wordgard 時的興奮與擔憂。

ProseMirror 的轉型

由於 ProseMirror 是許多主要 Web 應用程式(包括 ChatGPT 和 Gemini)的基礎工具,因此對於其未來的開發存在重大擔憂。使用者注意到 Wordgard 看起來是 ProseMirror 概念的演進,但沒有直接的升級路徑,這意味著切換需要大量的手動工作。

與其他編輯器的比較

開發者質疑 Wordgard 與 Meta 的 Lexical 等其他業界標準的比較。一些使用者表達了希望與文件靜態類型表示法進行更好的整合,這是一個先前在 ProseMirror 中遇到的痛點,即開發者通常必須定義兩次 schema(一次用於編輯器,一次用於像 Zod 這樣的驗證函式庫)。

使用者體驗與設計

雖然技術 API 受到讚賞,但一些早期測試者報告了「Try」演示版中的微小錯誤,例如 Android Chrome 上的 Undo 功能問題以及 iOS 上的鍵盤替換故障。此外,網站的視覺設計和 Kamila Stankiewicz 創作的自定義藝術圖案受到了社群的廣泛讚賞,其美學吸引力非常出色。

Sources