日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ckeditor5加字数_CKEditor5基本使用

發布時間:2025/3/21 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ckeditor5加字数_CKEditor5基本使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. CKEditor5基本介紹

CKEditor5的用法和CKEditor4.0版本完全不同,而網上幾乎沒有比較完整的教程,而官網教程又都是英語,比較難入門,所以在使用CKEditor5的時候踩了許多坑,把自己踩坑過程簡單寫一下。

2. 基本使用

1. 下載CKEditor5庫

官方教程有CDN,npm, Zip download三種獲取方式,但這三種方式獲取的都是打包精簡之后的版本,有一些文本編輯特性并沒有,如對齊方式、字體大小等。如要更靈活的根據自己的需求添加或刪減編輯器的特性,建議從CKEditor5官方Github下載。CKEditor5有多個版本,我使用的是從github下載的ckeditor5-build-classic版本。

2. 開始使用

目錄ckeditor5-build-classic-master\build下的ckeditor.js是打包好的庫,可以直接引用去使用。 新建一個editor.html,基本使用代碼如下:

var data;

ClassicEditor.create(document.querySelector('#editor'), {

ckfinder: {

uploadUrl: '/'

}

}

).then(editor => {

window.editor = editor;

data = editor.getData();

console.log(data);

} )

.catch(error => {

console.log(error);

} );

3. 定制自己的CKEditor5: 增刪特性

雖然build目錄下的ckeditor.js可以直接使用,但是特性較少。下面開始定制自己的CKEditor5(注:本人對webpack打包不是很熟悉,本章節可能有問題,在打包使用過程遇到了問題,但用一些方法解決了)。

首先需要的工具: npm,webpack;

了解文件:webpack.config.js,package.json,build-config.js,src/ckeditor.js;

ckeditor5-build-classic目錄結構.png

webpack.config.js文件定義了打包的規則,package.json定義了用的包;build-config.js定義CKEditor5特性,src/ckeditor.js也是定義定義CKEditor5特性,似乎build-config.js和src/ckeditor.js只有一個就夠了,我使用的是src/ckeditor.js。

打包之后的工程上傳的Github,工程地址:https://github.com/Taoli96/CKEditor。

3. 上傳圖片

1. 三種方法概述

官方教程中上傳圖片有三種方法(1):使用CKEditor自帶云服務,圖片上傳到CKEditor服務器;(2):使用ckfinder框架,在初始化CKEditor時,需要定義 ckfinder的uploadUrl參數,參數為上傳到自己服務器的地址;(3)自己寫上傳功能,定義UploadAdapter,實現upload()和 abort() 方法,并對UploadAdapter進行調用。

方法1大家幾乎不用,方法3要自己寫上傳功能,網上有個教程寫得不是很清楚,我也沒有很看懂,還存在疑問。代碼如下:

class UploadAdapter {

constructor(loader) {

this.loader = loader;

}

upload() {

return new Promise((resolve, reject) => {

const data = new FormData();

data.append('upload', this.loader.file);

data.append('allowSize', 10);//允許圖片上傳的大小/兆

$.ajax({

url: '/QingXiao/Article/uploadArticleImage4',

type: 'POST',

data: data,

dataType: 'json',

processData: false,

contentType: false,

success: function (data) {

if (data.res) {

resolve({

default: data.url

});

} else {

reject(data.msg);

}

}

});

});

}

abort() {

}

}

// 加載了適配器

editor.plugins.get('FileRepository').createUploadAdapter = (loader)=>{

return new UploadAdapter(loader);

};

2. 上傳圖片方法2詳解

網上有網友遇到用方法2上傳圖片,遇到一個奇葩問題:圖片明明已經上傳到服務器,返回數據也是按照所謂教程的{"default":"url"}格式。可是依然會報錯。報錯如下:

上傳圖片報錯.png

我也遇到了這個問題,遲遲沒有解決,直到今天看了CKEditor中ckfinder的源碼才發現問題。閱讀ckeditor5-adapter-ckfinder發現,ckfinder也定義了UploadAdapter,同樣實現了upload()和 abort() 方法。而問題就出現在upload()方法中。下面貼出upload()方法的源碼:

upload() {

return new Promise( ( resolve, reject ) => {

this._initRequest();

this._initListeners( resolve, reject );

this._sendRequest();

} );

}

_initListeners( resolve, reject ) {

const xhr = this.xhr;

const loader = this.loader;

const t = this.t;

const genericError = t( 'Cannot upload file:' ) + ` ${ loader.file.name }.`;

xhr.addEventListener( 'error', () => reject( genericError ) );

xhr.addEventListener( 'abort', () => reject() );

xhr.addEventListener( 'load', () => {

const response = xhr.response;

if ( !response || !response.uploaded ) {

return reject( response && response.error && response.error.message ? response.error.message : genericError );

}

resolve( {

default: response.url

} );

} );

// Upload progress when it's supported.

/* istanbul ignore else */

if ( xhr.upload ) {

xhr.upload.addEventListener( 'progress', evt => {

if ( evt.lengthComputable ) {

loader.uploadTotal = evt.total;

loader.uploaded = evt.loaded;

}

} );

}

}

從上面源碼中可以發現,ckfinder請求之后的返回體response應該不為空,且還要包括uploaded和url字段,所以返回數據實際格式應該是{"uploaded":1,"url":"/"},如此就不會出錯了。所以,返回的數據并不是按照“教程“”說的那樣。

4. 總結

因本人也是前端初學者,如果教程有錯誤和不足之處,還請海涵并幫忙指出改正,謝謝!

總結

以上是生活随笔為你收集整理的ckeditor5加字数_CKEditor5基本使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。