命名和结构化你的协作文档
Collaboration
本指南概述了命名文档和组织单一文档内容的最佳实践,以帮助您定义自己的文档结构。
要全面了解如何选择文档名称,您应该查看我们的 授权指南,因为文档命名在访问控制中也发挥着关键作用。
结构化文档名称
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 的片段非常适合处理具有不同部分的复杂文档。如果您想要嵌套文档,例如一个具有单独 title 和 content 部分的博客文章,则可能相关。
使用片段,您可以使用一个 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 片段,绕过 document 和 field 设置。
// 一个原始的 Y.js 片段
Collaboration.configure({
fragment: ydoc.getXmlFragment('custom'),
})要完全理解文档命名如何影响 Tiptap 协作中的访问控制,查阅我们的 授权指南 是必不可少的。