从 CKEditor 4 迁移
本节文档解释了如何迁移到 CKEditor 5。
CKEditor 4 已于 2023 年 6 月 达到使用寿命 (EOL),不再提供未来的更新、错误修复和安全补丁。了解如何迁移到 CKEditor 5 此处。
如果您尚未准备好迁移,我们提供 扩展支持模型包,可防范安全漏洞和第三方 API 更改。
请联系我们的销售团队以获取 更多详细信息。
与前身相比,您应该将 CKEditor 5 视为 一个全新的编辑器。我们重新设计了它的每一个方面 - 从安装到集成,从功能到数据模型,最后到它的 API。
没有自动迁移解决方案。本节总结了在您继续迁移到 CKEditor 5 之前需要考虑的最重要方面。
# CKEditor 4 和 CKEditor 5 之间的区别
最能体现 CKEditor 5 与其前身区别的是其核心架构。CKEditor 5 是一个高度灵活且可扩展的编辑框架,具有强大的 API。您可以使用它创建任何所见即所得编辑器实现,从轻量级聊天到复杂的类似 Google 文档的解决方案。CKEditor 5 还支持协作,并提供实时协作、评论或更改跟踪等功能。
以下是两个编辑器版本之间的主要区别
CKEditor 4 | CKEditor 5 | |
编程语言 | JavaScript | TypeScript |
数据模型 | HTML/DOM | 自定义数据模型和虚拟 DOM 实现 |
架构 | 基于插件 | 基于插件,MVC |
编辑器类型 | 经典,内联 | 经典,内联,解耦(文档),气球,气球块,多根 |
支持协作 | ❌ | ✅ |
文件管理和图像上传 | CKFinder,Easy Image | CKBox,CKFinder,Easy Image |
UI | 工具栏、对话框和通过右键单击上下文菜单操作的功能 | 工具栏、下拉菜单、气球和通过单击功能工具栏操作的功能 |
UI 自定义 | 皮肤,UI 颜色更改 | 主题,使用 CSS 变量进行自定义 |
许可证 | GPL,MPL,LGPL,商业许可证 | GPL 2+ 或商业许可证 |
# CKEditor 4 和 CKEditor 5 的功能比较
数字内容编辑范式在 CKEditor 4 的时代和现在已经发生了很大变化。我们从头开始设计和构建了 CKEditor 5,考虑了现代 Web 应用程序的可能性、当前 Web 标准以及当今用户的需求。
这种新方法影响了 可用功能集、功能的实现方式以及为其提供的配置选项。为了更轻松地比较两个编辑器版本,我们创建了以下兼容性表
您可以使用它们来检查 CKEditor 5 中 CKEditor 4 中某些功能或配置选项的等效项。如果没有直接等效项,这些表格将为您指明 CKEditor 5 中推荐的解决方案。我们强烈建议您将迁移到 CKEditor 5 视为一个现代化应用程序并重新思考您的编辑解决方案的机会。
# 迁移之前
CKEditor 4 和 CKEditor 5 是两种不同的产品。以下是迁移之前需要考虑的最重要方面。
# 迁移现有数据
CKEditor 4 和 CKEditor 5 之间的引擎和架构差异会影响内容在 HTML 中的处理和表示方式。CKEditor 5 会调整和转换数据以使其与支持的功能保持一致,因此在迁移过程中可能会发生数据表示更改。与 CKEditor 5 中启用的功能不兼容的内容可能会丢失,因此请确保您完整阅读本迁移指南。
对现有数据执行广泛的分析、数据验证和测试。如有必要,您需要开发转换程序以避免数据丢失。您可以使用 通用 HTML 支持 功能引入传统内容中存在的但 CKEditor 5 功能尚未完全涵盖的 HTML 标记。
《插件和 HTML 输出》文章列出了所有官方 CKEditor 5 插件及其产生的 HTML 输出。您可以使用它来检查传统数据与 CKEditor 5 中支持的数据的兼容性。
将 CKEditor 5 采用到现有系统中的一个简单而有效的策略可能是使用 CKEditor 5 创建新内容,使用旧编辑器编辑传统内容。
# 安装和集成
CKEditor 5 的第一个变化是其安装过程。随着模块化模式、UMD、npm 等的引入,它变得更加现代。请参阅 入门 部分以探索所有可用的安装和集成选项。
用于将 CKEditor 与您的页面集成的 API 也发生了变化。查看 编辑器生命周期 和 获取和设置数据 文章以了解有关此主题的介绍。
# 自定义插件
您为 CKEditor 4 开发的任何自定义插件都与 CKEditor 5 不兼容。虽然它们的理念可能保持不变,但它们的实现肯定会有所不同,需要从头开始重写。
第三方插件也可能适用。它们可能尚未移植到 CKEditor 5。
查看 创建插件 部分以获取有关插件开发的更多信息。
# 自定义主题(皮肤)
在 CKEditor 5 中,早期的“皮肤”概念经过了重新审视,现在称为“主题”。
如果您有 CKEditor 4 的自定义皮肤,则需要为 CKEditor 5 重新创建它们。幸运的是,CKEditor 5 中的自定义主题化比以前更强大也更简单。
新增功能:您可以将 CKEditor 5 作为 与外部 UI 集成的无头编辑器,例如,在 React 中创建。许多项目使用 CKEditor 5 的强大编辑引擎与自定义 UI 相结合,以实现与其应用程序的无缝集成。
有关更多信息,请查看如何在 CKEditor 5 框架文档中 自定义主题。
# 图像上传
CKEditor 5 支持几种不同的图像上传策略。查看 全面的“图像上传”指南,以找到最适合您项目的选项。
# 许可证
CKEditor 4 在 GPL、LGPL 和 MPL 开源许可证下获得许可。
CKEditor 5 仅在 GPL2+ 开源许可证下获得许可。如果您正在 OSI 批准的与 GPL 不兼容的许可证下运行开源项目,我们很乐意 提供免费许可证支持。如果您的项目是商业项目,您需要 获取商业许可证。
# 推荐的迁移策略
您可以按照以下步骤从 CKEditor 4 迁移到 CKEditor 5
- 备份所有数据。
- 了解 CKEditor 5。查看 演示,了解其 架构,并查看 可用功能 和 集成方法。
- 使用 构建器 创建一个包含您所需所有插件的自定义预设。
- 测试将 CKEditor 4 中创建的现有内容加载到 CKEditor 5 中。调整编辑器配置和插件集。如有必要,通过 通用 HTML 支持 功能启用缺失的元素、类或属性。
- 当您确定不会丢失任何数据时,您可以通过更改集成方法、创建自定义插件、调整主题和启用新功能来进一步自定义 CKEditor 5 预设。
CKEditor 5 是一个出色的现代编辑框架,因此迁移是一个提升内容编辑体验的绝佳机会。具有实时协作编辑、评论和更改跟踪的 协作、修订历史记录、自动格式化、从 Word 导入、导出为 PDF 和 Word、字数和字符数 以及 CKBox 文件管理器只是 CKEditor 4 中没有提供的新功能的几个示例。试试看!
# 支持
如果您缺少任何特定功能或设置,请随时 报告问题。首先搜索 存储库中的问题部分。您正在寻找的功能可能已经报告过 - 您可以通过 👍 为其点赞来支持它。尽可能准确地解释具体的用例、使用编辑器的环境以及预期行为。
《从 CKEditor 4 迁移的故障排除》文章解答了有关迁移的一些常见问题。
如果您想了解更多关于许可证或 扩展支持模型 的信息,请联系 支持团队。
我们每天都在努力确保我们的文档完整。您是否发现过时信息? 是否缺少某些内容? 请通过我们的 问题跟踪器 报告。
随着 42.0.0 版本的发布,我们已经重写了大部分文档以反映新的导入路径和功能。 我们感谢您的反馈,以帮助我们确保文档的准确性和完整性。