携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情
背景
前段时间有幸接触到了有关新一代云office文档的开发,经过一些列的调研最终采用了基于CKEditor的二次开发。说到这里不得不吐槽一下,有关CKEditor5的社区资源是真的少,官方文档对新手也不是很友好。经过一段时间的摸索,终于顺利上手,初步可以进行一些插件的开发了。
构建配置
CKEditor5官方提供了一套用于构建的webpack配置 (【传送门】),但是对于开发调试来说不是很方便:每次都需要凭感觉开发完成,然后构建出编译出资源,然后才能进行效果查看。
对此,我基于官方的webpack进行了扩展,实现了测试环境代码热更新。
- 添加 webpack.dev.js 配置
...
module.exports = merge(common, {
mode: 'development',
devServer: {
...
},
plugins: [
new HtmlWebpackPlugin({
title: "CKEditor5",
template: path.resolve(__dirname, '../index.html'),
}),
],
});
- 在 package.json 中添加测试环境启动命令
"dev": "webpack server --config build/webpack.dev.js",
- 添加 html 模板文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>CKEditor5</title>
<script src="./dist/CKEditor.js"></script>
<script type="module">
...
</script>
</head>
<body>
<div class="document-editor__toolbar"></div>
<div class="ck-toolbar"></div>
<div id="editor"></div>
</body>
</html>
特殊说明
有关CKEditor插件(例如 @ckeditor/ckeditor5-essentials、@ckeditor/ckeditor5-paragraph、@ckeditor/ckeditor5-basic-styles等)的版本必须统一,否则导致编辑器报错无法正常使用。
建议进行插件安装的时候直接进行执行版本安装。
插件配置
1. 编辑器实例化
CKEditor5 提供了create方法,用来创建编辑器。该方法接收两个参数:sourceElementOrData、config。
- sourceElementOrData参数
如果sourceElementOrData传入的是Element,那么将自动创建编辑器,并将编辑器元素替换Element;如果sourceElementOrData传入的是初始化数据,那么将创建一个独立的编辑器,需要手动的将编辑器传入到DOM中。
- config 参数
构建编辑器的配置参数,比方说:工具栏、编辑器插件等。
下面我们以 ClassicEditor 类型编辑器为例,进行代码展示
ClassicEditor
.create( document.querySelector( '#editor' ) )
.then( editor => {
console.log( 'Editor was initialized', editor );
})
.catch( err => {
console.error( err.stack );
});
2. 工具栏配置
config参数有个属性是toolbar,就是用来配置显示在编辑器工具栏的工具,这里列举部分常用的功能:
- heading:标题工具
- bold:加粗工具
- italic:倾斜工具
- link:链接工具
- bulletedList:无序列表
- numberedList:有序列表
ClassicEditor
.create(
document.querySelector( '#editor' ),
{
toolbar: [ 'heading', '|', 'bold', 'italic', 'link', 'bulletedList', 'numberedList', 'blockQuote' ],
}
);
工具栏的大致样式如下图:
3. 插件配置
CKEditor有个属性是builtinPlugins,用来配置编辑器的插件,这里列举一下部分常用插件,更多插件可前往CkEditor官网查看。
- Autoformatting:自动格式化功能
- BlockQuote:代码块功能
- Table:表格功能
- Pagination:分页功能
- Images:图片相关功能
ClassicEditor.builtinPlugins = [
Alignment,
Autoformat,
BlockQuote,
Bold,
Essentials,
FontBackgroundColor,
FontColor,
FontFamily,
FontSize,
Heading,
Image,
ImageCaption,
ImageResize,
ImageStyle,
ImageToolbar,
ImageUpload,
];
结语
有关CKEditor编辑配置的内容到这里基本就完结了,接下来我们将深入编辑器的使用和插件开发来展开。如果大家有想要了解的内容,欢迎在文章下方留言。