Vue 3 整合 WangEditor 富文本編輯器:從基礎到高級實踐

WangEditor Cover

本文將詳細介紹如何在 Vue 3 項目中集成 WangEditor 富文本編輯器,實現圖文混排、自定義擴展等高階功能。


一、為什么選擇 WangEditor?

作為國內流行的開源富文本編輯器,WangEditor 具有以下優勢:

  • 輕量高效:壓縮后僅 1.5MB,遠小于其他同類產品
  • 開箱即用:提供 Vue/React 官方封裝組件
  • 擴展性強:支持自定義菜單、異步圖片上傳等
  • 安全可靠:內置 XSS 過濾機制

二、快速集成到 Vue 項目
1. 安裝依賴
npm install @wangeditor/editor @wangeditor/editor-for-vue
2. 基礎組件封裝
<template><div class="editor-wrapper"><!-- 工具欄 --><Toolbar :editor="editorRef" :defaultConfig="toolbarConfig"/><!-- 編輯器 --><Editorv-model="valueHtml":defaultConfig="editorConfig"@onCreated="handleCreated"/></div>
</template><script setup>
import { Editor, Toolbar } from '@wangeditor/editor-for-vue'// 編輯器實例(必須使用 shallowRef)
const editorRef = shallowRef()// 內容數據綁定
const valueHtml = ref('<p>初始內容</p>')
</script>

