最近的工作项目需要基于tinymce-vue进行插件开发。需要自己写一个插入图片/视频/链接的插件,虽然tinymce自带了这些插件,但是这些插件的UI界面不是很漂亮,所以老大说要自定义这些插件的tinymce。下面我们基于tinymce-vue自定义图片上传插件来记录一下。先说一下上传图片的要求:点击菜单栏插入图片后,会弹出一个自定义的vue组件。点击图片上传后,图片会插入到编辑框和插入封面图的图片,无论是在编辑框还是在封面图,右下角应该有裁剪按钮图片,以便用户可以裁剪图片。下面是我自己画的图。这里简单记录一下,然后写一个超级简单的demo,demo只记录自定义图片上传插件,并在插件中调用vue组件,将上传的图片插入编辑框,就是一个超简单的模板。其他如上传后插入图片再插入封面图、图片编辑按钮等不记录。如果需要自己扩展,如何引入tinymce-vue插件和汉化插件就不讨论了。(demo地址)先在node_modules的tinymce文件夹下的plugins下创建自定义插件文件夹如uploadImg,然后在该文件夹下创建index.js和plugin.js(最好将plugins文件夹移动到node_modules下,否则插件每次npminstall都会没有,每次都要备份插件)import'tinymce/plugins/uploadImg';//这里需要导入插件//然后在initplugins:'uploadImg',//Plug-intoolbar:'undoredo|uploadImg',//顶层排版自定义插件(也就是上面创建的plugin.js)一开始想对外给这个插件传参,发现好像不可行,后来改了直接在插件中创建组件。在插件中调用Vue插件是通过Vue的render函数来渲染的。最开始组件是用extend创建的,效果不好就换成render,然后通过组件中抛出的事件来完成。组件响应控制我们的动态组件。importVuefrom'vue'importTinymceUploadfrom'@/components/Tinymce/TinymceUpload'//导入自定义插件(function(){'usestrict';varglobal=tinymce.util.Tools.resolve('tinymce.PluginManager');varregister=function(editor){editor.addCommand('beHeader',function(){});};varCommands={register:register};varregister$1=function(editor){//insideSome行级元素需要加上font-size:0因为有些按钮图标需要自定义,所以这里也定义了一个按钮图标editor.ui.registry.addIcon('upload','
