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 行级解析读取XML文件(附源码)
Oct 12 Javascript
jquery实现键盘左右翻页特效
Apr 30 Javascript
js Canvas实现圆形时钟教程
Sep 19 Javascript
js 弹出虚拟键盘修改密码的简单实例
Oct 10 Javascript
ES6新数据结构Set与WeakSet用法分析
Mar 31 Javascript
基于vue实现swipe分页组件实例
May 25 Javascript
react路由配置方式详解
Aug 07 Javascript
javascript标准库(js的标准内置对象)总结
May 26 Javascript
Vue项目报错:Uncaught SyntaxError: Unexpected token
Nov 10 Javascript
深入理解 TypeScript Reflect Metadata
Dec 12 Javascript
vue深度监听(监听对象和数组的改变)与立即执行监听实例
Sep 04 Javascript
JS实现页面侧边栏效果探究
Jan 08 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面向对象全攻略 (八)重载新的方法
2009/09/30 PHP
比较好用的PHP防注入漏洞过滤函数代码
2012/04/11 PHP
Yii2 批量插入、更新数据实例
2017/03/15 PHP
老生常谈PHP中的数据结构:DS扩展
2017/07/17 PHP
javascript中字符串拼接需注意的问题
2010/07/13 Javascript
JavaScript 在网页上单击鼠标的地方显示层及关闭层
2012/12/30 Javascript
JQuery实现表格中相同单元格合并示例代码
2013/06/26 Javascript
javascript打印html内容功能的方法示例
2013/11/28 Javascript
深入理解javascript作用域和闭包
2014/09/23 Javascript
angularJS 中$scope方法使用指南
2015/02/09 Javascript
Angularjs实现搜索关键字高亮显示效果
2017/01/17 Javascript
JavaScript获取中英文混合字符串长度的方法示例
2017/02/04 Javascript
Angular.JS利用ng-disabled属性和ng-model实现禁用button效果
2017/04/05 Javascript
深入探究angular2 UI组件之primeNG用法
2017/07/26 Javascript
angularjs2 ng2 密码隐藏显示的实例代码
2017/08/01 Javascript
基于JavaScript实现报警器提示音效果
2017/10/27 Javascript
VueJs监听window.resize方法示例
2018/01/17 Javascript
vue 组件高级用法实例详解
2018/04/11 Javascript
Vue隐藏显示、只读实例代码
2018/07/18 Javascript
elementUI多选框反选的实现代码
2019/04/03 Javascript
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
2016/07/12 Python
python将ansible配置转为json格式实例代码
2017/05/15 Python
Python矩阵常见运算操作实例总结
2017/09/29 Python
python flask中静态文件的管理方法
2018/03/20 Python
django+echart绘制曲线图的方法示例
2018/11/26 Python
python环境路径配置以及命令行运行脚本
2019/04/02 Python
简单了解pytest测试框架setup和tearDown
2020/04/14 Python
pandas DataFrame 数据选取,修改,切片的实现
2020/04/24 Python
BAILEY 44官网:美国制造的女性服装
2019/07/01 全球购物
介绍一下Linux内核的排队自旋锁
2014/01/04 面试题
管理专员自荐信
2014/01/26 职场文书
医生党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
普通党员四风问题对照检查材料
2014/09/27 职场文书
2015党建工作简报
2015/07/21 职场文书
详解Apache SkyWalking 告警配置指南
2021/04/22 Servers
Python读写yaml文件
2022/03/20 Python