日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Vue3問題:如何使用WangEditor富文本?能自定義才是真的會用!

來源: 責(zé)編: 時間:2023-12-01 17:14:34 242觀看
導(dǎo)讀一、需求分析,問題描述1、需求使用富文本進行內(nèi)容編輯,要求自定義工具欄菜單順序及其分組,并且要求自定義選擇圖片、自定義選擇視頻。2、問題如何配置開始使用?如何自定義工具欄菜單的展示?如何自定義工具欄內(nèi)置菜單的功能

v6K28資訊網(wǎng)——每日最新資訊28at.com

一、需求分析,問題描述

1、需求

使用富文本進行內(nèi)容編輯,要求自定義工具欄菜單順序及其分組,并且要求自定義選擇圖片、自定義選擇視頻。v6K28資訊網(wǎng)——每日最新資訊28at.com

v6K28資訊網(wǎng)——每日最新資訊28at.com

2、問題

  • 如何配置開始使用?
  • 如何自定義工具欄菜單的展示?
  • 如何自定義工具欄內(nèi)置菜單的功能?
  • 如何自定義擴展新功能菜單?

二、解決問題,答案速覽

實現(xiàn)代碼如下,復(fù)制粘貼即可直接使用。v6K28資訊網(wǎng)——每日最新資訊28at.com

如果你有時間,具體問題梳理、代碼分析、知識總結(jié),可見第三部分。v6K28資訊網(wǎng)——每日最新資訊28at.com

1、配置開始使用

(1)下載依賴

npm i @wangeditor/editor @wangeditor/editor-for-vue

(2)引入css和內(nèi)置組件

// 引入 cssimport '@wangeditor/editor/dist/css/style.css' // 引入 組件import { Editor, Toolbar } from '@wangeditor/editor-for-vue'// 引入 接口類型import { IDomEditor, IEditorConfig } from "@wangeditor/editor";

(3)使用

<template><div style="border: 1px solid #ccc"><Toolbarstyle="border-bottom: 1px solid #ccc":editor="editorRef":defaultConfig="toolbarConfig":mode="mode"/><Editorstyle="height: 500px; overflow-y: hidden;"v-model="valueHtml":defaultConfig="editorConfig":mode="mode"@onCreated="handleCreated"/></div></template><script lang="ts" setup>import "@wangeditor/editor/dist/css/style.css";import { Editor, Toolbar } from "@wangeditor/editor-for-vue";import { IDomEditor, IEditorConfig } from "@wangeditor/editor";import { onBeforeUnmount, ref, shallowRef, onMounted } from 'vue'// 編輯器實例,必須用 shallowRefconst editorRef = shallowRef()// 內(nèi)容 HTMLconst valueHtml = ref('<p>hello</p>')// 模擬 ajax 異步獲取內(nèi)容onMounted(() => {setTimeout(() => {valueHtml.value = '<p>模擬 Ajax 異步設(shè)置內(nèi)容</p>'}, 1500)})// 工具欄配置const toolbarConfig = {toolbarKeys: []}// 編輯器配置const editorConfig = { placeholder: '請輸入內(nèi)容...',MENU_CONF: {}}// 組件銷毀時,也及時銷毀編輯器onBeforeUnmount(() => {const editor = editorRef.valueif (editor == null) returneditor.destroy()})// 組件創(chuàng)建時const handleCreated = (editor) => {editorRef.value = editor // 記錄 editor 實例,重要!}</script>

2、自定義工具欄菜單的展示

工具欄菜單的展示,如菜單的順序和分組、添加刪除。v6K28資訊網(wǎng)——每日最新資訊28at.com

如果想要自定義,只需修改工具欄配置對象的toolbarKeys屬性。toolbarKeys屬性值是一個數(shù)組,內(nèi)部填寫菜單的key,使用官方API接口editor.getAllMenuKeys()可查詢?nèi)績?nèi)置菜單的key。v6K28資訊網(wǎng)——每日最新資訊28at.com

// 工具欄配置const toolbarConfig = {toolbarKeys: [// 一些常用的菜單 key'bold', // 加粗'italic', // 斜體'through', // 刪除線'underline', // 下劃線'bulletedList', // 無序列表'numberedList', // 有序列表'color', // 文字顏色'insertLink', // 插入鏈接'fontSize', // 字體大小'lineHeight', // 行高'uploadImage', // 上傳圖片'uploadVideo',//上傳視頻'delIndent', // 縮進'indent', // 增進'deleteImage',//刪除圖片'divider', // 分割線'insertTable', // 插入表格'justifyCenter', // 居中對齊'justifyJustify', // 兩端對齊'justifyLeft', // 左對齊'justifyRight', // 右對齊'undo', // 撤銷'redo', // 重做'clearStyle', // 清除格式'fullScreen' // 全屏]}

3、自定義工具欄內(nèi)置菜單的功能

