【前端】富文本編輯器插件 wangEditor 5 基本使用(Vue2)

在這里插入圖片描述
在這里插入圖片描述

https://www.wangeditor.com/v5

一、安裝

首先安裝editor

yarn add @wangeditor/editor
# 或者 npm install @wangeditor/editor --save

安裝Vue2組件

yarn add @wangeditor/editor-for-vue
# 或者 npm install @wangeditor/editor-for-vue --save

或者Vue3

yarn add @wangeditor/editor-for-vue@next
# 或者 npm install @wangeditor/editor-for-vue@next --save

二、復制樣式

安裝完成后,復制 node_modules/@wangeditor/core/dist/css/style.css 文件到src/assets/wangeditor路徑下,在main.js

import '@wangeditor/editor/dist/css/style.css'

webpack或者Vite可以直接根據此解析路徑,即可加載了。

也可以局部引入:
在組件/頁面內

import '@wangeditor/editor/dist/css/style.css'

三、封裝組件

1.模板內引入工具欄和編輯框:

<template><div style="border: 1px solid #ccc;"><Toolbar ref="toolbar" style="border-bottom: 1px solid #ccc;" :editor="editor" :defaultConfig="toolbarConfig" :mode="mode" /><Editor style="height: 300px;width: 80%; overflow-y: hidden;" :value="value":defaultConfig="editorConfig" :mode="mode" @onCreated="onCreated" @onChange="onEditorChange" /></div>
</template>
<script>
import { Editor, Toolbar } from '@wangeditor/editor-for-vue'
</script>

2.配置工具欄

因為我需要上傳附件的按鈕,所以先下載附件:

yarn add @wangeditor/plugin-upload-attachment
# npm install @wangeditor/plugin-upload-attachment --save

下載好了之后引入并注冊:
(只注冊一次,在組件上方)

import { Boot } from '@wangeditor/editor'
import attachmentModule from '@wangeditor/plugin-upload-attachment'
Boot.registerModule(attachmentModule)

后面配置工具欄toolbarConfig
excludeKeys寫不想要的工具項,insertKeys寫自定義插入的項,mode設置成default即有20+個常用工具項,在此基礎上修改即可。

