vuecli3.x中轻松4步带你使用tinymce的步骤


Posted in Javascript onJune 25, 2020

前言

笔者在使用tinymce时发现跟着网上的方法去做,基本都会因为版本等一些问题报错,所以笔者总结了以下方案!可以收藏哦

第一步:

npm install @tinymce/tinymce-vue@3.2.2 tinymce@5.3.1 -S

第二步:

找到node_modules中的skins文件夹,然后在项目中的public下新建tinymce文件夹,然后将刚刚找到的整个skins文件夹拷贝到public的tinymce目录下。

接着去官网下载语言包,解压,将langs文件夹拷贝到public的tinymce文件夹下(和skins文件夹同级)

第三步:

在components文件夹下新建tinymce组件的文件夹,新建index.vue文件,复制以下代码进去:

<template>
 <div class="tinymce-editor">
  <Editor
   :id="editorId"
   v-model="editorValue"
   :init="editorInit"
  />
 </div>
</template>

<script>
// 引入组件
import tinymce from 'tinymce/tinymce';
import Editor from '@tinymce/tinymce-vue';
import 'tinymce/icons/default/icons';
import 'tinymce/themes/silver';
// 引入富文本编辑器主题的js和css
import 'tinymce/themes/silver/theme.min';
import 'tinymce/skins/ui/oxide/skin.min.css';
// 扩展插件
import 'tinymce/plugins/image';
import 'tinymce/plugins/link';
import 'tinymce/plugins/code';
import 'tinymce/plugins/table';
import 'tinymce/plugins/lists';
import 'tinymce/plugins/wordcount'; // 字数统计插件
import 'tinymce/plugins/media';// 插入视频插件
import 'tinymce/plugins/template';// 模板插件
import 'tinymce/plugins/fullscreen';
import 'tinymce/plugins/paste';
import 'tinymce/plugins/preview';
import 'tinymce/plugins/contextmenu';
import 'tinymce/plugins/textcolor';
export default {
 name: 'TinymceEditor',
 components: {Editor},
 props: {
  height: {
   type: Number,
   default: 500
  },
  id: {
   type: String,
   default: 'tinymceEditor'
  },
  value: {
   type: String,
   default: ''
  },
  plugins: {
   type: [String, Array],
   default: 'link lists image code table wordcount media fullscreen preview paste contextmenu textcolor'
  },
  toolbar: {
   type: [String, Array],
   default: 'fontselect | bold italic underline strikethrough | link unlink image | undo redo | fontsizeselect | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist | outdent indent blockquote | code | removeformat'
  }
 },
 data() {
  return {
   editorInit: {
    language_url: `${window.baseUrl}/tinymce/langs/zh_CN.js`,
    language: 'zh_CN',
    skin_url: `${window.baseUrl}/tinymce/skins/ui/oxide`,
    content_css: `${window.baseUrl}/tinymce/skins/content/default/content.css`,
    height: this.height,
    content_style: '* { padding:0; margin:0; } img {max-width:100% !important }',
    plugin_preview_width: 375, // 预览宽度
    plugin_preview_height: 668,
    lineheight_val: "1 1.1 1.2 1.3 1.35 1.4 1.5 1.55 1.6 1.75 1.8 1.9 1.95 2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 3 3.1 3.2 3.3 3.4 4 5",
    fontsize_formats: "8pt 10pt 11pt 12pt 13pt 14pt 15pt 16pt 17pt 18pt 24pt 36pt",
    font_formats:"微软雅黑='微软雅黑';宋体='宋体';黑体='黑体';仿宋='仿宋';楷体='楷体';隶书='隶书';幼圆='幼圆';Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings",
    plugins: this.plugins,
    powerpaste_word_import: 'merge',
    toolbar: this.toolbar,
    paste_data_images: true,
    statusbar: true, // 底部的状态栏
    menubar: true, // 最上方的菜单
    branding: false, // 水印“Powered by TinyMCE”
    images_upload_handler: (blobInfo, success, failure) => {
     this.$emit('handleImgUpload', blobInfo, success, failure);
    }
   },
   editorId: this.id,
   newValue: ''
  };
 },
 watch: {
  newValue(newValue) {
   this.$emit('input', newValue);
  }
 },
 mounted() {
  tinymce.init({});
 },
 computed: {
  editorValue: {
   get() {
    return this.value;
   },
   set(val) {
    this.newValue = val;
   }
  }
 },
 methods: {
  // https://github.com/tinymce/tinymce-vue => All available events
  clear() {
   this.editorValue = '';
  }
 }
};
</script>

第四步:

在要使用的组件中加入以下代码:

import TinymceEditor from '@/components/tinymce';

components: { //注册TinymceEditor组件
  TinymceEditor
},

data() {
  return {
    content: '', //富文本的内容
    baseUrl: window.baseUrl, //默认为'' 空字符串
  }
}

