Vue组件封装:基于Vue3+wangeditor富文本组件二次封装

这篇具有很好参考价值的文章主要介绍了Vue组件封装:基于Vue3+wangeditor富文本组件二次封装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.简介

        开源 Web 富文本编辑器,开箱即用,配置简单。一个产品的价值,就在于解决用户的问题,提高效率、降低成本、增加稳定性和扩展性。wangEditor 不是为了做而做,也不是单纯的模仿谁,而是经过上述问题分析之后,给出一个系统的解决方案。旨在真正去解决用户的问题,产出自己的价值。更多资料见官网地址:https://www.wangeditor.com/。

2.安装

安装 editor

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

 安装 React 组件(可选)

yarn add @wangeditor/editor-for-react
# 或者 npm install @wangeditor/editor-for-react --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

 CDN

<!-- 引入 css -->
<link href="https://unpkg.com/@wangeditor/editor@latest/dist/css/style.css" rel="stylesheet">

<!-- 引入 js -->
<script src="https://unpkg.com/@wangeditor/editor@latest/dist/index.js"></script>
<script>
    var E = window.wangEditor; // 全局变量
</script>

 3.封装代码

 ./index.vue

 1 <template>
 2   <div class="v-rich-text">
 3     <div v-if="isSplitTool" :id="toolId" class="toolbar-container"></div>
 4     <div v-if="isSplitTool" :id="textId" class="text-container"></div>
 5     <div v-if="!isSplitTool" :id="textId"></div>
 6   </div>
 7 </template>
 8 
 9 <script lang="ts">
