Skip to content

Pingocanvas 繪製引擎

Rust/WASM 核心 + TypeScript 外殼 + 可插拔後端。為高效能互動、原生虛擬捲動與 canvas 內文字編輯而設計。

PingoPingo

30 秒上手

sh
pnpm add @dopejs/pingo
ts
import { createElement, createHostedCanvasRoot } from "@dopejs/pingo";

const root = await createHostedCanvasRoot(document.querySelector("canvas")!);

root.render(
  createElement("virtualList", {
    width: 480,
    height: 640,
    itemCount: 1_000_000,
    estimatedItemHeight: 32,
    renderItem: (index) => createElement("text", { value: `第 ${index} 列` }),
  }),
);

一百萬列不會在 Shell 側具現化,捲動過程也不回呼元件樹——視窗計算與補建都發生在 Core 內。

它不做什麼

doper 是繪製引擎,不是瀏覽器。不做 SSR/HTML 首屏、通用 CSS 相容(盒模型、層疊、選擇器)、 小程式或原生轉接層,也不做業務級富文字語意(協作、公式、Markdown 指令)。

引擎確實擁有 caret、選取範圍、IME、剪貼簿、復原重做與可編輯文字原語——這些不會被推回業務層用 DOM 控制項拼湊。

目前狀態

v0.1.0,P0–M5 全部工程里程碑完成,pnpm m5:check 全鏈自動門檻通過。

實機效能、真實輸入法與螢幕閱讀器矩陣屬於平台資格採集,單獨追蹤; bidi 視覺導覽與 WebGPU 後端預設啟用是已記錄的延後項

工程文件語言

技術設計、實施計畫與 ADR 目前僅提供簡體中文版本,各語言站台皆連結至同一份文件。

以 MIT 授權發佈