【Vue】vue项目中使用tinymce富文本组件(@tinymce/tinymce-vue)

2024-02-01 21:44

本文主要是介绍【Vue】vue项目中使用tinymce富文本组件(@tinymce/tinymce-vue),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【Vue】vue项目中使用tinymce富文本组件(@tinymce/tinymce-vue)

  • 一、安装
  • 二、前期准备工作
    • 1、去[官网](https://www.tiny.cloud/get-tiny/language-packages/)下载语言包;
    • 2、将下载的语言包复制到项目中的assets(存放路径您随意)下;
    • 3、到node_modules中找到tinymce对应的文件夹,将其中的skins文件夹复制到static(存放路径您随意)中;
    • 4、如果需要支持粘贴保留原格式,将powerpaste文件夹复制到static(存放路径您随意)中;
  • 三、插件使用&配置说明
    • 1、基本功能(不需要配置toolbar&plugins)
    • 2、扩展插件功能
    • 3、踩坑点
  • 四、效果
    • 1、基础功能(即不需配置toolbar、plugins)
    • 2、进阶效果

一、安装

npm install tinymce
npm install @tinymce/tinymce-vue

二、前期准备工作

1、去官网下载语言包;

在这里插入图片描述

2、将下载的语言包复制到项目中的assets(存放路径您随意)下;

在这里插入图片描述

3、到node_modules中找到tinymce对应的文件夹,将其中的skins文件夹复制到static(存放路径您随意)中;

4、如果需要支持粘贴保留原格式,将powerpaste文件夹复制到static(存放路径您随意)中;

powerpaste文件夹提取链接:https://pan.baidu.com/s/1Y7ziHe0Rgm2n5r1XcVEmNg
提取码: xcbz
在这里插入图片描述

三、插件使用&配置说明

1、基本功能(不需要配置toolbar&plugins)

toolbar描述
newdocument创建一个新文档
undo撤回
redo恢复
visualaid网格线
cut剪切
copy复制
paste粘贴
selectall全选
bold加粗
italic斜体
removeformat清除格式
alignright右对齐
alignjustify两边对齐
outdent减少缩进
indent增加缩进
forecolor前景色
backcolor背景色
fontsizeselect字号大小
formatselect标题大小
underline下划线
strikethrough删除线
subscript下标
superscript上标
superscript上标
在node_modules/tinymce/plugins目录中查看其他插件

2、扩展插件功能

除了以上的基本功能,TinyMCE编辑器还支持插件扩展,tinymce 通过添加插件plugins的方式来添加功能,在添加之前我们需要先来引入相应的插件,引入插件之后我们就可以在init中重新初始化下对应的toolbar(工具栏图标)和plugins(对应的插件组件)属性

toolbar插件引入(toolbar)描述
pastetextimport “tinymce/plugins/paste”;粘贴为纯文本
powerpasteimport “tinymce/plugins/powerpaste”;复制粘贴保留原格式
previewimport “tinymce/plugins/preview”;预览
codeimport “tinymce/plugins/code”;编辑源码
imageimport “tinymce/plugins/image”;插入图片
imageimport “tinymce/plugins/imagetools”;编辑图片
-import “tinymce/plugins/media”;插入视频
linkimport “tinymce/plugins/link”;超链接
previewimport “tinymce/plugins/preview”;预览
codeimport “tinymce/plugins/template”;模板
inserttableimport “tinymce/plugins/table”;插入表格
tablepropsimport “tinymce/plugins/table”;配置并插入表格
deletetableimport “tinymce/plugins/table”;删除表格
cellimport “tinymce/plugins/table”;表格单元配置
rowimport “tinymce/plugins/table”;表格行配置
columnimport “tinymce/plugins/table”;表格列配置
-import “tinymce/plugins/advlist”;高级列表
bullistimport “tinymce/plugins/lists”;项目符号
numlistimport “tinymce/plugins/lists”;编号列表
-在node_modules/tinymce/plugins目录中查看其他插件
<template><div><editor :id="tinymceId" :init="init"></div>
</template>
<script>
// 导入富文本
import tinymce from "tinymce/tinymce";
import Editor from "@tinymce/tinymce-vue";
import "tinymce/icons/default"; //富文本样式
// 配置富文本
import "tinymce/plugins/table";
import "tinymce/plugins/image";
import "tinymce/plugins/imagetools";
import "tinymce/plugins/autoresize";
import "tinymce/plugins/advlist"; //高级列表
import "tinymce/plugins/paste"; //可复制
import "tinymce/plugins/link";
import "tinymce/themes/silver/theme.min.js"; //引入富文本的主要脚本
import "tinymce/skins/ui/oxide/skin.min.css"; //富文本样式
const toolbar ="  undo redo restoredraft | fontselect fontsizeselect styleselect forecolor backcolor bold italic underline strikethrough  anchor link | alignleft aligncenter alignright alignjustify outdent indent lineheight| \
table tablemergecells  image  charmap emoticons hr pagebreak |bullist numlist | blockquote subscript superscript removeformat | \
insertdatetime print preview | fullscreen | bdmap indent2em  formatpainter axupimgs";
const plugins ="powerpaste autoresize print paste preview searchreplace autolink directionality visualblocks visualchars fullscreen image imagetools template  codesample table  charmap hr pagebreak nonbreaking anchor link insertdatetime advlist lists wordcount  textpattern help emoticons autosave ";
const fonts = ["宋体=宋体","微软雅黑=微软雅黑","新宋体=新宋体","黑体=黑体","楷体=楷体","隶书=隶书","Courier New=courier new,courier","AkrutiKndPadmini=Akpdmi-n","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,zapf dingbats",
];
export default {components: { Editor },data() {return {tinymceId:"vue-tinymce-" + +new Date() + ((Math.random() * 1000).toFixed(0) + ""), //富文本编辑器的id,init: {language_url: require("@/assets/langs/zh_CN.js"), // 语言包的路径,具体路径看自己的项目(前期工作请下载好语言包)language: "zh_CN",fontsize_formats:"12px 14px 16px 18px 20px 22px 24px 28px 32px 36px 48px 56px 72px", //字体大小font_formats: fonts.join(";"),//字体setup: function (editor) {//设置默认字体样式editor.on("init", function (e) {this.getBody().style.fontFamily = "宋体";});},min_height: 300,//编辑器最小高度statusbar: false, // 隐藏编辑器底部的状态栏paste_data_images: true, // 允许粘贴图像//主题样式路径skin_url:(process.env.API_ROOT == "//xx.woa.com/wxgame"? "//xx.woa.com/wxgame": process.env.API_ROOT == "//xx.woa.com/wxgame-test"?"//xx.woa.com/wxgame-test": "") + "/static/skins/ui/oxide",// 必选 skin路径,具体路径看自己的项目//为编辑区指定css文件//  content_css:"./static/css/content.css",//一般我们这里都是直接获取路径是没有问题的,但是有坑点,往下看会有解释原因,skin_url,powerpaste同理//正确写法,根据自己的环境判断拼接根路径// (process.env.API_ROOT == 测试环境路径//  ? 测试环境路径// : process.env.API_ROOT == 现网环境路径//  ? 现网环境路径// : "") content_css:(process.env.API_ROOT == "//xx.woa.com/wxgame"? "//xx.woa.com/wxgame": process.env.API_ROOT == "//xx.woa.com/wxgame-test"?"//xx.woa.com/wxgame-test": "") + "/static/css/content.css",// 添加复制可保留原格式扩展插件开始external_plugins: {//powerpaste 路径powerpaste:(process.env.API_ROOT == "//xx.woa.com/wxgame"? "//xx.woa.com/wxgame": process.env.API_ROOT == "//xx.woa.com/wxgame-test"?"//xx.woa.com/wxgame-test": "") + "/static/powerpaste/plugin.min.js",},powerpaste_word_import: "propmt", // 参数可以是propmt, merge, clear,效果自行切换对比powerpaste_html_import: "propmt", // propmt, merge, clearpowerpaste_allow_local_images: true,// 添加复制可保留原格式扩展插件结束image_dimensions: true, // 保存图片的时候可以设置大小//表格默认样式table_default_styles: {"line-height": "47px","border-collapse": "collapse",width: "100%","border-color": "#EBEEF5","box-sizing": " border-box",},plugins: plugins,toolbar: toolbar,},};},mounted() {tinymce.init({});},
};
</script>

3、踩坑点

  • 踩坑点:开发环境测试无问题,等项目打包上线后,发现skin_url、content_css和powerpasteurl不生效;
  • 原因:打包后路径不对,自己根据自己的项目环境进行拼接url路径;

四、效果

1、基础功能(即不需配置toolbar、plugins)

在这里插入图片描述

2、进阶效果

在这里插入图片描述
最后,如果帮到您
在这里插入图片描述

这篇关于【Vue】vue项目中使用tinymce富文本组件(@tinymce/tinymce-vue)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/668570

相关文章

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

prometheus如何使用pushgateway监控网路丢包

《prometheus如何使用pushgateway监控网路丢包》:本文主要介绍prometheus如何使用pushgateway监控网路丢包问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录监控网路丢包脚本数据图表总结监控网路丢包脚本[root@gtcq-gt-monitor-prome

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

SpringBoot中如何使用Assert进行断言校验

《SpringBoot中如何使用Assert进行断言校验》Java提供了内置的assert机制,而Spring框架也提供了更强大的Assert工具类来帮助开发者进行参数校验和状态检查,下... 目录前言一、Java 原生assert简介1.1 使用方式1.2 示例代码1.3 优缺点分析二、Spring Fr

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件

SpringBoot线程池配置使用示例详解

《SpringBoot线程池配置使用示例详解》SpringBoot集成@Async注解,支持线程池参数配置(核心数、队列容量、拒绝策略等)及生命周期管理,结合监控与任务装饰器,提升异步处理效率与系统... 目录一、核心特性二、添加依赖三、参数详解四、配置线程池五、应用实践代码说明拒绝策略(Rejected

C++ Log4cpp跨平台日志库的使用小结

《C++Log4cpp跨平台日志库的使用小结》Log4cpp是c++类库,本文详细介绍了C++日志库log4cpp的使用方法,及设置日志输出格式和优先级,具有一定的参考价值,感兴趣的可以了解一下... 目录一、介绍1. log4cpp的日志方式2.设置日志输出的格式3. 设置日志的输出优先级二、Window

Ubuntu如何分配​​未使用的空间

《Ubuntu如何分配​​未使用的空间》Ubuntu磁盘空间不足,实际未分配空间8.2G因LVM卷组名称格式差异(双破折号误写)导致无法扩展,确认正确卷组名后,使用lvextend和resize2fs... 目录1:原因2:操作3:报错5:解决问题:确认卷组名称​6:再次操作7:验证扩展是否成功8:问题已解