三、核心功能實現
1. 圖片上傳集成
editorConfig.MENU_CONF['uploadImage'] = {allowedFileTypes: ['image/*'],customUpload: async (file, insertFn) => {try {const ossUrl = await uploadToOSS(file) // 對接云存儲insertFn(ossUrl, '圖片描述') // 插入編輯器} catch (error) {console.error('上傳失敗:', error)}}
}

注:推薦結合七牛云/阿里云 OSS 實現文件存儲

2. 數據雙向綁定
// 父組件傳值
watch(() => props.modelValue, (newVal) => {if (valueHtml.value !== newVal) {valueHtml.value = newVal}
})// 子組件更新
watch(valueHtml, (newVal) => {emit('update:modelValue', newVal)
})
3. 工具欄定制
// 隱藏不常用功能
const toolbarConfig = {excludeKeys: ['fullScreen', 'codeBlock', 'code']
}

四、高級實踐技巧
1. 動態獲取工具欄配置
onMounted(() => {setTimeout(() => {const editor = editorRef.valueconst toolbar = DomEditor.getToolbar(editor)console.log(toolbar.getConfig().toolbarKeys)}, 1500)
})
2. 內存泄漏防護
onBeforeUnmount(() => {const editor = editorRef.valueeditor?.destroy() // 必須銷毀實例
})
3. 內容變化監聽
const handleCreated = (editor) => {editorRef.value = editor// 監聽編輯器變化editor.on('change', () => {console.log('內容變化:', editor.getHtml())})
}

五、最佳實踐建議
  1. 樣式隔離:通過外層容器限制編輯器寬度

    .editor-wrapper {max-width: 1200px;margin: 0 auto;border: 1px solid #eee;
    }
    
  2. 性能優化

    • 使用 shallowRef 存儲編輯器實例
    • 避免頻繁操作 DOM
  3. 安全策略

    • 啟用 XSS 過濾
    editorConfig = {MENU_CONF: {uploadImage: {customAlert: (s) => { alert(s) }}}
    }
    

使用組件:

<RichTextEditor v-model="content" />
六、總結

通過本文的實踐,我們已經實現了:
? 編輯器的完整集成
? 云端圖片上傳
? 數據雙向綁定
? 工具欄定制
? 內存安全防護

預覽功能:https://blog.csdn.net/m0_69838795/article/details/146050001?fromshare=blogdetail&sharetype=blogdetail&sharerId=146050001&sharerefer=PC&sharesource=m0_69838795&sharefrom=from_link

官方資源

  • WangEditor 官網
  • GitHub 倉庫

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/72589.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/72589.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/72589.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

FastGPT 引申:信息抽取到知識圖譜的銜接流程

文章目錄 信息抽取到知識圖譜的銜接流程步驟1&#xff1a;原始信息抽取結果步驟2&#xff1a;數據標準化處理&#xff08;Python示例&#xff09;步驟3&#xff1a;Cypher代碼動態生成&#xff08;Python驅動&#xff09; 關鍵銜接邏輯說明1. 唯一標識符生成規則2. 數據映射策略…

Webshell 入侵與防御全攻略

Webshell&#xff0c;是指攻擊者上傳到網站的遠程控制后門&#xff0c;允許黑客像管理員一樣遠程控制網站&#xff0c;執行惡意命令&#xff0c;甚至完全接管網站。本文將帶你深入了解 Webshell 的入侵方式以及相應的防御措施&#xff0c;幫助你加固自己的網站防線。 什么是 W…

NL2SQL-基于Dify+阿里通義千問大模型,實現自然語音自動生產SQL語句

本文基于Dify阿里通義千問大模型&#xff0c;實現自然語音自動生產SQL語句功能&#xff0c;話不多說直接上效果圖 我們可以試著問他幾個問題 查詢每個部門的員工數量SELECT d.dept_name, COUNT(e.emp_no) AS employee_count FROM employees e JOIN dept_emp de ON e.emp_no d…

雙鏈路提升網絡傳輸的可靠性擴展可用帶寬

為了提升網絡傳輸的可靠性或增加網絡可用帶寬&#xff0c; 通常使用雙鏈路冗余備份或者雙鏈路聚合的方式。 本文介紹幾種雙鏈路網絡通信的案例。 5GWiFi冗余傳輸 雙Socket綁定不同網絡接口&#xff1a;通過Android的ConnectivityManager綁定5G蜂窩網絡和WiFi的Socket連接&…

Ubuntu22.04安裝Ollama部署DeepSeek-R1:32B模型

一、環境準備 1.硬件要求 GPU: 至少 NVIDIA A30/A100 (顯存 ≥ 24GB)內存: ≥ 64GB RAM存儲: ≥ 100GB 可用空間 (模型文件約 60GB)2.軟件依賴 # 驗證NVIDIA驅動 nvidia-smi二、Ollama安裝 方法 1:install.sh安裝 運行一下安裝命令: curl -fsSL https://ollama.com/inst…

LeetCode 解題思路 10(Hot 100)

解題思路&#xff1a; 上邊&#xff1a; 從左到右遍歷頂行&#xff0c;完成后上邊界下移&#xff08;top&#xff09;。右邊&#xff1a; 從上到下遍歷右列&#xff0c;完成后右邊界左移&#xff08;right–&#xff09;。下邊&#xff1a; 從右到左遍歷底行&#xff0c;完成后…

Checkpoint 模型與Stable Diffusion XL(SDXL)模型的區別

Checkpoint 模型與 Stable Diffusion XL&#xff08;SDXL&#xff09;模型 在功能、架構和應用場景上有顯著區別&#xff0c;以下是主要差異的總結&#xff1a; 1. 基礎架構與定位 Checkpoint 模型 是基于 Stable Diffusion 官方基礎模型&#xff08;如 SD 1.4/1.5&#xff09;…

GCC RISCV 后端 -- C語言語法分析過程

在 GCC 編譯一個 C 源代碼時&#xff0c;先會通過宏處理&#xff0c;形成 一個叫轉譯單元&#xff08;translation_unit&#xff09;&#xff0c;接著進行語法分析&#xff0c;C 的語法分析入口是 static void c_parser_translation_unit(c_parser *parser); 接著就通過類似遞…

第十五屆藍橋杯Scratch12月stema選拔賽真題—消失的水母

消失的水母 編程實現&#xff1a; 消失的水母。&#xff08;角色、背景非源素材&#xff09; 具體要求&#xff1a; 1、每次點擊綠旗&#xff0c;水母說“請輸入 2&#xff5e;10 的整數”&#xff0c;同時在舞臺下方顯示輸入框&#xff0c;如圖所示; 完整題目可點擊下方鏈…

Redis設計與實現-數據結構

Redis數據結構 1、RedisObject對象2、簡單動態字符串2.1 SDS定義2.2 SDS與C語言的區別2.3 SDS的空間分配策略2.3.1 空間預分配2.3.2 惰性空間釋放 2.4 SDS的API 3、鏈表3.1 鏈表的定義3.2 鏈表的API 4、字典4.1 字典的定義4.2 哈希算法4.3 哈希表的擴縮4.3.1 哈希表擴縮的判斷依…

由麻省理工學院計算機科學與人工智能實驗室等機構創建低成本、高效率的物理驅動數據生成框架,助力接觸豐富的機器人操作任務

2025-02-28&#xff0c;由麻省理工學院計算機科學與人工智能實驗室&#xff08;CSAIL&#xff09;和機器人與人工智能研究所的研究團隊創建了一種低成本的數據生成框架&#xff0c;通過結合物理模擬、人類演示和基于模型的規劃&#xff0c;高效生成大規模、高質量的接觸豐富型機…

RK3588開發筆記-fiq_debugger: cpu 0 not responding, reverting to cpu 3問題解決

目錄 前言 一、FIQ Debugger介紹 二、rockchip平臺配置方法 三、問題分析定位 IRQF_NOBALANCING 的含義 總結 前言 在進行 RK3588 開發的過程中,我們可能會遇到各種棘手的問題。其中,“fiq_debugger: cpu 0 not responding, reverting to cpu 3” 這個錯誤出現在RK3588的…

計算機視覺|ViT詳解:打破視覺與語言界限

一、ViT 的誕生背景 在計算機視覺領域的發展中&#xff0c;卷積神經網絡&#xff08;CNN&#xff09;一直占據重要地位。自 2012 年 AlexNet 在 ImageNet 大賽中取得優異成績后&#xff0c;CNN 在圖像分類任務中顯示出強大能力。隨后&#xff0c;VGG、ResNet 等深度網絡架構不…

SpringTask 引起的錯誤

SpringTask 引起的錯誤 1. 場景 在使用 SpringBoot 編寫后臺程序時&#xff0c;當在瀏覽器頁面中發起請求時&#xff0c;MP 自動填充來完成一些字段的填充&#xff0c;例如創建時間、創建人、更新時間、更新人等。但是當編寫微信小程序時&#xff0c;由于一些字段無法進行自動…

FPGA學習篇——Verilog學習4

1.1 結構語句 結構語句主要是initial語句和always語句&#xff0c;initial 語句它在模塊中只執行一次&#xff0c;而always語句則不斷重復執行&#xff0c;以下是一個比較好解釋的圖: (圖片來源于知乎博主羅成&#xff0c;畫的很好很直觀&#xff01;) 1.1.1 initial語句 ini…

【Linux】【網絡】UDP打洞-->不同子網下的客戶端和服務器通信(未成功版)

【Linux】【網絡】UDP打洞–>不同子網下的客戶端和服務器通信&#xff08;未成功版&#xff09; 上次說基于UDP的打洞程序改了五版一直沒有成功&#xff0c;要寫一下問題所在&#xff0c;但是我后續又查詢了一些資料&#xff0c;成功實現了&#xff0c;這次先寫一下未成功的…

【Python編程】高性能Python Web服務部署架構解析

一、FastAPI 與 Uvicorn/Gunicorn 的協同 1. 開發環境&#xff1a;Uvicorn 直接驅動 作用&#xff1a;Uvicorn 作為 ASGI 服務器&#xff0c;原生支持 FastAPI 的異步特性&#xff0c;提供熱重載&#xff08;--reload&#xff09;和高效異步請求處理。 啟動命令&#xff1a; u…

前端權限流程(基于rbac實現思想)

1. 權限控制 1.1. 實現思想 基于rbac權限控制思想實現&#xff0c;給用戶分配角色&#xff0c;給角色分配權限 給用戶分配角色業務 注意&#xff1a;上方圖片是個示例圖&#xff0c;代表給用戶分配職位(角色)&#xff0c;頁面中使用了Element-plus的el- checkbox組件…

軟件高級架構師 - 軟件工程

補充中 測試 測試類型 靜態測試 動態測試 測試階段 單元測試中&#xff0c;包含性能測試&#xff0c;如下&#xff1a; 集成測試中&#xff0c;包含以下&#xff1a; 維護 遺留系統處置 高水平低價值&#xff1a;采取集成 對于這類系統&#xff0c;采取 集成 的方式&…

python3.13安裝教程【2025】python3.13超詳細圖文教程(包含安裝包)

文章目錄 前言一、python3.13安裝包下載二、Python 3.13安裝步驟三、Python3.13驗證 前言 本教程將為你詳細介紹 Python 3.13 python3.13安裝教程&#xff0c;幫助你順利搭建起 Python 3.13 開發環境&#xff0c;快速投身于 Python 編程的精彩實踐中。 一、python3.13安裝包下…