当前位置: 首页 > news >正文

wangEditor 富文本编辑(粘贴即用)

参考: wangEditor 官方文档

安装 wangEditor

npm install @wangeditor/editor @wangeditor/editor-for-vue@next 

wangEditor 组件封装

<!-- src/components/WangEditor/index.vue -->
<template><div style="border: 1px solid #ccc"><!-- 工具栏 --><Toolbar:editor="editorRef":defaultConfig="toolbarConfig"style="border-bottom: 1px solid #ccc":mode="mode"/><!-- 编辑器 --><Editor:defaultConfig="editorConfig"v-model="defaultHtml"@onChange="handleChange"style="height: 500px; overflow-y: hidden":mode="mode"@onCreated="handleCreated"/></div>
</template><script setup lang="ts">
import { Editor, Toolbar } from "@wangeditor/editor-for-vue";// API 引用
import { uploadFileApi } from "@/api/file";const props = defineProps({modelValue: {type: [String],default: "",},
});const emit = defineEmits(["update:modelValue"]);const defaultHtml = useVModel(props, "modelValue", emit);const editorRef = shallowRef(); // 编辑器实例,必须用 shallowRef
const mode = ref("default"); // 编辑器模式
const toolbarConfig = ref({}); // 工具条配置
// 编辑器配置
const editorConfig = ref({placeholder: "请输入内容...",MENU_CONF: {uploadImage: {// 自定义图片上传async customUpload(file: any, insertFn: any) {uploadFileApi(file).then((response) => {const url = response.data.url;insertFn(url);});},},},
});const handleCreated = (editor: any) => {editorRef.value = editor; // 记录 editor 实例,重要!
};function handleChange(editor: any) {emit("update:modelValue", editor.getHtml());
}// 组件销毁时,也及时销毁编辑器
onBeforeUnmount(() => {const editor = editorRef.value;if (editor == null) return;editor.destroy();
});
</script><style src="@wangeditor/editor/dist/css/style.css"></style>
//安装下载的引入样式

使用案例

<!-- wangEditor富文本编辑器示例 -->
<script setup lang="ts">
import Editor from '@/components/WangEditor/index.vue';
const value = ref('初始内容');
</script><template><div class="app-container"><editor v-model="value" style="height: 600px" /></div>
</template>

相关文章:

  • uniapp H5、小程序、APP端自定义不同运行环境(开发、测试、生产)、自定义条件编译平台、以及动态修改manifest.json值讲解
  • ubuntu编译sqlite3并使用
  • 关于用css设置input输入框hover的时候的样式以及当input为disabled的时候,不要让hover样式生效
  • Python——常见内置模块
  • 【Linux】第二十站:模拟实现shell
  • 《向量数据库指南》——向量数据库Milvus Cloud搭建Excel公式编辑器助手
  • 如何打造“面向体验”的音视频能力——对话火山引擎王悦
  • vivado产生报告阅读分析24-读取和解释时序路径特性报告
  • MyBatis-Plus简介和入门操作
  • 哈希思想的应用
  • JAVA编程规范-集合、并发(阿里手册)
  • RabbitMQ 搭建和工作模式
  • <HarmonyOS第一课>1·运行Hello World【课后考核】
  • C++中声明共用体
  • MySQL执行计划分析
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • HTTP--网络协议分层,http历史(二)
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • Java小白进阶笔记(3)-初级面向对象
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Magento 1.x 中文订单打印乱码
  • MySQL-事务管理(基础)
  • Netty 4.1 源代码学习:线程模型
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • Redis 懒删除(lazy free)简史
  • Vim 折腾记
  • Vue学习第二天
  • 阿里云前端周刊 - 第 26 期
  • 飞驰在Mesos的涡轮引擎上
  • 给初学者:JavaScript 中数组操作注意点
  • 简单数学运算程序(不定期更新)
  • 力扣(LeetCode)56
  • 聊聊redis的数据结构的应用
  • 聊聊sentinel的DegradeSlot
  • 如何用vue打造一个移动端音乐播放器
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 移动端 h5开发相关内容总结(三)
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 字符串匹配基础上
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • ​Java并发新构件之Exchanger
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • ​ubuntu下安装kvm虚拟机
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • (8)STL算法之替换
  • (JS基础)String 类型
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (二)Linux——Linux常用指令
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • ***php进行支付宝开发中return_url和notify_url的区别分析