10 import { onMounted, onBeforeUnmount, ref, toRefs, watch } from "vue";
11 import WangEditor from "wangeditor";
12 import { basicProps } from "./props";
13 
14 export default {
15   name: "VRichText",
16   props: basicProps,
17   emits: ["change", "update:content"],
18   setup(props, { emit }) {
19     const { toolId, textId, content, isSplitTool } = toRefs(props);
20     let instance: any;
21     const textContent = ref(content.value);
22 
23     watch(
24       () => props.content,
25       (nv) => {
26         if (nv !== instance.txt.html()) {
27           instance.txt.html(nv);
28           textContent.value = nv;
29         }
30       }
31     );
32 
33     onMounted(() => {
34       if (isSplitTool.value) {
35         instance = new WangEditor("#" + toolId.value, "#" + textId.value);
36       } else {
37         instance = new WangEditor("#" + textId.value);
38       }
39       Object.assign(instance.config, {
40         uploadImgShowBase64: true,
41         showFullScreen: false,
42         zIndex: 100,
43         focus: false,
44         onchange() {
45           emit("update:content", instance.txt.html());
46           emit("change", instance.txt.html());
47         },
48 
49     onBeforeUnmount(() => {
50       instance.destroy();
51       instance = null;
52     });
53 
54     return {
55       toolId,
56       textId,
57       textContent,
58       isSplitTool,
59     };
60   },
61 };
62 </script>
63 
64 <style lang="scss" scoped>
65 .v-rich-text {
66   height: 100%;
67   display: flex;
68   flex-direction: column;
69 
70   .text-container {
71     flex: 1;
72     height: 0;
73   }
74 }
75 </style>
76 

  ./props.ts

 1 export const basicProps = {
 2   // 工具栏ID
 3   toolId: {
 4     type: String,
 5     default: "toolbar-container",
 6   },
 7   // 内容ID
 8   textId: {
 9     type: String,
10     default: "text-container",
11   },
12   // 富文本内容
13   content: String,
14   // 是否拆分tool栏
15   isSplitTool: {
16     type: Boolean,
17     default: true,
18   },
19 };

 文章来源地址https://www.toymoban.com/news/detail-844268.html

 4.组件展示

Vue组件封装:基于Vue3+wangeditor富文本组件二次封装

 

到了这里,关于Vue组件封装:基于Vue3+wangeditor富文本组件二次封装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue3使用富文本框(wangeditor)

    毕业涉及中使用到了富文本框,所以学习使用了wangeditor富文本框,现进行总结 1.安装 2.配置wangeditor组件(src/components/wangeditor.vue) 3.父组件中

    2024年02月15日
    浏览(41)
  • vue3项目使用富文本编辑器-wangeditor

    1.下载依赖 2.插件版本  3.使用 引入css和组件 配置方法 模板(标签)中插入 效果  

    2024年02月09日
    浏览(64)
  • Vue3学习(二十)- 富文本插件wangeditor的使用

    学习、写作、工作、生活,都跟心情有很大关系,甚至有时候我更喜欢一个人独处,戴上耳机coding的感觉。 明显现在的心情,比中午和上午好多了,心情超棒的,靠自己解决了两个问题: 新增的时候点击 TreeSelect 控件控制台会给出报错 分类新增和编辑时,报错父类和电子书

    2024年03月09日
    浏览(40)
  • vue3 wangeditor/editor富文本使用和编辑

    第一步:安装 第二步:使用 最终效果图: 第四:工具栏配置 进入官方demo:https://www.wangeditor.com/demo/index.html 打开之后,按F12在控制台输入 toolbar.getConfig()  查看工具栏的默认配置。  如果有不需要的工具栏项,可以在  toolbarConfig.excludeKeys 中配置

    2024年01月21日
    浏览(51)
  • vue3 基于element plus对el-pagination进行二次封装

    在vue3项目中,如果每个列表页都敲一遍分页方法,显然是不合理的,那么,下面我将基于element plus对el-pagination进行二次封装,使用vue3语法糖格式,废话不多说,开干。

    2024年02月12日
    浏览(48)
  • uniapp富文本编辑-editor-vue2-vue3-wangeditor

    不管vue2还是vue3,都推荐官方的editor组件, 官方手册 https://uniapp.dcloud.net.cn/component/editor.html 除了“ 微信小程序 ”,其他小程序想要使用editor组件实现富文本编辑,很难 ​​​​​​​ 第三方组件wangeditor在vue2,vue3在H5表现都很好,但是app环境下直接报错 reportJSException excep

    2024年03月10日
    浏览(53)
  • 基于Vue+wangeditor实现富文本编辑

    一个网站需要富文本编辑器功能的原因有很多,以下是一些常见的原因: 方便用户编辑内容:富文本编辑器提供了类似于Office Word的编辑功能,使得那些不太懂HTML的用户也能够方便地编辑网站内容。 提高用户体验:富文本编辑器注重用户体验,具有轻量、可定制等特点,使

    2024年02月14日
    浏览(43)
  • 基于 Vue3 + Webpack5 + Element Plus Table 二次构建表格组件

    基于 Vue3 + Webpack5 + Element Plus Table 二次构建表格组件,开箱即用 A Vue 3.x Table Component built on Webpack 5 该组件库可供学习、参考和用于二次开发。 1.基于 Webpack 5 构建 2.全面支持 Vue 3 3.支持 JSON 序列化表格快速配置 4.已内置 Pagination 分页 5.支持自定义 prop 列名 6.支持单元格内容自

    2024年04月13日
    浏览(84)
  • Vue3 代码块高亮显示并可使用富文本编辑器编辑(highlight.js + wangEditor)

    在Vue项目中实现以下功能:   功能1. 在页面中显示代码,并将其中的高亮显示。   功能2. 允许对代码块进行编辑,编辑时代码也高亮显示。   功能3. 可在编辑器中添加多个代码块,动态渲染代码高亮。   Step1: 安装所需插件(本文使用npm安装,若需

    2023年04月21日
    浏览(48)
  • vue3+elementplus基于el-table-v2封装公用table组件

    主要是针对表格进行封装,不包括查询表单和操作按钮。 梳理出系统中通用表格的功能项,即表格主体的所有功能,生成columns列头数据、生成data表体数据、拖拉列宽、分页、生成中文列名、自定义列宽width 效果如下: 父级引用: 父组件: 子组件: 子组件: 父组件: 以上

    2024年02月10日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包