vue项目中使用tinymce编辑器的步骤详解_vue,富文本编辑器的完整代码_vue

Tinymce富文本也是一款很流行编辑器

项目中原本使用的富文本编辑器是 wangEditor,这是一个很轻量、简洁编辑器

vue项目中使用tinymce编辑器的步骤详解_vue,富文本编辑器的完整代码_vue。把文件放在static下,然后在index.html文件中引入这个文件

www.js8331.com,但是公司的业务升级,想要一个功能更全面的编辑器,我找了好久,目前常见的编辑器有这些:

在其他子文件中引入这个

UEditor:百度前端的开源项目,功能强大,基于
jQuery,但已经没有再维护,而且限定了后端代码,修改起来比较费劲

 import tinymce from '../components/Tinymce'; components: { tinymce },

bootstrap-wysiwyg:微型,易用,小而美,只是 Bootstrap + jQuery…

然后就可以调用起这个组件了。

kindEditor:功能强大,代码简洁,需要配置后台,而且好久没见更新了

下面看下vue项目中使用tinymce编辑器的方法,具体内容如下所示:

wangEditor:轻量、简洁、易用,但是升级到 3.x
之后,不便于定制化开发。不过作者很勤奋,广义上和我是一家人,打个call

第一步:npm install tinymce -S

quill:本身功能不多,不过可以自行扩展,api
也很好懂,如果能看懂英文的话…

//增加模版   //在script中引入import tinymce from "tinymce/tinymce";import "tinymce/themes/modern/theme";import "tinymce/plugins/paste";//这个到最下面那个为需要使用的工具栏模块import "tinymce/plugins/link";import "tinymce/plugins/lists";import "tinymce/plugins/image";import "tinymce/plugins/contextmenu";import "tinymce/plugins/wordcount";import "tinymce/plugins/colorpicker";import "tinymce/plugins/textcolor";import "tinymce/plugins/media";

summernote:没深入研究,UI挺漂亮,也是一款小而美的编辑器,可是我需要大的

第三步:对tinymce进行个性化配置

在有这么参考的情况下,我最终还是选择了 tinymce
这个不搭梯子连官网都打不开的编辑器,主要因为两点:

