轉載: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路徑是否正確。仔細檢查!仔細檢查!仔細檢查!重要的事情說三遍~
