如何在 CDN 加载的 CKEditor 5 中集成源码编辑插件

2次阅读

如何在 CDN 加载的 CKEditor 5 中集成源码编辑插件

本文详解如何通过 cdn(如 unpkg 或 jsDelivr)为 CKEditor 5 Classic Editor 动态添加官方 source-editing 插件,无需构建工具,支持即用即配。

本文详解如何通过 cdn(如 unpkg 或 jsdelivr)为 ckeditor 5 classic editor 动态添加官方 `source-editing` 插件,无需构建工具,支持即用即配。

CKEditor 5 的源码编辑(Source Editing)功能默认不包含在经典编辑器(ClassicEditor)的标准 CDN 构建中,它是一个独立的可选插件,需显式加载并注册。由于 CKEditor 5 的模块化设计与严格的依赖管理,直接通过 @ckeditor/ckeditor5-source-editing 的源码路径(如 /src/index.min.js)引入会失败——因为该包未提供 UMD 或全局变量导出,且其内部依赖未被解析。正确方式是使用 CKEditor 官方推荐的 DLL(Dynamic Link Library)构建方案,该方案将插件编译为自包含、全局挂载的 JavaScript 模块,可通过 <script> 标签安全加载。</script>

✅ 正确加载方式(基于 DLL 构建)

CKEditor 团队为常用插件提供了预构建的 DLL 版本,托管在 npm 仓库中,可通过 unpkg 或 jsDelivr 直接引用。对于 source-editing 插件,应使用以下 URL:

<!-- 1. 加载 CKEditor 5 基础 DLL(必需) --> <script src="https://unpkg.com/@ckeditor/ckeditor5@44.0.0/build/ckeditor5-dll.js"></script>  <!-- 2. 加载 Source Editing 插件 DLL(必需) --> <script src="https://unpkg.com/@ckeditor/ckeditor5-source-editing@44.0.0/build/source-editing.js"></script>

✅ 注意:版本号(如 @44.0.0)必须与基础 DLL 版本严格一致,否则会导致插件注册失败或运行时错误。建议始终使用具体语义化版本号,避免 @latest 引发兼容性问题。

加载后,插件会自动挂载到全局 CKEditor5 对象下,路径为 CKEditor5.sourceEditing.SourceEditing。你可在配置中直接引用:

<div id="editor">Hello <strong>World</strong>!</div>  <script>   ClassicEditor     .create(document.querySelector('#editor'), {       plugins: [         // 必需的基础插件(按需补充)         CKEditor5.essentials.Essentials,         CKEditor5.uploadadapter.UploadAdapter,         CKEditor5.autoformat.Autoformat,         CKEditor5.blockquote.BlockQuote,         CKEditor5.bold.Bold,         CKEditor5.easymath.EasyMath,         CKEditor5.heading.Heading,         CKEditor5.image.Image,         CKEditor5.image.ImageCaption,         CKEditor5.image.ImageStyle,         CKEditor5.image.ImageToolbar,         CKEditor5.image.ImageUpload,         CKEditor5.indentation.Indentation,         CKEditor5.link.Link,         CKEditor5.list.List,         CKEditor5.mediaembed.MediaEmbed,         CKEditor5.paragraph.Paragraph,         CKEditor5.pasteFromOffice.PasteFromOffice,         CKEditor5.table.Table,         CKEditor5.table.TableToolbar,         // ? 关键:注入 SourceEditing 插件         CKEditor5.sourceEditing.SourceEditing       ],       toolbar: [         'heading',         '|',         'bold',         'italic',         'link',         'bulletedList',         'numberedList',         '|',         'outdent',         'indent',         '|',         'uploadImage',         'blockQuote',         'mediaEmbed',         'undo',         'redo',         '|',         // ? 关键:添加源码编辑按钮         'sourceEditing'       ]     })     .then(editor => {       console.log('Source editing enabled:', editor.plugins.has('SourceEditing'));     })     .catch(error => {       console.error('Editor initialization failed:', error);     }); </script>

⚠️ 常见错误与注意事项

  • ❌ 错误示例

    // ❌ 不要这样引入(无 UMD 支持,会报 ReferenceError) <script src="https://cdn.jsdelivr.net/npm/@ckeditor/ckeditor5-source-editing@44.0.0/src/index.min.js"></script>

    此路径仅适用于 webpack/Vite 等打包环境,CDN 下无法解析 ES 模块依赖。

  • ✅ 必须启用 sourceEditing 工具栏项:仅注册插件不显示按钮,务必在 toolbar 数组中加入 ‘sourceEditing’ 字符串

  • ? 可选样式增强:源码编辑器自带基础样式,但若需更佳视觉体验,可额外引入主题 CSS(非必需):

    <link rel="stylesheet" href="https://unpkg.com/@ckeditor/ckeditor5-source-editing@44.0.0/theme/sourceediting.css">
  • ? 调试技巧:初始化后检查插件是否注册成功:

    console.log(editor.plugins.names()); // 应包含 "SourceEditing"

✅ 总结

在 CDN 场景下启用 CKEditor 5 源码编辑功能,核心在于选用 DLL 构建而非源码包,并确保版本对齐与全局路径引用准确。该方案零构建、轻量可靠,适合快速原型、文档嵌入或 CMS 集成等场景。完整可运行示例见:JSFiddle Demo

text=ZqhQzanResources