@axiijs/doc0

中文文档
1.0.0发布于 2026/07/21MITTypeScriptESM + CJS近 30 天下载 5862

High-performance rich text editor for the Axii ecosystem, powered by ProseMirror.

原始使用文档

doc0

Axii 体系下的高性能富文本编辑器,基于 ProseMirror(文档模型与编辑内核)+ Axii(响应式 UI 与自定义块渲染)。

  • 高性能:文本走 ProseMirror 原生渲染最快路径;自定义块组件只执行一次,更新是 attr 级 atom 的精确 DOM 写入,无重渲染、无 vdom diff。
  • 自定义块一等公民:defineBlock({ node: NodeSpec, component: AxiiComponent }) 即可注册新块,支持内容洞(可编辑子内容)与纯交互 widget。
  • 响应式镜像:editor.signals(doc / selection / canUndo …)是 data0 atom,工具栏等周边 UI 直接绑定即可。

完整规划与架构设计见 docs/plan.md。

快速开始

npm install
npm run dev        # 打开 playground
npm test           # 浏览器模式(Playwright chromium)运行测试
npm run typecheck  # tsc --noEmit
npm run build      # 构建库产物到 dist/

用法示例

/** @jsx createElement */
import { atom, RenderContext } from 'axii'
import { Doc0Editor, Editor, defineBlock, contentHole, BlockViewProps } from 'doc0'
import 'doc0/style.css'

// 一个带内容洞的自定义块
const Callout = defineBlock({
    name: 'callout',
    node: {
        group: 'block',
        content: 'paragraph+',
        attrs: { kind: { default: 'info' } },
    },
    component: function CalloutView({ attrs, updateAttrs }: BlockViewProps, { createElement }: RenderContext) {
        return (
            <div class={() => `callout callout-${attrs.kind()}`}>
                <button onClick={() => updateAttrs({ kind: attrs.kind() === 'info' ? 'warn' : 'info' })}>
                    {attrs.kind}
                </button>
                {contentHole()}
            </div>
        )
    },
})

function App({}, { createElement }: RenderContext) {
    const editor = new Doc0Editor({ blocks: [Callout] })  // 随组件自动销毁
    return (
        <div>
            <button onClick={() => editor.commands.undo()} disabled={() => !editor.signals.canUndo()}>Undo</button>
            <Editor editor={editor} />
        </div>
    )
}

版本与发布记录

@axiijs/doc0 共发布 1 个版本,首次发布于 2026/07/21;过去 12 个月发布了 1 个版本。

版本发布日期距今
1.0.0latest2026/07/213 个月前

关于 @axiijs/doc0 的常见问题

@axiijs/doc0 是什么?

High-performance rich text editor for the Axii ecosystem, powered by ProseMirror.

如何安装 @axiijs/doc0?

在项目目录运行 npm install @axiijs/doc0,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:axii(^4.6.0)、data0(^2.9.1)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@axiijs/doc0 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@axiijs/doc0 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@axiijs/doc0 可以商用吗?

@axiijs/doc0 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@axiijs/doc0 的下载量有多少?

根据 npm 官方下载统计,@axiijs/doc0 在 2026/10/08 – 2026/11/06 这 30 天内被下载 5,862 次,日均约 195 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@axiijs/doc0 还在维护吗?

最新版本 1.0.0 发布于 2026/07/21(3 个月前);至今共发布 1 个版本,其中过去 12 个月发布了 1 个;首次发布于 2026/07/21。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。