tinymceinit() { const _this = this; const setting = { selector: "#tinymce", language: "zh_CN",//语言设置中文 menubar: false,//去除文件栏 branding: false,//去除右下角的'由tinymce驱动' elementpath: false,//左下角的当前标签路径 content_css: ["css文件路径"],//对编辑器内部需要的一些样式 language_url: "zh_CN.js文件的路径",//导入中文语言文件 skin_url: "../../../static/skins/lightgray",//在node_modules中tinymce文件夹中 setup: function {//设置自定义功能的按钮 editor.addButton("uploadimg", {//单个按钮,此处的uploading是该按钮的名称 icon: "image", //显示的图像 tooltip: "上传图片",//鼠标放上去后现在是内容 onclick: function; editor.addButton("geshi", {//按钮列表,此处的geshi是该按钮的名称 text: "格式", //显示的文字 type: "menubutton", menu: [ { text: "标签", onclick: function; }, plugins: "lists paste link image contextmenu wordcount colorpicker textcolor media imagetools",//对应上方import引入的文件,下面toolbar需要使用到 toolbar: "geshi bold bullist numlist | uploadimg | alignleft aligncenter alignright alignjustify outdent indent"//定义工具栏 }; Object.assign(setting, _this.setting); tinymce.init; },
  1. GitHub 上星星很多,功能也齐全;

  2. 唯一一个从 word 粘贴过来还能保持绝大部分格式的编辑器;

  3. 不需要找后端人员扫码改接口,前后端分离;

第四步:在watch中监听传入的value,并修改tinymce的内容

一、资源下载

value { tinymce.activeEditor.setContent;},

tinymce 官方为 vue 项目提供了一个组件 tinymce-vue

第一种:使用tinymce提供的接口

npm install @tinymce/tinymce-vue -S
images_upload_handler: function (blobInfo, success, failure) { //blobInfo图片对象 uploadimg success failure }}

在 vscode、webstorm
的终端运行这段代码可能会报错,最好使用操作系统自带的命令行工具

第二种:我自己使用的方法,简单说一下思路

如果有购买 tinymce 的服务,可以参考 tinymce-vue 的说明,通过 api-key
直接使用 tinymce

1.使用setup自定义一个按钮,按钮的点击事件就是选择图片,并上传

像我这样没购买的,还是要老老实实下载 tinymce

2.将服务器)

npm install tinymce -S

3.将自己包装的img标签放入鼠标当前指针处

安装之后,在 node_modules 中找到 tinymce/skins 目录,然后将 skins
目录拷贝到 static 目录下

let dom = tinymce.activeEditor.dom;tinyMCE.execCommand("mceInsertContent",false,dom.createHTML;

// 如果是使用 vue-cli 3.x 构建的 typescript 项目,就放到 public
目录下,文中所有 static 目录相关都这样处理

总结

tinymce 默认是英文界面,所以还需要下载一个中文语言包

以上所述是小编给大家介绍的vue项目中使用tinymce编辑器的步骤详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

然后将这个语言包放到 static 目录下,为了结构清晰,我包了一层 tinymce
目录

二、初始化

import tinymce from 'tinymce/tinymce'import 'tinymce/themes/modern/theme'import Editor from '@tinymce/tinymce-vue'

tinymce-vue 是一个组件,需要在 components 中注册,然后直接使用

这里的 init 是 tinymce 初始化配置项,后面会讲到一些关键的 api,完整 api
可以参考官方文档

编辑器需要一个 skin 才能正常工作,所以要设置一个 skin_url
指向之前复制出来的 skin 文件

init: { language_url: '/static/tinymce/zh_CN.js', language: 'zh_CN', skin_url: '/static/tinymce/skins/lightgray', height: 300}

// vue-cli 3.x 创建的 typescript 项目,将 url 中的 static 去掉,即
skin_url: ‘/tinymce/skins/lightgray’

同时在 mounted 中也需要初始化一次:

如果在这里传入上面的 init
对象,并不能生效,但什么参数都不传也会报错,所以这里传入一个空对象

三、扩展插件

完成了上面的初始化之后,就已经能正常运行编辑器了,但只有一些基本功能

tinymce 通过添加插件 plugins 的方式来添加功能

比如要添加一个上传图片的功能,就需要用到 image 插件,添加超链接需要用到
link 插件

同时还需要在页面引入这些插件:

添加了插件之后,默认会在工具栏 toolbar 上添加对应的功能按钮,toolbar
也可以自定义

贴一下完整的组件代码:

  tinymce   import tinymce from 'tinymce/tinymce'import 'tinymce/themes/modern/theme'import Editor from '@tinymce/tinymce-vue'import 'tinymce/plugins/image'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/colorpicker'import 'tinymce/plugins/textcolor'export default { name: 'tinymce', data () { return { tinymceHtml: '请输入内容', init: { language_url: '/static/tinymce/zh_CN.js', language: 'zh_CN', skin_url: '/static/tinymce/skins/lightgray', height: 300, plugins: 'link lists image code table colorpicker textcolor wordcount contextmenu', toolbar: 'bold italic underline strikethrough | fontsizeselect | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist | outdent indent blockquote | undo redo | link unlink image code | removeformat', branding: false } } }, mounted  }, components: {Editor}}

四、上传图片

tinymce 提供了 images_upload_url 等 api 让用户配置上传图片的相关参数

但为了在不麻烦后端的前提下适配自家的项目,还是得用
images_upload_handler 来自定义一个上传方法

这个方法会提供三个参数:blobInfo, success, failure

其中 blobinfo 是一个对象,包含上传文件的信息:

success 和 failure 是函数,上传成功的时候向 success
传入一个图片地址,失败的时候向 failure 传入报错信息

以上所述是小编给大家介绍的在 Vue 项目中引入 tinymce
富文本编辑器的完整代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

发表评论

电子邮件地址不会被公开。 必填项已用*标注