注:此教程适用于  tinymce 5.x 版本(如果是tinymce 4.x,则可能不会实现 )
 
 

安装与配置操作
 
(1)安装
 
npm install -s @tinymce/tinymce-vue
npm install -s tinymce

(2)在node_modules找到tinymce

 
 
将相关文件放到public中
 
 
langs文件夹存放的是语言包,tinymce默认是英文
 

具体实现
 
 
实现如下,有问题,出现not Found
 
 
查看,发现出现了包的导入路径错误
 
 
注释掉语言包相关代码,依旧出现,说明不是语言包问题;
注释掉皮肤包依旧会报此错误;
仔细查看,是 icons.js 出现问题
依据教程,发现是 icons.js 包引入错误,尝试手动引入 icons.js ,成功实现。
(最基础的编辑器功能,若需要拓展,则需要进行配置,相关配置见下方)
 
 
具体代码
 
html部分:
<div class="tinymce-class">
   <span style="display: block;">tinymce</span>
   <div class="tinymce">
       <editor id="tinymce" v-model="tinymceHtml" :init="editorInit"></editor>
   </div>
</div>

js部分:

import tinymce from 'tinymce/tinymce'
import 'tinymce/themes/silver'  // 引入主题包 themes.js
import 'tinymce/icons/default/icons.js'  // 引入图标包 icons.js
import Editor from '@tinymce/tinymce-vue'
export default {
    components: { Editor }, //注册组件
    data() {
      return {
        tinymceHtml: '测试tinymce',

//   初始化定义tinymce
        editorInit: {
          language_url: '/tinymce/langs/zh_CN.js', // 中英文包
          language: 'zh_CN',  // 语言设置为中文
          height: 300,
          skin_url: '/tinymce/skins/ui/oxide'  // 皮肤包
        }
      }
    },
    mounted() {
      tinymce.init({})
    }
 }

 


进行相关配置(添加官方功能插件)

 
插件需引入,按需配置;
在 import 中进行引入;
在 init 中进行定义;
 
如图,tinymce中相关定义如下
 
 
(一)工具栏配置
通过init中的toolbar来配置工具栏是否启用的项目和显示的顺序,使用 | 来分割各个项
 
editorInit: {
   language_url: '/tinymce/langs/zh_CN.js',
   language: 'zh_CN',
   height: 300,
   skin_url: '/tinymce/skins/ui/oxide',
   toolbar: 'undo redo | formatselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | lists image media table | removeformat',
   branding: false, //  是否禁用 “Power by Tinymce”
   menubar: false // 菜单栏显示(默认为true)
 }

效果:

菜单栏隐藏,添加了  Tx  清除格式
 
(二)其他配置项

配置工具项

所属插件为核心的项为基本包里自带的功能,直接写在toolbar里就可以;

属于插件的项需要引入插件( plugins: '插件名')然后在 toolbar中配置。
  
import tinymce from 'tinymce/tinymce'
import 'tinymce/themes/silver'
import 'tinymce/icons/default/icons.js'
import Editor from '@tinymce/tinymce-vue'

//  添加配置
import 'tinymce/plugins/link'
import 'tinymce/plugins/code'
import 'tinymce/plugins/table'
import 'tinymce/plugins/lists'
import 'tinymce/plugins/contextmenu'
import 'tinymce/plugins/wordcount'
import 'tinymce/plugins/textcolor'
import 'tinymce/plugins/image'
import 'tinymce/plugins/media'
 
init中进行定义
editorInit: {
   language_url: '/tinymce/langs/zh_CN.js',
   language: 'zh_CN',
   height: 300,
   skin_url: '/tinymce/skins/ui/oxide',

   // 添加的配置的定义
   plugins: 'link code table lists contextmenu wordcount textcolor image media',
   toolbar: 'undo redo | formatselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | lists image media table | removeformat',
   branding: false, //  是否禁用 “Power by Tinymce”
   menubar: false // 菜单栏显示(默认为true)
  }

效果:

增加的相关配置
 
 
另一种配置写法:
通过props将组件中的配置项传入
 
