vue中使用vue-quill-editor富文本小結(jié)(圖片上傳)

? ?? ? vue-quill-editor是我們再使用vue框架的時候常用的一個富文本編輯器惹谐,在進行富文本編輯的時候,我們往往要插入一些圖片驼卖,vue-quill-editor默認(rèn)的處理方式是直接將圖片轉(zhuǎn)成base64編碼氨肌,這樣的結(jié)果使整個富文本的html片段十分冗余,通常來講酌畜,每個服務(wù)器端接收的post的數(shù)據(jù)大小都是有限制的怎囚,這樣的話有可能導(dǎo)致提交失敗,或者是用戶體驗很差桥胞,數(shù)據(jù)要傳遞很久才全部傳送到服務(wù)器恳守。
1.下載Vue-Quill-Editor

   npm install vue-quill-editor --save

2.下載quill(Vue-Quill-Editor需要依賴)

    npm install quill --save

3.使用

import { quillEditor } from "vue-quill-editor"; //調(diào)用編輯器
import 'quill/dist/quill.core.css';
import 'quill/dist/quill.snow.css';
import 'quill/dist/quill.bubble.css';

????本次使用到了富文本的封裝和上傳圖片,因要求使用element-ui框架,我上傳圖片的時候選擇了element-ui的Upload上傳組件將圖片上傳到服務(wù)器贩虾。再將圖片鏈接插入到富文本中催烘,以達到最優(yōu)的體驗。

子組件中將改變的值缎罢,直接發(fā)送給父組件伊群,父組件來完成邏輯處理

<template>
  <div>
    <el-upload            //直接隱藏掉就好了考杉,用功能不用樣式
      v-show="false"
      id="quill-upload"
      action="/api/product/upload.do"
      name="upload_file"
      multiple
      :limit="3"
      list-type="picture"
      :show-file-list="false"
      :before-upload="beforeUpload"
      :on-error="uploadError"
      :on-success="handleExceed">
      <el-button size="small" type="primary" ></el-button>
      <div slot="tip" class="el-upload__tip">只能上傳jpg/png文件,且不超過500kb</div>
    </el-upload>
    <el-row v-loading="uillUpdateImg">
      <quillEditor
        ref="myQuillEditor"
        @change="onEditorChange($event)"
        v-model="value"
        :options="editorOption"/>
    </el-row>
  </div>
</template>
<script>
import { quillEditor } from 'vue-quill-editor'
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
export default {
  name: "richText",
  components:{quillEditor},
  props:['content'],                              //父組件傳過來的舰始,將傳過來的渲染到富文本編輯器
  data(){
    return{
      uillUpdateImg:false,                        //根據(jù)圖片上傳狀態(tài)來確定是否顯示loading動畫
      serverUrl:'',  //上傳的圖片服務(wù)器地址
      value:this.content,                         //富文本內(nèi)容
      editorOption: {                             //符文本編輯器的配置
        placeholder: '',
        theme: 'snow',
        modules: {
          toolbar: {
            container: [                          // 工具欄配置, 默認(rèn)是全部
              ['bold'],
              ['italic'],
              ['underline'],
              ['strike'],
              [{'list':'ordered'},{'list': 'bullet' }],
              ['blockquote'], ['code-block'],
              ['link'],
              ['image'],
              [{'list': 'ordered'}, {'list': 'bullet'}],
            ],
            handlers: {
              'image': function (value) {
                if (value) {
                  // 給個點擊觸發(fā)Element-ui崇棠,input框選擇圖片文件
                  document.querySelector('#quill-upload input').click()
                } else {
                  this.quill.format('image', false);
                }
              }
            }
          }
        }
      }
    }
  },
  methods:{
    onEditorChange({ quill, html, text }) {      //富文本編輯器內(nèi)容發(fā)生改變的時候
      this.value = html
      this.$emit('textChange',html)              //將富文本編輯器輸入的文本發(fā)送給父組件,父組件涉及提交添加或者更改
    },
    beforeUpload(){                              //上傳圖片之前開啟loading
      this.uillUpdateImg = true
    },
    uploadError(){                              //圖片上傳失敗,關(guān)閉loading
      this.uillUpdateImg = false
      this.$message.error('圖片插入失敗')
    },
    handleExceed(response, file, fileList){     //圖片添加成功
      let quill = this.$refs.myQuillEditor.quill
      console.log(response)
      if (response.status === 0) {
        let length = quill.getSelection().index;
        // 插入圖片  response.data.url為服務(wù)器返回的圖片地址
        quill.insertEmbed(length, 'image', response.data.url)
        // 調(diào)整光標(biāo)到最后
        quill.setSelection(length + 1)
      }else{
        this.$message.error('圖片插入失敗')
      }
      this.fileList = fileList
      this.uillUpdateImg = false
    },
  }
}
</script>

