Vue集成Ueditor


轉載: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> 

這個時候我們已經可以在頁面中看到編輯器的樣子了


 
WX20190603-234937@2x.png

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

WX20190603-234802@2x.png
 
下載不同的版本:https://github.com/HaoChuan9421/vue-ueditor-wrap/tree/master/assets/downloads
 

 

 


接下來,請看全部代碼
<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>
View Code

 


備注:如果遇到報錯主要是配置的問題按照下邊的方法進行設置;

一、下載Ueditor相關靜態文件存放位置

首先去Ueditor官網下載相關資源(本文下載的1.4.3.3Jsp版本):


這里主要針對 vue-cli2vue-cli3進行區分。

 

vue-cli2

vue-cli2 版本中會生成一個static文件夾,用於放置靜態資源,將下載的壓縮包解壓后放入static文件夾中:

 

vue-cli3

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

解壓后的Ueditor存放目錄

 

二、引入vue-ueditor-wrap后的相關配置

先安裝vue-ueditor-wrap,然后在相關組件中引入vue-ueditor-wrap

npm i vue-ueditor-wrap -D
復制代碼

在相關組件中注冊並引入:

 

 

重點主要在myconfig配置參數上(詳細配置參數見UE/ueditor.config.js),在vue-cli2vue-cli3上略顯不同。

vue-cli2

項目使用vue-cli2進行搭建並且將UE文件夾復制到了static文件夾中(如第一點所示),UEDITOR_HOME_URL配置為:

 

同時修改配置文件 ueditor.config.js中的UEDITOR_HOME_URL為 '/UE/'

 

 

 

vue-cli3

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



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM