项目

tiptap 使用唯一标识符命名文档

本指南介绍了最佳实践,用于命名文档并组织单个文档内的内容,帮助您定义自己的文档结构。对于全面了解如何选择文档名称,建议查看我们的 授权指南 ,因为文档命名在访问控制中也起着关键作用。

文档命名结构

Tiptap 合作使用文档名称来促进协作会话,它们作为唯一标识符,将用户链接到同一文档。理论上,它可以是任何字符串。

以下示例使用实体名称和唯一 ID 的组合,这通常适用于内容管理系统(CMS)应用,但您可以根据应用需求自由采用任何命名约定。

新文档会在需要时自动创建,只需提供一个字符串标识符给提供商即可。

const documentName = "article.123";

这种命名格式使您能够轻松地分开关键细节:

const documentName = "article.123";

// 将文档名称分割成单独的部分
const [entityType, entityID] = documentName.split(".");

console.log(entityType); // 输出:"article"
console.log(entityID); // 输出:"123"

使用片段管理嵌套文档

Yjs 的片段非常适合处理具有不同部分的复杂文档。例如,如果您想将博客文章分为独立的 titlecontent 部分,这可能会很有用。

通过片段,您可以使用一个 Y.Doc 实例(即一个文档),为其中的不同部分使用不同的编辑器。

例如,在这个博客文章设置中:

const ydoc = new Y.Doc();

// 标题编辑器
const titleEditor = new Editor({
  extensions: [
    Collaboration.configure({
      document: this.ydoc,
      field: "title",
    }),
  ],
});

// 内容编辑器
const bodyEditor = new Editor({
  extensions: [
    Collaboration.configure({
      document: this.ydoc,
      field: "content",
    }),
  ],
});

对于嵌套片段的复杂设置,可以直接使用原始的 Y.js 片段,跳过 documentfield 设置。

// 原始的 Y.js 片段
Collaboration.configure({
  fragment: ydoc.getXmlFragment("custom"),
});

要深入了解 Tiptap 合作中文档命名如何影响访问控制,请务必查阅我们的 授权指南

在本文档中