工具欄菜單的功能,如鏈接、上傳圖片、上傳視頻。v6K28資訊網(wǎng)——每日最新資訊28at.com

如果想要自定義,只需修改編輯器配置對象的MENU_CONF屬性。不同的功能都對應(yīng)著不同的MENU_CONF屬性值,這里我以問題提出者的問題為示例,具體請參考官方文檔,寫的非常不錯的,放下面吧。v6K28資訊網(wǎng)——每日最新資訊28at.com

v6K28資訊網(wǎng)——每日最新資訊28at.com

https://www.wangeditor.com/v5/menu-config.html.v6K28資訊網(wǎng)——每日最新資訊28at.com

// 編輯器配置const editorConfig = { placeholder: '請輸入內(nèi)容...',MENU_CONF: {// 上傳圖片uploadImage: {// 自定義選擇圖片async customBrowseAndUpload(insertFn: InsertFnType) {// 打開圖片素材庫photoGalleryDialogVisible.value = true},},// 上傳視頻uploadVideo: {// 自定義選擇視頻async customBrowseAndUpload(insertFn: InsertFnType) {// 打開視頻素材庫videoGalleryDialogVisible.value = true},}, }}

4、自定義擴展新功能菜單

(1)定義菜單class

目前可以自定義擴展的功能菜單有按鈕、下拉、下拉面板、模態(tài)框。v6K28資訊網(wǎng)——每日最新資訊28at.com

新建myButtonMenu.ts文件,把下面代碼放進去。v6K28資訊網(wǎng)——每日最新資訊28at.com

