Vue3寫一個后臺管理系統(5)富文本編輯器處理方案

編輯庫選擇標準

對于現在的前端編輯庫富文本而言,如果僅從功能上來去看的話,那么其實都是相差無幾的。隨便從 github 中挑選編輯庫,只要 star10K(保守些) 以上的,編輯器之上的常用功能一應俱全。富文本我們使用 wangEditor,因為 wangEditor是國產框架、文檔越詳盡,提供了中文文檔(英文好的可以忽略)、更新快速,不像谷歌開源的markdown-here,github上都好多年沒更新了。

image.png

image.png

所以我們得先去下載 wangEditor

npm i wangeditor@4.7.6
  • 我們這里使用的是4.x版本的,當然你也可以使用最新v5版本的,4.x版本我覺得api使用起來更舒服,因人而異吧。安裝完成之后,我們把editor封裝成一個組件,代碼邏輯和注釋如下:
<template>
  <div class="editor-container">
    <div id="editor-box"></div>
    <div class="bottom">
      <el-button type="primary" @click="onSubmitClick">提交</el-button>
    </div>
  </div>
</template>

<script setup>
import E from 'wangeditor'
import { onMounted, defineProps, defineEmits, watch } from 'vue'
import { useStore } from 'vuex'
import conf from "@/utils/config.js";
import {getAdmintorList, publicUploadFile} from "@/api/api";

const props = defineProps({
  title: {
    required: true,
    type: String
  },
  detail: {
    type: Object
  }
})

const emits = defineEmits(['onSuccess'])

const store = useStore()

// Editor實例
let editor
// 處理離開頁面切換語言導致 dom 無法被獲取
let el
onMounted(() => {
  el = document.querySelector('#editor-box')
  initEditor()
})

const initEditor = () => {
  editor = new E(el)
  editor.config.zIndex = 1
  // 菜單欄提示
  editor.config.showMenuTooltips = true
  editor.config.menuTooltipPosition = 'down'
  // 一次最多上傳圖片的數量
  editor.config.uploadImgMaxLength = 1;
  // 設置編輯區域高度為 500px
  editor.config.height = 700
  // 限制上傳圖片格式
  editor.config.uploadImgAccept = ['jpg', 'jpeg', 'png', 'gif', 'bmp'];
  editor.config.showLinkImg = false
// 默認情況下,顯示所有菜單
  editor.config.menus = [
    'head',
    'bold',
    'fontSize',
    'fontName',
    'italic',
    'underline',
    'strikeThrough',
    'indent',
    'lineHeight',
    'foreColor',
    'backColor',
    'link',
    'list',
    'todo',
    'justify',
    'quote',
    'emoticon',
    'image',
    // 'video',
    'table',
    'code',
    'splitLine',
    'undo',
    'redo',
  ]
  // 自定義上傳圖片
  editor.config.customUploadImg = (resultFiles, insertImgFn) => {
// resultFiles 是 input 中選中的文件列表
// insertImgFn 是獲取圖片 url 后,插入到編輯器的方法
    resultFiles.forEach((item, i) => {
      const formData = new FormData()
      formData .append('file', item)
      publicUploadFile(formData)
        .then(res => {
              insertImgFn(res.bizobj.src)
        })
        .catch(err => {
        })

    })
  }







  editor.create()
}

// 編輯相關
watch(
  () => props.detail,
  val => {
    if (val && val.content) {
      editor.txt.html(val.content)
    }
  },
  {
    immediate: true
  }
)

const onSubmitClick = async () => {
  console.log(editor.txt.html())
  editor.txt.html('')
  emits('onSuccess')
}
</script>

<style lang="scss" scoped>
.editor-container {
  .bottom {
    margin-top: 20px;
    text-align: right;
  }
}
</style>


  • 頁面中使用
<template>
  <div class="container">
    <editor></editor>
  </div>
</template>

<script setup>
import Editor from '../components/Editor.vue'
import { ref } from 'vue'


</script>

<style lang="scss" scoped>
.container {
}
</style>


效果

image.png

總結

對于大家而言,不一定非要使用我們在文章中使用的這個編輯器庫。

因為對于編輯器庫而言,它的使用方式都是大同小異的,大家只需要根據我們實際業務需求和使用習慣來選擇使用自己當前情況的編輯器庫即可

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,461評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,538評論 3 417
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,423評論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,991評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,761評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,207評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,268評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,419評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,959評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,782評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,222評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,653評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,901評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,678評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,978評論 2 374

推薦閱讀更多精彩內容