computed:{
  realHeight() {
   return (window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight) - 200
  }
}

methods:{
  async imgUpload(blobInfo, success, failure) {
   const formData = new FormData();
   formData.append('file', blobInfo.blob());
   try {
    const res = await uploadFile(formData);
    success(this.server + res);
    console.log(this.server + res);
   } catch (e) {
    console.log(e);
    failure('上传失败:' + e);
   }
  },
}
模板中使用:

<tinymce-editor
 id="editor"
 ref="editor"
 v-model="content"
 :height="realHeight"
 @handleImgUpload="imgUpload"
/>

然后就大功告成:

vuecli3.x中轻松4步带你使用tinymce的步骤

到此这篇关于vuecli3.x中轻松4步带你使用tinymce的步骤的文章就介绍到这了,更多相关vuecli3.x使用tinymce内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
jquery load()在firefox(火狐)下显示不正常的解决方法
Apr 05 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
Sep 12 Javascript
javascript中setTimeout和setInterval的unref()和ref()用法示例
Nov 26 Javascript
Javascript实现多彩雪花从天降散落效果的方法
Feb 02 Javascript
jQuery DOM删除节点操作指南
Mar 03 Javascript
jquery.validate 自定义验证方法及validate相关参数
Jan 18 Javascript
jQuery与JS加载事件用法分析
Sep 04 Javascript
同步异步动态引入js文件的几种方法总结
Sep 23 Javascript
老生常谈jquery中detach()和remove()的区别
Mar 02 Javascript
bootstrap 点击空白处popover弹出框隐藏实例
Jan 24 Javascript
Vue源码解读之Component组件注册的实现
Aug 24 Javascript
jQuery实现表格隔行换色
Sep 01 jQuery
国内常用的js类库大全(CDN公共库)
Jun 24 #Javascript
viewer.js实现图片预览功能
Jun 24 #Javascript
Javascript实现鼠标移入方向感知
Jun 24 #Javascript
javascript实现前端input密码输入强度验证
Jun 24 #Javascript
原生js实现html手机端城市列表索引选择城市
Jun 24 #Javascript
jQuery实时统计输入框字数及限制
Jun 24 #jQuery
jQuery实现移动端下拉展现新的内容回弹动画
Jun 24 #jQuery
You might like
WML,Apache,和 PHP 的介绍
2006/10/09 PHP
一个PHP数组应该有多大的分析
2009/07/30 PHP
php学习笔记 面向对象中[接口]与[多态性]的应用
2011/06/16 PHP
php session安全问题分析
2011/06/24 PHP
解析php中curl_multi的应用
2013/07/17 PHP
codeigniter实现get分页的方法
2015/07/10 PHP
Laravel 对某一列进行筛选然后求和sum()的例子
2019/10/10 PHP
自写简单JS判断是否已经弹出页面
2010/10/20 Javascript
jQuery 联动日历实现代码
2012/05/31 Javascript
JS小功能(列表页面隔行变色)简单实现
2013/11/28 Javascript
js的toUpperCase方法用法实例
2015/01/27 Javascript
Bootstrap3学习笔记(二)之排版
2016/05/20 Javascript
html中鼠标滚轮事件onmousewheel的处理方法
2016/11/11 Javascript
多种方式实现js图片预览
2016/12/12 Javascript
微信小程序 开发之顶部导航栏实例代码
2017/02/23 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
2017/03/24 Javascript
浅谈vue首屏加载优化
2018/06/28 Javascript
vue--点击当前增加class,其他删除class的方法
2018/09/15 Javascript
[03:42]2018完美盛典-《加冕》
2018/12/16 DOTA
Python浅复制中对象生存周期实例分析
2018/04/02 Python
python初学者,用python实现基本的学生管理系统(python3)代码实例
2019/04/10 Python
Django后台admin的使用详解
2019/07/08 Python
Python面向对象之多态原理与用法案例分析
2019/12/30 Python
python爬虫实现获取下一页代码
2020/03/13 Python
Django 解决阿里云部署同步数据库报错的问题
2020/05/14 Python
通过实例简单了解Python sys.argv[]使用方法
2020/08/04 Python
Python系统公网私网流量监控实现流程
2020/11/23 Python
python使用yaml 管理selenium元素的示例
2020/12/01 Python
使用Python通过oBIX协议访问Niagara数据的示例
2020/12/04 Python
python多线程和多进程关系详解
2020/12/14 Python
浅谈html5 响应式布局
2014/12/24 HTML / CSS
德国游戏机商店:Konsolenkost
2019/12/08 全球购物
装饰工程师岗位职责
2014/06/08 职场文书
学校教研活动总结
2014/07/02 职场文书
2015年社区精神文明工作总结
2015/05/26 职场文书
2015年民兵整组工作总结
2015/07/24 职场文书