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 相关文章推荐
javascript读取xml
Nov 04 Javascript
静态页面下用javascript操作ACCESS数据库(读增改删)的代码
May 14 Javascript
ExtJS Store的数据访问与更新问题
Apr 28 Javascript
js 获取坐标 通过JS得到当前焦点(鼠标)的坐标属性
Jan 04 Javascript
基于jQuery Circlr插件实现产品图片360度旋转
Sep 20 Javascript
jQuery实现宽屏图片轮播实例教程
Nov 24 Javascript
检查表单元素的值是否为空的实例代码
Jun 16 Javascript
Vuejs第九篇之组件作用域及props数据传递实例详解
Sep 05 Javascript
js实现简单的网页换肤效果
Jan 18 Javascript
layui框架中layer父子页面交互的方法分析
Nov 15 Javascript
vue中接口域名配置为全局变量的实现方法
Sep 20 Javascript
总结javascript三元运算符知识点
Sep 28 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
DSP接收机前端设想
2021/03/02 无线电
PHP输出时间差函数代码
2013/01/28 PHP
PHP的魔术常量__METHOD__简介
2014/07/08 PHP
php使用post数组的键值创建同名变量并赋值的方法
2015/04/03 PHP
jQuery setTimeout()函数使用方法
2013/04/07 Javascript
使用jQuery插件创建常规模态窗口登陆效果
2013/08/23 Javascript
js判断当页面无法回退时关闭网页否则就history.go(-1)
2014/08/07 Javascript
jQuery中append()方法用法实例
2015/01/08 Javascript
基于JavaScript实现全选、不选和反选效果
2017/02/15 Javascript
微信小程序自定义导航栏
2018/12/31 Javascript
js贪心算法 钱币找零问题代码实例
2019/09/11 Javascript
vue实现多级菜单效果
2019/10/19 Javascript
Vue表单提交点击事件只允许点击一次的实例
2020/10/23 Javascript
[01:07]2015国际邀请赛 中国区预选赛精彩回顾
2015/06/15 DOTA
python线程池的实现实例
2013/11/18 Python
Python实现的二维码生成小软件
2014/07/11 Python
详解Python多线程Selenium跨浏览器测试
2017/04/01 Python
Python实现的十进制小数与二进制小数相互转换功能
2017/10/12 Python
opencv python 2D直方图的示例代码
2018/07/20 Python
Python Django给admin添加Action的方法实例详解
2019/04/29 Python
对Django url的几种使用方式详解
2019/08/06 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
2019/10/16 Python
Python greenlet和gevent使用代码示例解析
2020/04/01 Python
python中逻辑与或(and、or)和按位与或异或(&amp;、|、^)区别
2020/08/05 Python
Html5游戏开发之乒乓Ping Pong游戏示例(三)
2013/01/21 HTML / CSS
英国领先的男装设计师服装购物网站:Mainline Menswear
2018/02/04 全球购物
TecoBuy澳大利亚:在线电子和小工具商店
2020/06/25 全球购物
网络公司美工设计工作个人的自我评价
2013/11/03 职场文书
英文导游欢迎词
2014/01/11 职场文书
初婚未育证明
2014/01/15 职场文书
幼儿运动会邀请函
2014/01/17 职场文书
陈安之励志演讲稿
2014/08/21 职场文书
MySQL之PXC集群搭建的方法步骤
2021/05/25 MySQL
python cv2图像质量压缩的算法示例
2021/06/04 Python
python opencv通过4坐标剪裁图片
2021/06/05 Python
java设计模式--三种工厂模式详解
2021/07/21 Java/Android