Vue内引入tinymce富文本编辑器步骤详解

这次给大家带来Vue内引入tinymce富文本编辑器步骤详解,Vue内引入tinymce富文本编辑器的注意事项有哪些,下面就是实战案例,一起来看一下。

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

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

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

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

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

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

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

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

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

1. GitHub 上星星很多,功能也齐全;

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

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

4. 说好的两点呢!

一、资源下载

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

npm install @tinymce/tinymce-vue -S

登录后复制

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

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

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

npm install tinymce -S

登录后复制

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

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

tinymce 默认是英文界面,所以还需要下载一个中文语言包(记得搭梯子!搭梯子!搭梯子!)

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

Vue内引入tinymce富文本编辑器步骤详解

二、初始化

在页面中引入以下文件

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

登录后复制

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

Vue内引入tinymce富文本编辑器步骤详解

这里的 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 中也需要初始化一次:

Vue内引入tinymce富文本编辑器步骤详解

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

三、扩展插件

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

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

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

Vue内引入tinymce富文本编辑器步骤详解

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

Vue内引入tinymce富文本编辑器步骤详解

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

Vue内引入tinymce富文本编辑器步骤详解

贴一下完整的组件代码:

 

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 () { tinymce.init({}) }, components: {Editor}}

登录后复制

Vue内引入tinymce富文本编辑器步骤详解

四、上传图片

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

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

Vue内引入tinymce富文本编辑器步骤详解

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

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

Vue内引入tinymce富文本编辑器步骤详解

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

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

vue mint-ui tabbar组件使用步骤详解

vue地区选择组件使用步骤详解

以上就是Vue内引入tinymce富文本编辑器步骤详解的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2762004.html

(0)
上一篇 2025年3月8日 09:43:17
下一篇 2025年3月8日 09:49:12

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Vue.js双向绑定实现步骤说明

    这次给大家带来Vue.js双向绑定实现步骤说明,Vue.js双向绑定实现的注意事项有哪些,下面就是实战案例,一起来看一下。 这篇体验一下VUE的双向绑定 当前时刻{{ CurrentTime }} var app = new Vue({ e…

    2025年3月8日
    200
  • Vue+canvas实现移动端手写板步骤详解

    这次给大家带来Vue+canvas实现移动端手写板步骤详解,Vue+canvas实现移动端手写板的注意事项有哪些,下面就是实战案例,一起来看一下。 清除 保存 Canvas画板 var draw;var preHandler = funct…

    编程技术 2025年3月8日
    200
  • Node.Js实现端口重用步骤详解

    这次给大家带来Node.Js实现端口重用步骤详解,Node.Js实现端口重用的注意事项有哪些,下面就是实战案例,一起来看一下。 起源,从官方实例中看多进程共用端口 const cluster = require(‘cluster’);con…

    编程技术 2025年3月8日
    200
  • vuex+localstorage动态监听storage步骤详解

    这次给大家带来vuex+localstorage动态监听storage步骤详解,vuex+localstorage动态监听storage步的注意事项有哪些,下面就是实战案例,一起来看一下。 分析:vue无法监听localstorage的变化…

    编程技术 2025年3月8日
    200
  • ES6实现全屏滚动插件步骤详解

    这次给大家带来ES6实现全屏滚动插件步骤详解,ES6实现全屏滚动插件使用的注意事项有哪些,下面就是实战案例,一起来看一下。 1)前面的话 现在已经有很多全屏滚动插件了,比如著名的 fullPage ,那为什么还要自己造轮子呢? 现有轮子有以…

    2025年3月8日
    200
  • vue-cli创建项目步骤详解

    这次给大家带来vue-cli创建项目步骤详解,vue-cli创建项目的注意事项有哪些,下面就是实战案例,一起来看一下。 使用npm 与vue-cli 构建vue 项目 第一步:安装运行环境(node与npm) nodeJ官网:http://…

    2025年3月8日 编程技术
    200
  • vue中模态对话框组件实现步骤详解

    这次给大家带来vue中模态对话框组件实现步骤详解,vue中模态对话框组件实现的注意事项有哪些,下面就是实战案例,一起来看一下。 写在前面 对话框是很常用的组件 , 在很多地方都会用到,一般我们可以使用自带的alert来弹出对话框,但是假如是…

    2025年3月8日
    200
  • vue绑定id从列表页跳转至详情页步骤详解

    这次给大家带来vue绑定id从列表页跳转至详情页步骤详解,vue绑定id从列表页跳转至详情页的注意事项有哪些,下面就是实战案例,一起来看一下。 1. 列表页:列表页带id跳转到详情页 详情页:把id传回到后台就可以获取到数据了 2.列表页跳…

    2025年3月8日 编程技术
    200
  • Vue项目中使用Vux安装配置步骤详解

    这次给大家带来Vue项目中使用Vux安装配置步骤详解,Vue项目中使用Vux安装配置的注意事项有哪些,下面就是实战案例,一起来看一下。 默认已安装vue环境 1.安装vux npm install vux –save-dev 2…

    2025年3月8日
    200
  • 调用缓存实现JS方法步骤详解

    这次给大家带来调用缓存实现JS方法步骤详解,调用缓存实现JS方法的注意事项有哪些,下面就是实战案例,一起来看一下。 1.什么是方法重载 方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。简而言之就是:…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论