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 相关文章推荐
获取DOM对象的几种扩展及简写
Oct 09 Javascript
学习YUI.Ext第五日--做拖放Darg&amp;Drop
Mar 10 Javascript
文本框输入时 实现自动提示(像百度、google一样)
Apr 05 Javascript
利用JS来控制键盘的上下左右键(示例代码)
Dec 14 Javascript
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
Jan 13 Javascript
javascript判断并获取注册表中可信任站点的方法
Jun 01 Javascript
基于JavaScript实现熔岩灯效果导航菜单
Jan 04 Javascript
js实现省份下拉菜单效果
Feb 15 Javascript
ES6 Promise对象概念与用法分析
Apr 01 Javascript
Angular.Js中过滤器filter与自定义过滤器filter实例详解
May 08 Javascript
详解JavaScript调用栈、尾递归和手动优化
Jun 03 Javascript
微信小程序中的上拉、下拉菜单功能
Mar 13 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
thinkPHP的Html模板标签使用方法
2012/11/13 PHP
php中simplexml_load_string使用实例分享
2014/02/13 PHP
解析WordPress中的post_class与get_post_class函数
2016/01/04 PHP
Laravel 实现关系模型取出需要的字段
2019/10/10 PHP
PHP7修改的函数
2021/03/09 PHP
为jquery.ui.dialog 增加“在当前鼠标位置打开”的功能
2009/11/24 Javascript
js实现快速分享功能(你的文章分享工具)
2013/06/25 Javascript
鼠标经过显示二级菜单js特效
2013/08/13 Javascript
Jquery 的outerHeight方法使用介绍
2013/09/11 Javascript
javascript实现全角与半角字符的转换
2015/01/07 Javascript
javascript将异步校验表单改写为同步表单
2015/01/27 Javascript
超实用的JavaScript表单代码段
2016/02/26 Javascript
JavaScript中数组去除重复的三种方法
2016/04/22 Javascript
angularjs 表单密码验证自定义指令实现代码
2016/10/27 Javascript
AngularJS中update两次出现$promise属性无法识别的解决方法
2017/01/05 Javascript
Jquery EasyUI $.Parser
2017/06/02 jQuery
AJAX在JQuery中的应用详解
2019/01/30 jQuery
详解JavaScript的内存空间、赋值和深浅拷贝
2019/04/17 Javascript
layui: layer.open加载窗体时出现遮罩层的解决方法
2019/09/26 Javascript
Vue 实现登录界面验证码功能
2020/01/03 Javascript
浅要分析Python程序与C程序的结合使用
2015/04/07 Python
Python中字符串的格式化方法小结
2016/05/03 Python
python使用Tkinter实现在线音乐播放器
2018/01/30 Python
Python基于mysql实现学生管理系统
2019/02/21 Python
浅析python内置模块collections
2019/11/15 Python
Python3监控疫情的完整代码
2020/02/20 Python
python3 正则表达式基础廖雪峰
2020/03/25 Python
python3 os进行嵌套操作的实例讲解
2020/11/19 Python
迎接领导欢迎词
2014/01/11 职场文书
办公室秘书岗位职责范本
2014/02/11 职场文书
信息科学与技术专业求职信范文
2014/02/20 职场文书
学校百日安全生产活动总结
2014/07/05 职场文书
教师个人培训总结
2015/02/11 职场文书
2016学习全国教书育人楷模先进事迹心得体会
2016/01/21 职场文书
python爬虫之利用selenium模块自动登录CSDN
2021/04/22 Python
Pytorch数据读取之Dataset和DataLoader知识总结
2021/05/23 Python