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 相关文章推荐
js静态方法与实例方法分析
Jul 04 Javascript
javascript实现可改变滚动方向的无缝滚动实例
Jun 17 Javascript
简介JavaScript中fixed()方法的使用
Jun 08 Javascript
JavaScript数组对象实现增加一个返回随机元素的方法
Jul 27 Javascript
AngularJs定时器$interval 和 $timeout详解
May 25 Javascript
Angular4.x通过路由守卫进行路由重定向实现根据条件跳转到相应的页面(推荐)
May 10 Javascript
从源码里了解vue中的nextTick的使用
Nov 22 Javascript
vue计算属性computed、事件、监听器watch的使用讲解
Jan 21 Javascript
JS中的算法与数据结构之常见排序(Sort)算法详解
Aug 16 Javascript
js中addEventListener()与removeEventListener()用法案例分析
Mar 02 Javascript
javascript实现前端input密码输入强度验证
Jun 24 Javascript
js前端对于大量数据的展示方式及处理方法
Dec 02 Javascript
国内常用的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
正则表达式语法
2006/10/09 Javascript
来自phpguru得Php Cache类源码
2010/04/15 PHP
input file获得文件根目录简单实现
2013/04/26 PHP
Yii调试SQL的常用方法
2014/07/09 PHP
详解WordPress开发中的get_post与get_posts函数使用
2016/01/04 PHP
PHP mysql事务问题实例分析
2016/01/18 PHP
php cookie工作原理与实例详解
2016/07/18 PHP
php实现登录tplink WR882N获取IP和重启的方法
2016/07/20 PHP
PHP版单点登陆实现方案的实例
2016/11/17 PHP
Laravel5.5 数据库迁移:创建表与修改表示例
2019/10/23 PHP
JSONP获取Twitter和Facebook文章数的具体步骤
2014/02/24 Javascript
JavaScript异步编程Promise模式的6个特性
2014/04/03 Javascript
javascript引用赋值(地址传值)用法实例
2015/01/13 Javascript
关于JavaScript作用域你想知道的一切
2016/02/04 Javascript
清除输入框内的空格
2016/12/21 Javascript
JQuery实现动态操作表格
2017/01/11 Javascript
Bootstrap面板(Panels)的简单实现代码
2017/03/17 Javascript
js评分组件使用详解
2017/06/06 Javascript
jQuery常用选择器详解
2017/07/17 jQuery
vue地址栏直接输入路由无效问题的解决
2018/11/15 Javascript
详解关于html,css,js三者的加载顺序问题
2019/04/10 Javascript
了不起的11个JavaScript代码重构最佳实践小结
2021/01/11 Javascript
Python使用新浪微博API发送微博的例子
2014/04/10 Python
Python中super()函数简介及用法分享
2016/07/11 Python
利用pyinstaller打包exe文件的基本教程
2019/05/02 Python
PIL对上传到Django的图片进行处理并保存的实例
2019/08/07 Python
pytorch自定义初始化权重的方法
2019/08/17 Python
Python基于Faker假数据构造库
2020/11/30 Python
意大利咖啡、浓缩咖啡和浓缩咖啡机:illy caffe
2019/03/20 全球购物
岗位廉政承诺书
2014/03/27 职场文书
店铺转让协议书(2014版)
2014/09/23 职场文书
授权委托书协议书
2014/10/16 职场文书
python小程序之飘落的银杏
2021/04/17 Python
Vue ECharts实现机舱座位选择展示功能
2022/05/15 Vue.js
GoFrame框架数据校验之校验结果Error接口对象
2022/06/21 Golang
Vue3实现简易音乐播放器组件
2022/08/14 Vue.js