import { IButtonMenu, IDomEditor } from '@wangeditor/editor'class MyButtonMenu implements IButtonMenu { // TS 語法// class MyButtonMenu { // JS 語法constructor() {this.title = 'My menu title' // 自定義菜單標題// this.iconSvg = '<svg>...</svg>' // 可選this.tag = 'button'}// 獲取菜單執(zhí)行時的 value ,用不到則返回空 字符串或 falsegetValue(editor: IDomEditor): string | boolean { // TS 語法// getValue(editor) { // JS 語法return ' hello '}// 菜單是否需要激活(如選中加粗文本,“加粗”菜單會激活),用不到則返回 falseisActive(editor: IDomEditor): boolean { // TS 語法// isActive(editor) { // JS 語法return false}// 菜單是否需要禁用(如選中 H1 ,“引用”菜單被禁用),用不到則返回 falseisDisabled(editor: IDomEditor): boolean { // TS 語法// isDisabled(editor) { // JS 語法return false}// 點擊菜單時觸發(fā)的函數(shù)exec(editor: IDomEditor, value: string | boolean) { // TS 語法// exec(editor, value) { // JS 語法if (this.isDisabled(editor)) returneditor.insertText(value) // value 即 this.value(editor) 的返回值}}

(2)注冊和插入菜單

定義菜單key時,要保證key唯一,不能和內(nèi)置菜單key重復(fù)。插入菜單時,將對應(yīng)的菜單key放在toolbarKeys想要的順序位置即可。v6K28資訊網(wǎng)——每日最新資訊28at.com

import { Boot } from '@wangeditor/editor'import MyButtonMenu from './myButtonMenu'// 工具欄配置const toolbarConfig = {toolbarKeys: [// 插入菜單key'menu1',]}// 組件創(chuàng)建時const handleCreated = (editor: IDomEditor) => {editorRef.value = editor;const menu1Conf = {key: 'menu1', // 定義 menu key :要保證唯一、不重復(fù)(重要)factory() {return new MyButtonMenu() // 替換為你菜單的 class},}// 注冊菜單Boot.registerMenu(menu1Conf)};

三、問題解析,知識總結(jié)

1、如何配置開始使用?

補充幾點注意事項吧,這也是官方提醒:v6K28資訊網(wǎng)——每日最新資訊28at.com

  • editorRef 必須用 shallowRef定義。具體原因待研究,用ref似乎也行。
  • 組件銷毀時,要及時銷毀編輯器。

2、如何自定義工具欄菜單的展示?

這里補充幾個官方API:v6K28資訊網(wǎng)——每日最新資訊28at.com

  • editor.getAllMenuKeys() 查詢編輯器注冊的所有菜單 key (可能有的不在工具欄上)
  • toolbar.getConfig().toolbarKeys 查看當前菜單排序和分組
  • 這塊其它API挺雞肋的,不用看了就,寫上搞得代碼很亂,直接在工具欄配置對象里操作就好了,比較清晰,自我感覺哈。
import { DomEditor } from '@wangeditor/editor'const toolbar = DomEditor.getToolbar(editor)const toolbarConfig = toolbar.getConfig()// 查看當前菜單排序和分組console.log( toolbarConfig.toolbarKeys )

3、如何自定義工具欄內(nèi)置菜單的功能?

這里有通用的操作,參考官方,分兩步實現(xiàn):v6K28資訊網(wǎng)——每日最新資訊28at.com

v6K28資訊網(wǎng)——每日最新資訊28at.com

4、如何自定義擴展新功能菜單?

這里官方提供了三處參考:定義新菜單、定義插件、定義新元素。v6K28資訊網(wǎng)——每日最新資訊28at.com

我認為定義新菜單是比較常用的,這樣其實已經(jīng)就很靈活了。至于其他兩項有需求的朋友,可以自行研究一番,可能比較燒哈。v6K28資訊網(wǎng)——每日最新資訊28at.com

v6K28資訊網(wǎng)——每日最新資訊28at.com

最后插一句,WangEditor這個庫,寫的真是挺不錯的!v6K28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-35876-0.htmlVue3問題:如何使用WangEditor富文本?能自定義才是真的會用!

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 深入了解 React Fiber:應(yīng)用與源碼實現(xiàn)

下一篇: 如何有效使用Java并發(fā)Atomic包的原子類型

標簽:
  • 熱門焦點
  • 讓我們一起聊聊文件的操作

    文件【1】文件是什么?文件是保存數(shù)據(jù)的地方,是數(shù)據(jù)源的一種,比如大家經(jīng)常使用的word文檔、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存數(shù)據(jù),它既可以保
  • 19個 JavaScript 單行代碼技巧,讓你看起來像個專業(yè)人士

    今天這篇文章跟大家分享18個JS單行代碼,你只需花幾分鐘時間,即可幫助您了解一些您可能不知道的 JS 知識,如果您已經(jīng)知道了,就當作復(fù)習(xí)一下,古人云,溫故而知新嘛。現(xiàn)在,我們就開始今
  • 慕巖炮轟抖音,百合網(wǎng)今何在?

    來源:價值研究所 作者:Hernanderz&ldquo;難道就因為自己的一個產(chǎn)品牛逼了,從客服到總裁,都不愿意正視自己產(chǎn)品和運營上的問題,選擇逃避了嗎?&rdquo;這一番話,出自百合網(wǎng)聯(lián)合創(chuàng)
  • 阿里大調(diào)整

    來源:產(chǎn)品劉有媒體報道稱,近期淘寶天貓集團啟動了近年來最大的人力制度改革,涉及員工績效、層級體系等多個核心事項,目前已形成一個初步的&ldquo;征求意見版&rdquo;:1、取消P序列
  • 重估百度丨大模型,能撐起百度的“今天”嗎?

    自象限原創(chuàng) 作者|程心 羅輯2023年之前,對于自己的&ldquo;今天&rdquo;,百度也很迷茫。&ldquo;新業(yè)務(wù)到 2022 年底還是 0,希望 2023 年出來一個 1。&rdquo;這是2022年底,李彥宏
  • 攜眾多高端產(chǎn)品亮相ChinaJoy,小米帶來一場科技與人文的視聽盛宴

    7月28日,全球數(shù)字娛樂領(lǐng)域最具知名度與影響力的年度盛會中國國際數(shù)碼互動娛樂展覽會(簡稱ChinaJoy)在上海新國際博覽中心盛大開幕。作為全球領(lǐng)先的科
  • 三星顯示已開始為AR設(shè)備研發(fā)硅基LED微顯示屏

    7月18日消息,據(jù)外媒報道,隨著蘋果首款頭顯產(chǎn)品Vision Pro在6月份正式推出,AR/VR/MR等頭顯產(chǎn)品也就將成為各大公司下一個重要的競爭領(lǐng)域,對顯示屏這一關(guān)
  • iQOO 11S新品發(fā)布會

    iQOO將在7月4日19:00舉行新品發(fā)布會,推出杭州亞運會電競賽事官方用機iQOO 11S。
  • 英特爾Xe-HP項目終止,將專注Xe-HPC/HPG系列顯卡

    據(jù)10 月 31 日消息報道,英特爾高級副總裁兼加速計算系統(tǒng)和圖形事業(yè)部總經(jīng)理 表示,Xe-HP“ Arctic Sound” 系列服務(wù)器 GPU 已經(jīng)應(yīng)用于 oneAPI devcloud 云服
Top 主站蜘蛛池模板: 武乡县| 鱼台县| 洞口县| 太仆寺旗| 湖南省| 买车| 陆良县| 梁河县| 扶余县| 鲁甸县| 泉州市| 革吉县| 平原县| 宁国市| 海门市| 拉萨市| 炎陵县| 精河县| 富锦市| 丰原市| 新民市| 宜都市| 长宁县| 梓潼县| 东乌| 海安县| 洪雅县| 岳普湖县| 伊宁市| 漾濞| 广水市| 莎车县| 石河子市| 慈利县| 平和县| 凌海市| 六枝特区| 常德市| 白银市| 莱芜市| 汤原县|