Plate:Star12.4k,太逆天啦,几乎任何场景能都用到,轻量化、简单、易用的Ai富文本编辑框开源框架,还在等什么?

2,186 阅读5分钟

嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法

Plate 是一个强大的工具包,它让开发者能够更容易地使用 Slate 框架开发文本编辑器。Plate 专注于四个主要领域:核心(Core) 插件(Plugins) 原语(Primitives)组件(Components)

架构与生态

核心(Core)

Plate 的核心是其插件系统,为 slateslate-react 设计,支持服务器端渲染。它通过分离不同的功能并保持整洁来帮助您的项目组织和高效。核心功能以纯 JavaScript 形式提供,允许服务器端渲染和非 React 使用。

插件(Plugins)

Plate 提供了广泛的插件包,增强了编辑器的行为、钩子、序列化、规范化等功能。这些插件是“无头”的,意味着它们默认没有样式。插件系统包括:

  • 状态管理:每个插件都有自己的 Zustand 存储。
  • 快捷方式:为每个插件定义自定义热键。
  • API 和转换:插件可以定义自己的 API 方法和转换,可通过 editor.apieditor.transforms 访问。
  • TypeScript:为插件和编辑器提供强大的类型推断。

原语(Primitives)

除了插件外,Plate 还提供了基于 Radix UI 的无样式和可访问组件。这些组件构成了构建高质量设计系统的基础。

组件(Components)

为了帮助您快速开始创建视觉上吸引人的界面,Plate 提供了预构建的样式化组件,您可以使用我们的 CLI 自定义这些组件。这些基于 shadcn/ui 的组件可以作为您自己的组件库的参考或起点,使您能够创建独特、可访问且视觉上令人愉悦的用户界面。

插件列表

示例

Plate 提供了许多示例,帮助您快速了解如何使用 Plate 构建各种功能。这些示例包括:

功能和特点

插件概览

Plate 提供了多种插件,包括 AI、对齐、自动格式化、基本元素、块菜单等。每个插件都旨在解决特定的编辑器需求,同时保持高度的可定制性和扩展性。

示例

Plate 提供了丰富的示例,包括 Slate 到 HTML 的转换、导出、服务器端渲染、版本历史等。这些示例可以帮助您快速理解如何使用 Plate 构建复杂的编辑器功能。

API

Plate 的 API 覆盖了从核心组件到 Slate 工具的广泛功能。它包括 Plate 通用、Plate 核心、Plate 控制器、Plate 编辑器、Plate 插件、存储、Plate 工具、Slate、Slate React、Slate 工具、React 工具等。

如何使用

创建项目

你可以选择以下模板之一来开始:

增加依赖

首先,安装核心依赖:

npm install @udecode/plate-common slate slate-dom slate-react slate-history

对于本指南中的示例,我们还将使用这些插件:

npm install @udecode/plate-basic-marks @udecode/plate-heading @udecode/plate-block-quote @udecode/cn

@udecode/plate-basic-marks 提供粗体、斜体、下划线和代码格式化功能。
@udecode/plate-heading 添加 h1-h6 标题支持。
@udecode/plate-block-quote 添加引用块支持。
@udecode/cn 帮助组件样式设置(可选)。

基本编辑器

让我们从一个最小的编辑器设置开始。

import {
  usePlateEditor,
  Plate,
  PlateContent,
} from '@udecode/plate-common/react';
 
export default function BasicEditor() {
  const editor = usePlateEditor();
 
  return (
    <Plate editor={editor}>
      <PlateContent placeholder="Type..." />
    </Plate>
  );
}

Plate 管理编辑器状态,PlateContent 渲染编辑器内容。

界面效果

应用场景

Plate适用于需要富文本编辑功能的各类应用,如下:

  • 博客系统
  • 论坛社区
  • 在线教育
  • 内容管理系统(CMS)

同类项目比较

与其他富文本编辑器相比,Plate具有以下优势:

  • 插件系统:丰富的插件,易于扩展和定制。
  • 类型安全:基于TypeScript,提供强大的类型推断。
  • 可访问性:基于Radix UI,提供未样式化和可访问的组件。
  • 响应式设计:支持移动端和桌面端设备。

以下是几个同类项目的简介:

  • Draft.js:Facebook开发的富文本编辑器库,具有良好的性能和可扩展性。
  • Quill:一个具有跨平台和跨浏览器支持的富文本编辑器。
  • TinyMCE:一个功能丰富的富文本编辑器,适用于各种浏览器和设备。

结语

Plate 是一个为 React 设计的强大富文本编辑器框架,它通过其插件系统、无头组件和现代化的 API,为开发者提供了构建丰富文本编辑器的强有力工具。无论您是在寻找一个可定制的编辑器解决方案,还是希望构建一个全新的编辑器体验,Plate 都是一个值得考虑的选择。

项目地址

https://github.com/udecode/plate