export default {
    components: { Editor },

// 引入配置项,其他的如toolbar也可通过props引入
    props: {
      plugins: {
        type: [String, Array],
        default: 'lists image media table textcolor wordcount contextmenu'
      },
    },

    data() {
      return {
        tinymceHtml: '测试tinymce',
        editorInit: {
          language_url: '/tinymce/langs/zh_CN.js',
          language: 'zh_CN',
          height: 300,
          skin_url: '/tinymce/skins/ui/oxide',
          // plugins: 'link code table lists contextmenu wordcount textcolor image media',
          plugins: this.plugins,  // this.plugins直接获取props中传来的数据
          toolbar: 'undo redo | formatselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | lists image media table | removeformat',
          branding: false, //  是否禁用 “Power by Tinymce”
          menubar: false // 菜单栏显示(默认为true)
        }
      }
    },
    mounted() {
      tinymce.init({})
    }
  };

(三)图片上传使用base64格式

 
editorInit: {
          language_url: '/tinymce/langs/zh_CN.js',
          language: 'zh_CN',
          height: 300,
          skin_url: '/tinymce/skins/ui/oxide',
          // plugins: 'link code table lists contextmenu wordcount textcolor image media',
          plugins: this.plugins,
          toolbar: 'undo redo | formatselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | lists image media table | removeformat',
          branding: false, //  是否禁用 “Power by Tinymce”
          menubar: false, // 菜单栏显示(默认为true)
          images_upload_handler: (blobInfo, success, failure) => {
            const img = 'data:image/jpeg;base64,' + blobInfo.base64()
            success(img)
          }
        }

 
 
图片成功上传:
 
 
补充1:
 
 
(1)由于引入的插件太多,多余的隐藏掉了,样式如下
 
 
将其全部展示出来:
使用数组,分成两项
 
 
 
效果:
 
 
(3)报错
 
查看官网,
进行修改,如下:
 
 
成功,没有报错信息
 
(4)发现有一部分依旧是中文
查看官方(中文文档)内容
对比相关代码,没有问题;
 
查看汉化文件zh_CN.js
发现没有对应的中文;
下载最新的汉化包,还是不行(判断:汉化包内容不全,没有对应的中文),自行添加 ;
直接在汉化包中添加相应中英文以及Unicode编码
 
// 补充
"Alternative source URL": "\u66ff\u4ee3\u8d44\u6e90\u5730\u5740",
"Alternative description": "\u66ff\u4ee3\u8bf4\u660e\u6587\u5b57"

注:

汉化包中文是Unicode格式,转换过来即是所得汉字
也可直接写成中文,具体可使用莫若卿大神的汉化包( 详见tinymce中文文档 http://tinymce.ax-z.cn/general/localize-your-language.php
 
最后,在tiny的git上,发现已经有同行提出了官方汉化包的内容缺失问题。。。
 

 
补充2:
 
使用时出现bug如下:
选择缩进后,每行都会缩进,不是首行缩进

分析 :

 官方版本并没有首行缩进功能;
若想实现首行缩进,必须升级到版本5,并使用莫若卿大神的首行缩进插件(详见tinymce中文文档 http://tinymce.ax-z.cn/more-plugins/indent2em.php
 
(1)添加“首行缩进”插件
    按照教程,成功实现:
 
详细过程如下 :
(1)下载插件
插件: indent2em.zip
 
(2) 将解压得到的文件夹,放到TinyMCE主目录下的plugins文件夹内。
放到node_modules/tinymce/plugins中;
同时放到/static/tinymce/plugins中

     
注意:
下载下来的插件缺少内容,需手动添加
下载的插件只包含这两个文件:
 
运行时会报错,找不到此插件
 
与官方插件进行对比,发现缺少index.js文件,即动态引入该插件,将此文件复制粘贴到indent2em文件夹中
(官方插件中,每个插件都会有index.js文件,且每个文件中内容一样,都为require动态引入插件)
 
 
(3)导入使用
在plugis 和 toolbar中添加indent2em,如下 :
 
 
 
运行,成功实现。
 
(2)出现警告信息
plugin.js:16 Text color plugin is now built in to the core editor, please remove it from your editor configuration
plugin.js:16 Context menu plugin is now built in to the core editor, please remove it from your editor configuration
plugin.js:16 Color picker plugin is now built in to the core editor, please remove it from your editor configuration

如下:

出现相关警告信息
 
 
分析发现,text color、context menu、color picker 插件 现在内置到核心编辑器中, 请将其从编辑器配置中删除
 
将3个插件从plugins中删除 , 如下
 
 
 
没有任何问题,且控制台无警告信息
 
 
 


 

 

 

Logo

前往低代码交流专区

更多推荐