一、簡介
CKEditor5是一種適用于現代瀏覽器的Web富文本編輯器,它是CKEditor的新版本。CKEditor5提供了更現代化的架構以及一個全新的插件化API來使得插件的開發、使用更加自由和方便。下面將從用戶體驗、API、插件三方面深入解析它的文檔。
二、用戶體驗
CKEditor5在用戶體驗和編輯功能上都有了很大的改進。其優點有:
1. 現代化的界面:CKEditor5 的設計語言是 Material Design。這使得它的界面看起來更現代化,也更加符合當今 Web 上的設計趨勢。
2. 響應更快:CKEditor5 采用了更加現代化的技術棧 —— ES6、Webpack、React、Redux 等等,這使得它的響應速度得到了大大的提升。
3. 更現代化的編輯方式:CKEditor5將文檔流和分段段落的概念相結合,使得富文本編輯更加自然,同時,為了高可用性,也支持了純文本編輯器。
三、API
CKEditor5的API中很多部分都借鑒了React和Redux的設計哲學,更加具有現代化的特征。下面介紹一下CKEditor5的API:
1. 進入編輯區
const editor = document.querySelector( '.editor' );
ClassicEditor
.create( editor )
.then( ... )
.catch( ... );
這符合了現代化的按需加載的設計,當我們需要使用CKEditor5的時候,將JS才動態插入到頁面中,從而減少網頁的初始加載時間。
2. 編輯器實例的使用
ClassicEditor
.create( document.querySelector( '#editor' ), {
toolbar: [ 'heading', '|', 'bold', 'italic', 'link' ]
} )
.then( editor => {
console.log( editor );
} )
.catch( error => {
console.error( error );
} );
編輯器具有強大的功能,我們可以針對這些功能進行自定義配置,并在使用時進行靈活調用。
3. 包含 DOM 更新監聽的編輯器
import { editor } from '@ckeditor/ckeditor5-core';
const canvasEditor = editor({
canvas: document.createElement('canvas')
});
canvasEditor.model.document.on('change', (evt, data) => {
console.log(data, data.writer.getPlainText());
})
CKEditor5提供了很好的DOM節點更新響應機制,當我們需要監聽節點變更時,可以使用這樣的代碼進行監聽。
四、插件
CKEditor5 之所以更加強大,其插件化機制功不可沒。CKEditor5 的插件可以被 Redux store 式的機制所應用,這讓插件的開發變得更加容易和靈活。CKEditor5 自帶了很多插件,我們也可以開發自己的插件。下面是一個自定義的插件的代碼示例:
import Plugin from '@ckeditor/ckeditor5-core/src/plugin';
export default class ImageCaptionEditing extends Plugin {
static get requires() {
return [ ImageCaption, ImageCaptionEditingUI ];
}
init() {
const editor = this.editor;
editor.editing.mapper.on( 'viewToModelPosition', ( viewToModelPositionEvent, data ) => {
if ( data.viewPosition.parent.name === 'image' && data.viewPosition.name === 'caption' ) {
viewToModelPositionEvent.preventDefault();
editor.editing.view.scrollToTheElement( data.viewPosition.parent );
editor.model.focusPosition = editor.model.document.selection.getFirstPosition();
}
} );
}
}
五、總結
以上是對CKEditor5中文文檔的探討和介紹。CKEditor5設計現代化的界面、響應更加快速,在API和插件上也有了很大的改進。同時,它的文檔也相對完善,對初學者和資深用戶都有很好的幫助和學習價值。我們希望在以后的 Web 開發中能夠更加高效地利用這個好用的工具。