美文网首页
在vue中使用tinymce编辑器

在vue中使用tinymce编辑器

作者: xuehairong | 来源:发表于2020-10-29 16:03 被阅读0次

    TinyMCE插件安装

    vue3安装方法参考 https://www.tiny.cloud/blog/tinymce-vue-3-support/

    1.安装 tinymce官方的 tinymce-vue 组件

    npm install @tinymce/tinymce-vue -S
    
    1. 如果有购买 tinymce 的服务,可以参考 tinymce-vue 的说明,通过 api-key 直接使用 tinymce
      若没有注册、购买过服务,就直接下载TinyMCE。
    npm install tinymce -S
    
    1. 安装成功之后,在node_modules目录中,查找tinymce/skins目录,将skins目录拷贝到static/tinymce目录下。
    2. 下载中文的语言包。并复制到static/tinymce目录下。

    初始化

    1. 引入文件
    import tinymce from 'tinymce/tinymce'
    import editor from '@tinymce/tinymce-vue'
    import 'tinymce/themes/silver/theme'
    import 'tinymce/icons/default/icons'
    import 'tinymce/skins/ui/oxide/skin.css';//这里很重要,不引编辑器出不来
    
    1. tinymce-vue是组件,需要在components中注册,才能使用。
    <editor v-model="myValue" :init="init"></editor>
    
    1. init是初始化配置项,具体API请参考官方文档
    init: {  
            language_url: '/static/tinymce/zh_CN.js',  
            language: 'zh_CN',  
            height: 300,   
            content_css:'/static/tinymce/skins/content/default/content.css',//这个也加上,不然会报错
            branding: false,  
            menubar: false,  
       }
    

    自定义按钮

    1. init里配置setup
    init: {
            language_url: "/static/tinymce/zh_CN.js",
            language: "zh_CN",
            height: 500,
            skin_url: "/static/tinymce/skins/ui/oxide",
            content_css: "/static/tinymce/skins/content/default/content.css",
            branding: false,
            plugins: "image",
            menubar: false,
            toolbar: "imageUpload",
            setup: (editor) => {//设置自定义功能的按钮
              editor.ui.registry.addButton("imageUpload", {//单个按钮,此处的imageUpload是该按钮的名称
                tooltip: "上传图片",
                icon: 'image',
                onAction: () => {
                  //点击按钮执行的操作
                  this.showImg = true;//我这边是展示一个选择图片的modal组件
                  this.editor = editor;//把当前的编辑器保存下来
                }
              });
            }
          }
    
    1. 向编辑器插入内容
    methods: {
        insertImage (imageList) {
          this.showImg = false;
          let insertHtml = "";
          imageList.map((item, index) => {
            insertHtml = insertHtml + "<img src=" + item + ">";
          });
          //向编辑器插入内容
          this.editor.execCommand('mceInsertContent', false, insertHtml);
        }
    }
    

    相关文章

      网友评论

          本文标题:在vue中使用tinymce编辑器

          本文链接:https://www.haomeiwen.com/subject/mkrkvktx.html