轉載:https://juejin.cn/post/6844903781709119495
vue-ueditor-wrap地址:https://github.com/HaoChuan9421/vue-ueditor-wrap
vue-ueditor-wrapdemo地址:http://ueditor.gitrr.com/#/
前言
使用vue-cli3.0+element-ui+webpack做項目時,遇到了一個需求:文章管理中添加富文本編輯器(暫未添加上傳圖片功能),在百度上查看到好幾個富文本編輯器,最終選擇了百度的Ueditor
,基本能滿足所有需求。經過多番采坑之后,已實現相關功能,特此做一個記錄。
安裝流程:
第一步,先下載依賴
npm i vue-ueditor-wrap -S
第二步,引入到項目中
import VueUeditorWrap from 'vue-ueditor-wrap'
第三步,注冊組件
components: {
VueUeditorWrap
}
第四步,在模板中使用組件
<template> <div> <VueUeditorWrap/> </div> </template>
這個時候我們已經可以在頁面中看到編輯器的樣子了

但是我們往往需要更多的功能,比如圖片上傳,因此我們需要一些其他東西來支持我們的工作,這里通過點贊后盜用大神的一份文件(n(≧≦)n)https://github.com/HaoChuan9421/vue-ueditor-wrap/tree/master/assets/downloads,我在本項目中所使用的是utf8-php.zip,解壓后放在static下並命名為UEditor


接下來,請看全部代碼

<template> <div class=""> <!-- <VueUeditorWrap v-model="message" :config="editorConfig" @ready="ready" /> --> <vue-ueditor-wrap :config="editorConfig" ></vue-ueditor-wrap> </div> </template> <script> import VueUeditorWrap from 'vue-ueditor-wrap' // import evtHub from '@/common/eventHub.js' export default { name: "Editor", components: { VueUeditorWrap }, props: ["content"], data() { return { evtHub: '', message: '', // 簡單配置 editorConfig: { // 編輯器不自動被內容撐高 autoHeightEnabled: false, // 初始容器高度 initialFrameHeight: 300, // 初始容器寬度 initialFrameWidth: '100%', // 上傳文件接口, 報錯屬於正常,若需要驗證可使用(也是盜大神的)http://35.201.165.105:8000/controller.php // 調試完畢打包上線則切換回/static/UEditor/php/controller.php即可,不用做其他處理 serverUrl: '', UEDITOR_HOME_URL:'/UE/' // serverUrl: '/static/UEditor/php/controller.php', } }; }, mounted() { // 這里是從列表頁編輯時做的內容注入,沒有需要可以不寫 this.message = this.content; }, methods: { ready(editorInstance) { // 這里可以拿到ueditor的實例,比如editorInstance.getContent()就可以拿到編輯器的html內容 // this.evtHub.$emit('editor.data', editorInstance); } } }; </script> <style scoped> </style>
備注:如果遇到報錯主要是配置的問題按照下邊的方法進行設置;
一、下載Ueditor相關靜態文件存放位置
首先去Ueditor官網下載相關資源(本文下載的1.4.3.3Jsp版本):
vue-cli2
與
vue-cli3
進行區分。
vue-cli2
vue-cli2
版本中會生成一個static
文件夾,用於放置靜態資源,將下載的壓縮包解壓后放入static
文件夾中:

vue-cli3
vue-cli3
在項目初始化時會生成一個public
文件夾(public文件夾使用場景,public
文件夾中的文件不會被webpack打包編譯,只是簡單的復制到打包后的dist
文件夾中)。將下載的壓縮包解壓並重命名UE
放入public
文件夾中:

二、引入vue-ueditor-wrap后的相關配置
先安裝vue-ueditor-wrap
,然后在相關組件中引入vue-ueditor-wrap
npm i vue-ueditor-wrap -D
復制代碼
在相關組件中注冊並引入:



重點主要在myconfig
配置參數上(詳細配置參數見UE/ueditor.config.js
),在vue-cli2
與vue-cli3
上略顯不同。
vue-cli2
項目使用vue-cli2
進行搭建並且將UE
文件夾復制到了static
文件夾中(如第一點所示),UEDITOR_HOME_URL
配置為:

ueditor.config.js
中的UEDITOR_HOME_URL為
'/UE/'

vue-cli3
使用vue-cli3
的UEDITOR_HOME_URL
配置為:

ueditor.config.js
中的
UEDITOR_HOME_URL
為
'/static/UE/'


三、修改富文本內容長度計算方式
該Ueditor中的內容長度(在這里僅以vue
雙向綁定為例)都是按照1個字符長度進行計算的,如插入一個表情顯示長度為1:

ueditor.all.js
或者
ueditor.all.min.js
的源碼。
修改ueditor.all.js
的方式
在ueditor.all.js
文件中全局查找getContentLength
:

ueditor.all.min.js
文件即可

修改ueditor.all.min.js
的方式
該方式比較簡單粗暴,直接在ueditor.all.min.js
中全局搜索getContentLength
並刪除高亮部分:


四、其他問題
如在配置中出現下圖類似問題:

UEDITOR_HOME_URL
路徑是否正確。仔細檢查!仔細檢查!仔細檢查!重要的事情說三遍~