vue前端富文本框使用(wangeditor富文本框)

2024-06-04 6222阅读

        前端开发离不开富文本,尤其是在后台管理系统开发中更少不了富文本的使用,目前插件市场上有很多富文本框,功能也是万花齐放,今天就简单介绍一个能满足大部分需求的富文本编辑器===》wangeditor富文本编辑器,首先就是它功能能满足日常使用需求,而且也比较简单,接下来简单介绍一下使用方法:

第一步:使用node引入wangeditor富文本编辑器插件

  • npm install wangeditor

    第二步:创建富文本编辑器组件;我们自己在二次封装一下该组件方便使用

            a.在组件components内定义文件QuillEditor.vue文件

            b.QuillEditor.vue文件代码

      
          
          
      
    
    
    import '@wangeditor/editor/dist/css/style.css' //引入富文本插件全局样式
    import { onBeforeUnmount, ref, shallowRef } from 'vue' //引入vue3组件内容
    import { Editor, Toolbar } from '@wangeditor/editor-for-vue' //引入富文本组件
    import request from '@/http/request' //引入的全局的请求axios,引入这个主要是在富文本内插入图片以及视频时使用
    import { ElMessage } from 'element-plus' //消息提示组件,也可以自己定义,主要是错误提示时使用
    export default {
    components: { Editor, Toolbar },
    props: {
      content: {
        type: String,
        default: ""   //富文本的内容输入
      }
    },
    //监听父组件传来的内容,主要是富文本内容回显(注意,这儿传入的内容必须是html格式,不然富文本识别不了)
    watch: {
      content: {
          handler(value) {
            this.valueHtml = value;
          },
          deep: true,
          immediate:true
      }
    },
    setup() {
      // 编辑器实例,必须用 shallowRef
      const editorRef = shallowRef()
      // 内容 HTML
      const valueHtml = ref("")
      //工具栏配置项,具体配置可去官网查看详细
      const toolbarConfig = {
      }
      //编辑框配置项
      const editorConfig = { 
        placeholder: '请输入正文...',
        readOnly: false, //设置只读模式
        scroll: true, //是否支持滑动
        maxLength: 20000,
        MENU_CONF: {}
      }
      //自定义图片上传(这个上传文件接口是我自己写的,上传成功后会返回一个文件地址url作为内容回显)
      editorConfig.MENU_CONF['uploadImage'] = {
        async customUpload(file, insertFn) {
          request("/api/sys/uploadFile","POST",{"file":file},{'Content-Type':'multipart/form-data'}).then(res=>{
            if(res.data.status==="ok") {
              const alt = ""; //图片介绍
              const href = ""; //图片链接
              insertFn(res.data.data, alt, href) //文件URL回显在富文本内方法
            }else {
              //错误消息提示,可自定
              ElMessage({
                type: "error",
                message: res.data.data
              })
            }
          })
         }  
      }
      //自定义视频上传(这个上传文件接口是我自己写的,上传成功后会返回一个文件地址url作为内容回显)
      editorConfig.MENU_CONF['uploadVideo'] = {
        async customUpload(file, insertFn) {  
          request("/api/sys/uploadFile","POST",{"file":file},{'Content-Type':'multipart/form-data'}).then(res=>{
            if(res.data.status==="ok") {
              const poster = ""; //视频封面链接
              insertFn(res.data.data, poster) //文件URL回显在富文本内方法
            }else {
              //错误消息提示,可自定
              ElMessage({
                type: "error",
                message: res.data.data
              })
            }
          })
        }
      }
      // 组件销毁时,也及时销毁编辑器
      onBeforeUnmount(() => {
          const editor = editorRef.value;
          if (editor == null) return;
          editor.destroy();
      })
      const handleCreated = (editor) => {
        editorRef.value = editor // 记录 editor 实例,重要!
      }
      return {
        editorRef,
        valueHtml,
        mode: 'default', // 或 'simple'
        toolbarConfig,
        editorConfig,
        handleCreated
      };
    },methods: {
        //获取数据且向父组件传值
        getData() {
          this.$emit("contentData",this.valueHtml)
        }
      }
    }
    
    
    .quillEditor {
      width: 600px;
      border: 1px solid #ccc !important;
    .toolbar-style {
      border-bottom: 1px solid #ccc !important;
      }
    .editor-style {
      height: 400px !important;
      overflow-y: hidden !important;
      }
    }
    

    第三步:页面使用;可以直接在要使用页面引入该组件或者全局注册该组件

    下面是我直接在页面中引入方法使用:

        
            
        
    
    
    import QuillEditor from '@/components/QuillEditor.vue'
    export default {
        components: {UploadImg,QuillEditor},
        data() {
            return {
                textContent: "", //传入子组件回显内容,必须是html格式内容
                
            }
        },methods: {
            
            //富文本内容输出
           getPrivacyAgreement(val) {
                console.log(val)
            }
        }
    }
    

    使用效果:

    vue前端富文本框使用(wangeditor富文本框) 第1张


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]