toolbarConfig:{excludeKeys: ['fullScreen',"group-video"],insertKeys:{index: 0, // 自定義插入的位置keys: ['uploadAttachment'], // “上傳附件”菜單}
} ,

3.配置editor

工具欄是基于editor來的,所以最開始的時候editor為null,后面在editor的created鉤子里初始化:

methods:{
onCreated(editor) {this.editor = Object.seal(editor)
},
}

記得銷毀:

    beforeDestroy() {this.editor && this.editor.destroy()},
editorConfig: { hoverbarKeys: {attachment: {menuKeys: ['downloadAttachment'], // “下載附件”菜單},},MENU_CONF: {uploadImage: {server: '', // 你的上傳urlfieldName: 'file',allowedFileTypes: ['image/*'],async customUpload(file, insertFn) {const form = new FormData()form.append('file', file)// 你可以在此增加formdataconst { data } = await axios.post(' your url'), form)const url = data.urlinsertFn(url, '', '') // 參數:src、alt、href 用來在編輯框中戰術}},uploadAttachment: {server: 'url',fieldName: 'file',timeout: 10 * 1000,// 自定義上傳customUpload: this.uploadAttachment},}
},async uploadAttachment (file, insertFn) {const form = new FormData()form.append('file', file)try {const { data } = await axios.post('url', form)const url = data.urlinsertFn(file.name,url)} catch (e) {this.$message.error('上傳出錯')}}

四、代碼匯總

<template><div style="border: 1px solid #ccc;"><Toolbar ref="toolbar" style="border-bottom: 1px solid #ccc;" :editor="editor" :defaultConfig="toolbarConfig" :mode="mode" /><Editor style="height: 300px;width: 80%; overflow-y: hidden;" :value="value":defaultConfig="editorConfig" :mode="mode" @onCreated="onCreated" @onChange="onEditorChange" /></div>
</template>
<script>
import { Editor, Toolbar } from '@wangeditor/editor-for-vue'
import { Boot } from '@wangeditor/editor'
import axios from 'axios'
import attachmentModule from '@wangeditor/plugin-upload-attachment'Boot.registerModule(attachmentModule)export default {name:'WEditor',components:{Editor, Toolbar},props:{value:{type:String,default:''}},data(){return {toolbarConfig:{excludeKeys: ['fullScreen',"group-video"],insertKeys:{index: 0, // 自定義插入的位置keys: ['uploadAttachment'], // “上傳附件”菜單}} ,editor:null,editorConfig: { hoverbarKeys: {attachment: {menuKeys: ['downloadAttachment'], // “下載附件”菜單},},MENU_CONF: {uploadImage: {server: '',fieldName: 'file',allowedFileTypes: ['image/*'],async customUpload(file, insertFn) {const form = new FormData()form.append('file', file)const { data } = await axios.post('url', form)const url = data.urlinsertFn(url, '', '') // 參數:src、alt、href}},uploadAttachment: {server: 'url',fieldName: 'file',timeout: 10 * 1000,// 自定義上傳customUpload: this.uploadAttachment},}},mode: 'default',}},created() {},beforeDestroy() {this.editor && this.editor.destroy()},methods:{onCreated(editor) {this.editor = Object.seal(editor)},onEditorChange(editor){this.$emit('input', editor.getHtml())},async uploadAttachment (file, insertFn) {const form = new FormData()form.append('file', file)try {const { data } = await axios.post('url', form)const url = data.urlinsertFn(file.name,url)} catch (e) {this.$message.error('上傳出錯')}}}
}
</script>

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

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

相關文章

自適應哈希索引 和 日志緩沖區

目錄 1. 自適應哈希索引在內存中的位置 2. 自適應哈希索引的作用 3. 為什么要創建自適應哈希索引 4. 適應哈希索引的Key -Value如何設置&#xff1f; 5. 日志緩沖區在內存中的位置 6. 日志緩沖區的作用 7. 日志不通過LogBuffer直接寫入磁盤不行嗎&#xff1f; 1. 自適應哈…

中國旅行社協會在京召開“文旅人工智能應用研討會”,助力文旅創新發展

7月15日&#xff0c;由中國旅行社協會數字經濟專業委員會和在線旅行服務商分會聯合主辦的“人工智能技術在文旅產業中的應用”研討會在北京舉行。中國旅行社協會副會長、秘書長孫桂珍出席并致辭&#xff0c;中國工程院外籍院士、具身智能機器人專家張建偉、北京第二外國語學院旅…

Linux之Zabbix分布式監控篇(一)

一、概念和特點概念Zabbix是一款開源、免費的監控軟件 主要用于7*24*365實時監控網絡設置&#xff0c;操作系統&#xff0c;應用程序&#xff0c;網絡帶寬等資源的運行狀態&#xff0c;并且一旦發生異常能夠第一時間個SA管理員發送報警信息特點Zabbix是c/s結構&#xff0c;有c…

ZYNQ千兆光通信實戰:Tri Mode Ethernet MAC深度解析

—— 從硬件設計到Linux驅動的光通信創新實踐** 當ZYNQ遇上光通信 在工業控制、醫療成像和航空航天等領域,抗干擾、長距離傳輸的光通信技術至關重要。Xilinx ZYNQ-7000系列憑借ARM+FPGA的架構,結合Tri Mode Ethernet MAC (TEMAC) 核心,為千兆光通信提供了完美解決方案。本文…

求不重疊區間總和最大值

例題鏈接&#xff1a;1051-習題-數學考試_2021秋季算法入門班第一章習題&#xff1a;模擬、枚舉、貪心 來源&#xff1a;牛客網 時間限制&#xff1a;C/C/Rust/Pascal 1秒&#xff0c;其他語言2秒 空間限制&#xff1a;C/C/Rust/Pascal 32 M&#xff0c;其他語言64 M 64bit …

【Golang】GORM - GEN工具 快速開始

文章目錄建項目建庫建表main.gouser.gocompany.go生成效果&#xff08;更進一步&#xff09;自定義dynamic SQL實踐官方地址&#xff1a;https://gorm.io/zh_CN/gen/index.html 以mysql為例 建項目 go mod init 項目名稱 go mod tidy建庫建表 建數據庫demo&#xff0c;正常…

飛書 “打破” AI 與協同辦公的「黑箱」

文 | 智能相對論作者 | 陳泊丞在協同辦公領域&#xff0c;自從有了AI&#xff0c;微軟、釘釘、Google Workspace、Salesforce、企業微信、飛書等廠商都試圖通過深度整合AI技術&#xff0c;從智能會議、內容創作、數據管理等場景重構辦公范式。微軟通過Microsoft 365 Copilot將A…

leetcode:674. 最長連續遞增序列[動歸]

學習要點 練習動歸注意不要馬虎 題目鏈接 674. 最長連續遞增序列 - 力扣&#xff08;LeetCode&#xff09; 題目描述 解法&#xff1a;動歸 class Solution { public:int findLengthOfLCIS(vector<int>& nums) {int n nums.size();if(nums.size() < 1) …

【html常見頁面布局】

考拉商城界面效果htmlcss效果 html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</ti…

摩爾線程MUSA架構深度調優指南:從CUDA到MUSA的顯存訪問模式重構原則

點擊 “AladdinEdu&#xff0c;同學們用得起的【H卡】算力平臺”&#xff0c;H卡級別算力&#xff0c;按量計費&#xff0c;靈活彈性&#xff0c;頂級配置&#xff0c;學生專屬優惠。 當國產GPU面臨生態壁壘&#xff0c;顯存訪問效率成為性能突破的關鍵戰場。本文將深入揭示摩爾…

2025江蘇省信息安全管理與評估賽項二三階段任務書

任務 3 網絡安全事件響應、數字取證調查、網絡安全滲透任務3.1&#xff1a;網絡安全事件響應&#xff08;100分&#xff09;X集團的一臺存儲關鍵信息的服務器遭受到了黑客的攻擊&#xff0c;現在需要你對該服務器進行應急排查&#xff0c;該服務器的系統目錄被上傳惡意文件&…

核電概念盤中異動,中核科技漲停引領板塊熱度

今日股市交易時段&#xff0c;核電概念板塊表現活躍&#xff0c;中核科技強勢漲停&#xff0c;成為市場關注焦點&#xff0c;為核電產業鏈相關投資與發展增添新的動態信號。中核科技作為核電閥門等關鍵設備領域的重要企業&#xff0c;其漲停背后&#xff0c;是多重因素共同作用…

《Java語言程序設計》1.2.3復習題

縮寫"CPU"代表什么含義?測量CPU速度的單位是什么?中央處理器(Central Processing Unit,CPU)是計算機的大腦。它從內存中獲取指令并執行這些指令。CPU通常由兩部分組成&#xff1a;控制單元(control unit)和算術/邏輯單元(arithmetic/logic unit)。控制單元用于控制…

【迭代】繪本生成方案迭代2,解決錄音播放問題

代碼分享】AI輔助編程&#xff1a;動手制作繪本生成器&#xff0c;實現繪本自由 前面分享了生成繪本PDF的方案&#xff0c;只有圖片和文字。所以想加上文字的錄音播放。 經過一番探索&#xff0c;發現要實現這個功能的可行性高的方案是用戶點擊播放&#xff0c;需要跳轉到瀏覽…

C++設計模式之創建型模式

1.前言 設計模式一共有23種&#xff0c;主要分為三大類型&#xff1a;創建型&#xff0c;結構型&#xff0c;行為型。本篇文章著重講解的是創建型一些相關的設計模式 2.單例模式 Singleton 模式是設計模式中最為簡單、最為常見、最容易實現&#xff0c;也是最應該熟悉和掌握的…

kubernetes學習筆記(一)

kubernetes學習筆記(一) kubernetes簡介 ? Kubernetes是Google開源的一個容器編排引擎&#xff0c;它支持自動化部署、大規模可伸縮、應用容器化管理。在生產環境中部署一個應用程序時&#xff0c;通常要部署該應用的多個實例以便對應用請求進行負載均衡。 ? 在Kubernetes…

Eureka實戰

1.創建父工程SpringCloudTestSpringCloudTest為父工程&#xff0c;用于引入通用依賴&#xff0c;如spring-boot-starter-web、lombok&#xff0c;這樣子工程就可以直接繼承&#xff0c;無需重復引入。在dependencyManagement標簽中引入和springboot版本對應的springcloud&#…

如何把鏡頭對焦在超焦距上

要把鏡頭對焦在超焦距上&#xff0c;可以按照以下步驟操作&#xff1a;1. 計算超焦距 首先需要知道你的鏡頭參數和相機參數&#xff1a; 焦距 f&#xff08;如 24mm、35mm&#xff09;光圈 N&#xff08;如 f/8、f/11&#xff09;容許彌散圓直徑 c&#xff08;與傳感器尺寸有關…

idea docker插件連接docker失敗

報錯org.apache.hc.client5.http.HttpHostConnectException:Connect to http://localhost:2375 [localhost/127.0.0.1, localhost/0:0:0:o:0:0:0:1] failed:Connection refused:getsockopt解決方法&#xff1a;

【后端】.NET Core API框架搭建(6) --配置使用MongoDB

目錄 1.添加包 2. 連接配置 2.1.鏈接字符串 2.2.連接類 3.倉儲配置 3.1.倉儲實現 3.2.倉儲接口 4.獲取配置和注冊 4.1.添加配置獲取方法 4.2.注冊 5.常規使用案例 5.1實體 5.2.實現 5.3.接口 5.4.控制器 NET Core 應用程序中使用 MongoDB 有許多好處&#xff0c;尤其是在…