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 相关文章推荐
再谈IE中Flash控件的自动激活 ObjectWrap
Mar 09 Javascript
JavaScript 基础知识 被自己遗忘的
Oct 15 Javascript
Javascript操作cookie的函数代码
Oct 03 Javascript
一行代码实现纯数据json对象的深度克隆实现思路
Jan 09 Javascript
jQuery分组选择器用法实例
Dec 23 Javascript
简述jQuery ajax的执行顺序
Jan 05 Javascript
AngularJS 整理一些优化的小技巧
Aug 18 Javascript
JS实现搜索关键词的智能提示功能
Jul 07 Javascript
微信小程序实现点击按钮修改字体颜色功能【附demo源码下载】
Dec 05 Javascript
JS计算两个时间相差分钟数的方法示例
Jan 10 Javascript
JS实现的透明度渐变动画效果示例
Apr 28 Javascript
基于js判断浏览器是否支持webGL
Apr 18 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作的文本留言本的例子(四)
2006/10/09 PHP
Windows 下的 PHP-PEAR 安装方法
2010/11/20 PHP
PHP性能优化 产生高度优化代码
2011/07/22 PHP
php中mysql连接和基本操作代码(快速测试使用,简单方便)
2014/04/25 PHP
PHP未登录自动跳转到登录页面
2016/12/21 PHP
laravel 输出最后执行sql 附:whereIn的使用方法
2019/10/10 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
location.href语句与火狐不兼容的问题
2010/07/04 Javascript
JavaScript中关于indexOf的使用方法与问题小结
2010/08/05 Javascript
Jquery + Ajax调用webService实例代码(asp.net)
2010/08/27 Javascript
fancybox1.3.1 基于Jquery的插件在IE中图片显示问题
2010/10/01 Javascript
超轻量级的基于jquery的三级展开列表
2011/04/26 Javascript
jquery 触发a链接点击事件解决方案
2013/05/02 Javascript
JavaScript操作cookie类实例
2015/03/31 Javascript
JS中生成随机数的用法及相关函数
2016/01/09 Javascript
详解Node.js模块间共享数据库连接的方法
2016/05/24 Javascript
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
2017/08/01 jQuery
在Vue-cli里应用Vuex的state和mutations方法
2018/09/16 Javascript
微信小程序swiper禁止用户手动滑动代码实例
2019/08/23 Javascript
vue使用keep-alive实现组件切换时保存原组件数据方法
2020/10/30 Javascript
微信小程序视频弹幕发送功能的实现
2020/12/28 Javascript
vue浏览器返回监听的具体步骤
2021/02/03 Vue.js
分析python服务器拒绝服务攻击代码
2014/01/16 Python
几行Python代码爬取3000+上市公司的信息
2019/01/24 Python
Python Pandas 转换unix时间戳方式
2019/12/07 Python
如何给Python代码进行加密
2020/01/10 Python
Numpy中的数组搜索中np.where方法详细介绍
2021/01/08 Python
保安部任务及岗位职责
2014/02/25 职场文书
幼儿生日活动方案
2014/08/27 职场文书
师德师风自查材料
2014/10/14 职场文书
先进典型事迹材料
2014/12/29 职场文书
公司禁烟通知
2015/04/23 职场文书
学习型家庭事迹材料(2016精选版)
2016/02/29 职场文书
幼儿园教师辞职信
2019/06/21 职场文书
诚信高考倡议书
2019/06/24 职场文书
mongodb清除连接和日志的正确方法分享
2021/09/15 MongoDB