vue2.0 实现富文本编辑器功能


Posted in Javascript onMay 26, 2019

前端富文本编译器使用总结:

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

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

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

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

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

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

在这里着重说一下这个 tinymce这个插件,

优势有三:

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

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

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

上代码(vue中使用)

1.引入

npm install @tinymce/tinymce-vue -S

2.在 node_modules 中找到 tinymce/skins 目录,然后将 skins 目录拷贝到 static 目录下

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

3.给你们个语言包(https://www.tiny.cloud/download/language-packages/)地址都给了要是还不会那就没救了

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

5.import

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

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

<editor id="tinymce" v-model="tinymceHTML" :init="tinymceInit"></editor>

这里的 init 是 tinymce 初始化配置项,后面会讲到一些关键的 api,完整 api 可以参考https://www.tiny.cloud/docs/configure/

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

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
    }
  }
 },

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

mounted(){
tinymce.init({}) // 特别注意这个空对象的存在,如果这个初始化空对象不存在依旧会报错
}

完整代码如下:

<template>
 <div class='tinymce'>
  <h1>tinymce</h1>
<!-- 富文本编辑组件 -->
  <editor id='tinymce' v-model='tinymceHtml' :init='init'></editor>
  <div v-html='tinymceHtml'></div>
 </div>
</template>

<script>
 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}
 }
</script>

其中的带plugins为扩展性操作,如果不需要,可以不引入。

效果如下图:

vue2.0 实现富文本编辑器功能

总结

以上所述是小编给大家介绍的vue2.0 实现富文本编辑器功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Jquery iframe内部出滚动条
Feb 11 Javascript
js实现的日期操作类DateTime函数代码
Mar 16 Javascript
ASP.NET jQuery 实例18 通过使用jQuery validation插件校验DropDownList
Feb 03 Javascript
JS的replace方法详细介绍
Nov 09 Javascript
JS获取并操作iframe中元素的方法
Mar 21 Javascript
jquery实现点击label的同时触发文本框点击事件的方法
Jun 05 Javascript
跟我学习javascript的作用域与作用域链
Nov 19 Javascript
jquery popupDialog 使用 加载jsp页面的方法
Oct 25 Javascript
js实现一个简单的数字时钟效果
Mar 29 Javascript
vue之数据交互实例代码
Jun 20 Javascript
vue.js实现二级菜单效果
Oct 19 Javascript
three.js中多线程的使用及性能测试详解
Jan 07 Javascript
富文本编辑器vue2-editor实现全屏功能
May 26 #Javascript
vue中$refs, $emit, $on, $once, $off的使用详解
May 26 #Javascript
我要点爆”微信小程序云开发之项目建立与我的页面功能实现
May 26 #Javascript
vue指令做滚动加载和监听等
May 26 #Javascript
vxe-table vue table 表格组件功能
May 26 #Javascript
使用Vue.observable()进行状态管理的实例代码详解
May 26 #Javascript
微信小程序 swiper 组件遇到的问题及解决方法
May 26 #Javascript
You might like
php 在windows下配置虚拟目录的方法介绍
2013/06/26 PHP
php stream_get_meta_data返回值
2013/09/29 PHP
destoon常用的安全设置概述
2014/06/21 PHP
PHP在网页中动态生成PDF文件详细教程
2014/07/05 PHP
Yii2 rbac权限控制之菜单menu实例教程
2016/04/28 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
2019/04/09 PHP
Laravel手动返回错误码示例
2019/10/22 PHP
JScript 脚本实现文件下载 一般用于下载木马
2009/10/29 Javascript
js判断鼠标同时离开两个div的思路及代码
2013/05/31 Javascript
Array 重排序方法和操作方法的简单实例
2014/01/24 Javascript
jQuery中next()方法用法实例
2015/01/07 Javascript
Js实现无刷新删除内容
2015/04/29 Javascript
详解Weex基于Vue2.0开发模板搭建
2017/03/20 Javascript
使用jQuery.Pin垂直滚动时固定导航
2017/05/24 jQuery
Angular实现图片裁剪工具ngImgCrop实践
2017/08/17 Javascript
十个免费的web前端开发工具详细整理
2017/09/18 Javascript
bootstrap Table的一些小操作
2017/11/01 Javascript
Vue按需加载的具体实现
2017/12/02 Javascript
vue-next/runtime-core 源码阅读指南详解
2019/10/25 Javascript
vue 解决data中定义图片相对路径页面不显示的问题
2020/08/13 Javascript
JavaScript语句错误throw、try及catch实例解析
2020/08/18 Javascript
vue实现点击出现操作弹出框的示例
2020/11/05 Javascript
Vue Elenent实现表格相同数据列合并
2020/11/30 Vue.js
python目录操作之python遍历文件夹后将结果存储为xml
2014/01/27 Python
REISS英国官网:伦敦High Street最受欢迎品牌
2016/12/21 全球购物
员工工作表扬信范文
2014/01/13 职场文书
优秀大学生职业生涯规划书
2014/02/27 职场文书
四年级评语大全
2014/04/21 职场文书
小学毕业演讲稿
2014/04/25 职场文书
体育专业求职信
2014/07/16 职场文书
三八妇女节超市活动方案
2014/08/18 职场文书
2014年社区矫正工作总结
2014/11/18 职场文书
2014年客房部工作总结
2014/11/22 职场文书
父亲婚礼答谢词
2015/01/04 职场文书
公务员政审个人总结
2015/02/12 职场文书
导游词之昭君岛
2020/01/17 职场文书