<style scoped>

</style>

配置中的handlers是用來定義自定義程序的蔽午,然而我們配置完后會懵逼地發(fā)現(xiàn)易茬,整個富文本編輯器的工具欄的圖片上傳等按鈕都不見了 只保留了幾個基本的富文本功能酬蹋。

這個是因為添加自定義處理程序?qū)⒏采w默認(rèn)的工具欄和主題行為
因此我們要再自行配置下我們需要的工具欄及老,所有功能的配置如下,大家可以按需配置范抓,這里看起來一大堆骄恶,也不美觀,大家也可以配置一個單獨的config文件引入匕垫。

??????有一點注意的地方僧鲁,父組件中傳入子組件中的值,子組件里面發(fā)生改變以后再傳給父組件象泵。將變量時存放在props屬性中的寞秃,我們在調(diào)用變量的時候是跟data里面的變量一樣的,都是通過this.變量來調(diào)用偶惠,這個問題就是說父組件傳入子組件的變量是不能this.變量直接改變的春寿,要在data或者computed屬性里面重新定義一個變量,或者監(jiān)聽props接受變量的變化忽孽。改變data或者computed屬性里面的變量就不會報錯了绑改。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市兄一,隨后出現(xiàn)的幾起案子厘线,更是在濱河造成了極大的恐慌,老刑警劉巖出革,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件造壮,死亡現(xiàn)場離奇詭異,居然都是意外死亡骂束,警方通過查閱死者的電腦和手機费薄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來栖雾,“玉大人楞抡,你說我怎么就攤上這事∥雠海” “怎么了召廷?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我竞慢,道長先紫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任筹煮,我火速辦了婚禮遮精,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘败潦。我一直安慰自己本冲,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布劫扒。 她就那樣靜靜地躺著檬洞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪沟饥。 梳的紋絲不亂的頭發(fā)上添怔,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天,我揣著相機與錄音贤旷,去河邊找鬼广料。 笑死,一個胖子當(dāng)著我的面吹牛幼驶,可吹牛的內(nèi)容都是我干的艾杏。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼县遣,長吁一口氣:“原來是場噩夢啊……” “哼糜颠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起萧求,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤其兴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后夸政,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體元旬,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年守问,在試婚紗的時候發(fā)現(xiàn)自己被綠了匀归。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡耗帕,死狀恐怖穆端,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情仿便,我是刑警寧澤体啰,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布攒巍,位于F島的核電站,受9級特大地震影響荒勇,放射性物質(zhì)發(fā)生泄漏柒莉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一沽翔、第九天 我趴在偏房一處隱蔽的房頂上張望兢孝。 院中可真熱鬧,春花似錦仅偎、人聲如沸跨蟹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽喷市。三九已至相种,卻和暖如春威恼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背寝并。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工箫措, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人衬潦。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓斤蔓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親镀岛。 傳聞我的和親對象是個殘疾皇子弦牡,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,543評論 2 349