当前位置: 首页 > 编程日记 > 正文

vue 集成富文本tinymce

开发环境

1. vscode

开发语言

1. vue
2. javaScript

插件安装

1. npm install tinymce -S
2. 可以使用里面的文件, 下载后可以在node_modules 里面查看如下未目录结构

clipboard.png

3. 可以将整个结构拷在static里面,为了节省打包后的文件大小可以将tinymce.min.js以cdn方式导入放在index.html中<script src="https://cdnjs.cloudflare.com/ajax/libs/tinymce/4.7.5/tinymce.min.js"></script>
4. 附上封装的代码可以直接导入使用<template>

<div>

<textarea :id="Id"></textarea>

</div>
</template>
<script>
import "tinymce/langs/zh_CN.js"; // 引入中文包地址
// import axios from "axios"; // 可导入axios文件进行上传图片
export default {
data() {

const Id = Date.now();
return {Id: Id, // 构造tinymce的选择器Editor: null,tinymceConfig: {// GLOBALheight: 500,theme: "modern",menubar: false,toolbar: `styleselect | fontselect | formatselect | fontsizeselect | forecolor backcolor | bold italic underline strikethrough | image  media | table | alignleft aligncenter alignright alignjustify | outdent indent | numlist bullist | preview removeformat  hr | paste code  link | undo redo | fullscreen `,plugins: `pasteimportcssimagecodetableadvlistfullscreenlinkmedialiststextcolorcolorpickerhrpreview`,// CONFIGforced_root_block: "p",force_p_newlines: true,importcss_append: true,skin_url: "/static/tinymce/skins/lightgray", // 可以把node_modules 下面的文件导入到static然后引入到这里language_url: "/static/tinymce/langs/zh_CN.js", // 导入中文包language: "zh_CN",// CONFIG: ContentStyle 这块很重要, 在最后呈现的页面也要写入这个基本样式保证前后一致, `table`和`img`的问题基本就靠这个来填坑了content_style: `*                         { padding:0; margin:0; }html, body                { height:100%; }img                       { max-width:100%; display:block;height:auto; }a                         { text-decoration: none; }iframe                    { width: 100%; }p                         { line-height:1.6; margin: 0px; }table                     { word-wrap:break-word; word-break:break-all; max-width:100%; border:none; border-color:#999; }.mce-object-iframe        { width:100%; box-sizing:border-box; margin:0; padding:0; }ul,ol                     { list-style-position:inside; }`,insert_button_items: "image link | inserttable",// CONFIG: Pastepaste_retain_style_properties: "all",paste_word_valid_elements: "*[*]", // word需要它paste_data_images: true, // 粘贴的同时能把内容里的图片自动上传,非常强力的功能paste_convert_word_fake_lists: false, // 插入word文档需要该属性paste_webkit_styles: "all",paste_merge_formats: true,nonbreaking_force_tab: false,paste_auto_cleanup_on_paste: false,// CONFIG: Fontfontsize_formats: "10px 11px 12px 14px 16px 18px 20px 24px",// CONFIG: StyleSelectstyle_formats: [{title: "首行缩进",block: "p",styles: { "text-indent": "2em" }},{title: "行高",items: [{ title: "1", styles: { "line-height": "1" }, inline: "span" },{title: "1.5",styles: { "line-height": "1.5" },inline: "span"},{ title: "2", styles: { "line-height": "2" }, inline: "span" },{title: "2.5",styles: { "line-height": "2.5" },inline: "span"},{ title: "3", styles: { "line-height": "3" }, inline: "span" }]}],// FontSelectfont_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,zapf dingbats`,// Tabtabfocus_elements: ":prev,:next",object_resizing: true,// Imageimagetools_toolbar:"rotateleft rotateright | flipv fliph | editimage imageoptions"}
};

},
props: {

value: {default: "",type: String
},
config: {type: Object,default: () => {return {theme: "modern",height: 300};}
},
// 该参数就是上传文件的url
url: {default: "",type: String
},
//上传文件类型
accept: {default: "image/jpeg, image/png, image/jpg,",type: String
},
maxSize: {default: 2097152,type: Number
},
withCredentials: {default: false,type: Boolean
}

},
mounted() {

this.init();

},
beforeDestroy() {

// 销毁tinymce
//   window.tinymce.remove(`$#{this.Id}`)

},
methods: {

init() {const self = this;this.Editor = window.tinymce.init({// 默认配置...this.tinymceConfig,// 图片上传images_upload_handler: function(blobInfo, success, failure, progress) {if (blobInfo.blob().size > self.maxSize) {failure("文件体积过大");}if (self.accept.indexOf(blobInfo.blob().type) > -1) {uploadPic();} else {failure("图片格式错误");}function uploadPic() {// 用axios 上传文件// progress(0);// let param = new FormData();// let config = {//   headers: {//     "Content-Type": "multipart/form-data"//   }// };// param.append("file", blobInfo.blob());// console.log('axios', axios);// axios//   .post("http://operate-dev.winchaingroup.com/api/upload", param, config)//   .then(response => {//     success(response.data.data);//     self.$emit("on-upload-complete", [json, success, failure]);//     progress(100);//   })//   .catch(error => {//     console.log("err", error);//   });// 用ajax上传文件const xhr = new XMLHttpRequest();let createFrom = document.createElement("form");let FromData = new FormData(createFrom);xhr.withCredentials = self.withCredentials;xhr.open("POST", self.url);xhr.onload = function() {if (xhr.status !== 200) {// 抛出 'on-upload-fail' 钩子failure("上传失败: " + xhr.status);return;}const json = JSON.parse(xhr.responseText);// success函数中的参数就是你上传文件返回的urlsuccess(json.data);progress(100);// 抛出 'on-upload-complete' 钩子};FromData.append("file", blobInfo.blob());xhr.send(FromData);}},// prop内传入的的config...this.config,// 挂载的DOM对象selector: `#${this.Id}`,setup: editor => {// 抛出 'on-ready' 事件钩子editor.on("init", () => {self.loading = false;editor.setContent(self.value);});// 抛出 'input' 事件钩子,同步value数据editor.on("input change undo redo", () => {});}});
}

}
};
</script>

5. 在组件中导入即可使用import tinymce from './tinymce/index'

引用

https://www.bootcdn.cn/tinymce/     // tinymce地址

相关文章:

c语言中如何设计和编写一个应用系统?

C程序中,如何设计和编写一个应用系统?一、 C语言文件的操作1、 文件操作的基本方法&#xff1a;C语言将计算机的输入输出设备都看作是文件。例如&#xff0c;键盘文件、屏幕文件等.向屏幕输出一个信息&#xff0c;例如“Hello”是#include.h>int main(){printf("Hello…

深圳杯---人才吸引力评价模型研究

人才吸引力评价模型研究 在世界各国和全国各地都加大争夺人才的背景下&#xff0c;一个城市要保持其竞争活力和创新力&#xff0c;必须与时俱进地但不盲目地调整相关人才吸引政策。2018年深圳市将加大营商环境改革力度作为一项重要工作&#xff0c;以吸引更多优秀的高新企业和…

不写容易出错的代码

下面2段代码都是完成商品名称的更新&#xff0c;只是第一种情况数据源是list第二种是map 第一代代码是从List里获取第0个 entity.setProduct_name(productList.get(0).getName()); 第二段代码从map里获取键值 entity.setProduct_name(productMap.get(pid).getName())); 如果…

【Vue】IView之table组件化学习(二)

最基本的绑定table是这样的&#xff0c;需要columns和data两个属性。 <template><Card><h4>表格栗子</h4><Table :columns"cols" :data"stuList"></Table></Card> </template><script> export defa…

show-busy-java-threads查找CPU占用高

背景&#xff1a;需要查找线上CPU占用过高的Java线程在做什么。 可以使用top命令找出占CPU高的进程 #top 然后按shiftC 按CPU占比排序 然后把进程中占比高的线程id找出来&#xff0c;这个是常见的套路&#xff0c;但是这样做比较繁琐。 可以使用show-busy-java-threads工具…

了解机器学习的八大专业术语

转自&#xff1a;https://www.sohu.com/a/217453268_178466 1 自然语言处理 自然语言处理对于许多机器学习方法来说是一个常用的概念&#xff0c;它使得计算机理解并使用人所读或所写的语言来执行操作成为了可能。 自然语言处理最重要的最有用的实例&#xff1a; ① 文本分类…

34.TokenInterceptor防止表单重复提交

转自&#xff1a;https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 由于某些原因&#xff0c;用户在进行类似表单提交的操作后&#xff0c;以为表单未被提交&#xff0c;会进行多次的重复提交。为了避免用户多次提交给服务器带来负荷。我们会对表单提交这样的操作进…

使用arthas采集火焰图

火焰图是用图形化的方式来展现profiler工具采集的性能数据&#xff0c;对数据进行统计和分析&#xff0c;方便找出性能热点。 现在我们使用arthas采集JVM的火焰图。 1.首先你需要安装arthas 说是安装其实就是下载解压&#xff0c;arthas是不需要安装的。 下载 — Arthas 3.5…

sudo配置文件详解及实战

2019独角兽企业重金招聘Python工程师标准>>> 安装NGINX之后每次都需要切换ROOT用户做配置文件修改和启动&#xff0c;为了加强安全&#xff0c;ROOT用户一般是不允许直接提供给应用开发人员或者运维人员的&#xff0c;所以需要提供一种方法可以一般用户执行ROOT用户…

Centos中文输入法安装以及切换

鼓捣鼓捣&#xff08;我是一只菜鸟&#xff09;&#xff0c;终于在我的Centos上面装上我的大中华输入法了&#xff0c;哈哈哈哈下面就简单描述下安装过程吧&#xff01;&#xff01;&#xff01;centos6.5用yum安装中文输入法打开终端&#xff0c;进入root用户&#xff08;命令…

【MATLAB】矩阵信息的获取

1、矩阵结构 矩阵的结构是指矩阵子元素的排列方式。 函数名称函数功能isempty(A)检测矩阵是否为空isscalar(A)检测矩阵是否是单元素的标量矩阵isvector(A)检测矩阵是否是只具有一行或一列元素的一维向量issparse(A)检测数组是否是系数矩阵 返回1表示该矩阵是某一特定类型的矩…

Android Gradle Plugin 源码解析(上)

一、源码依赖 本文基于: android gradle plugin版本&#xff1a; com.android.tools.build:gradle:2.3.0 gradle 版本&#xff1a;4.1 Gradle源码总共30个G&#xff0c;为简单起见&#xff0c;方便大家看源码&#xff0c;此处通过gradle依赖的形式来查看源码&#xff0c;依赖源…

Guice系列之用户指南(七)

原文地址&#xff1a;https://code.google.com/p/google-guice/wiki/ToConstructorBindings Constructor Bindings&#xff08;构造器绑定&#xff09;&#xff1a;在父类型上绑定子类实现的构造函数。 贴代码&#xff1a; 12345678910111213141516171819202122232425262728293…

Linux系统火焰图

CentOS7.8 安装perf #yum install perf 执行perf 执行perf record 命令&#xff0c;记录该PID的行为 #perf record -a -g -p 14851 -- sleep 30 --30秒后退出 需要注意后面生成svg图片的所有命令要和当前perf在同一目录&#xff0c;不然会报错。 #perf report 安装git …

深圳杯---垃圾焚烧厂的经济补偿问题

垃圾围城是世界性难题&#xff0c;在今天的中国显得尤为突出。2012年全国城市生活垃圾清运量达到1.71亿吨&#xff0c;比2010年增长了1300万吨。数据显示&#xff0c;目前全国三分之二以上的城市面临垃圾围城问题&#xff0c;垃圾堆放累计侵占土地75万亩。因此&#xff0c;垃圾…

make -j8以及linux下查看cpu的核数

# 总核数 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 物理CPU个数 X 每颗物理CPU的核数 X 超线程数# 查看物理CPU个数 cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l# 查看每个物理CPU中core的个数(即核数) cat /proc/cpuinfo| grep "cpu …

IDEA2021.3.2拉取maven报错maven-default-http-blocker解决方法

因为IDEA2021.3.2 的Maven是3.8.1后&#xff0c;mvn编译的时候总是提示拉不到依赖&#xff0c;报错如下&#xff1a; Could not validate integrity of download from http://0.0.0.0/... 因为使用HTTP协议下载依赖&#xff0c;可能会导致中间人攻击。 所以Maven 3.8.1就禁止…

2013高教社杯---B碎纸片的拼接复原

破碎文件的拼接在司法物证复原、历史文献修复以及军事情报获取等领域都有着重要的应用。传统上&#xff0c;拼接复原工作需由人工完成&#xff0c;准确率较高&#xff0c;但效率很低。特别是当碎片数量巨大&#xff0c;人工拼接很难在短时间内完成任务。随着计算机技术的发展&a…

oracle--with as

with as把一段查询结果放在临时表&#xff0c;后面的查询中可多次使用 语法&#xff1a; with 别名 as(select * from table) 或 with 别名1 as(select * from table1), ............. 别名n as(select * from tablen) 示例&#xff1a; with 别名 as(select * from table wher…

Flask上下文管理源码分析

略略略...转载于:https://www.cnblogs.com/dzf123456/p/9446220.html

IDEA函数调用关系图插件

Call Graph是一款IDEA插件&#xff0c;用于可视化基于IntelliJ平台的IDE的函数调用图。 这个插件的目标是让代码更容易理解&#xff0c;有助于读懂和调试代码。 安装插件 安装后&#xff0c;通过View - Tool Windows - Call Graph &#xff0c;激活窗口 激活后&#xff0c;需要…

[Notice]博客地址转移 vitostack.com

个人博客地址转移至vitostack.com 这里可能不会经常更新。 欢迎访问新地址。 转载于:https://www.cnblogs.com/Vito2008/p/5595430.html

【MATLAB】find 函数 总结

【MATLAB版本为2014a】 MATLAB中函数find函数的作用是进行矩阵元素的查找&#xff0c;它通常与关系函数和逻辑运算相结合。 indfind(X,...)&#xff1a;该函数查找矩阵中的非零元素&#xff0c;函数返回这些元素的双下标[row,col]find(X,...)&#xff1a;该函数查找矩阵X中的…

与HTTP关系密切的协议:IP、TCP、DNS

TCP/IP协议族的协议挺多的&#xff0c;我们精力有限&#xff0c;不可能一个个都了如指掌&#xff0c;那就挑一些与HTTP协议关系了解吧~ 负责传输的IP协议 按层次分&#xff0c;IP协议位于网络层。 IP协议的作用是把各种数据包传送给对方。而要保证确实传送到对方那里&#xff0…

C#精髓 第四讲 GridView 72般绝技

说明&#xff1a;准备出一个系列&#xff0c;所谓精髓讲C#语言要点。这个系列没有先后顺序&#xff0c;不过尽量做到精。可能会不断增删整理&#xff0c;本系列最原始出处是csdn博客,谢谢关注。 C#精髓 第四讲 GridView 72般绝技 作者&#xff1a;清清月儿 主页&#xff1a;ht…

Android layer-list(3)

&#xfeff;&#xfeff;Android layer-list&#xff08;3&#xff09; 在附录文章3、4的基础上&#xff0c;就Android layer-list再写一个较为复杂的应用。 先写布局文件&#xff0c;该布局涉及到LinearLayoutCompat&#xff0c;关于LinearLayoutCompat参看附录文章5。 布局文…

【MATLAB】二维矩阵可视化 MATLAB绘图

基本绘图函数 1、plot(y) 如果y是向量&#xff0c;则采用向量的索引值作为横坐标值&#xff0c;以向量元素的值作为纵坐标值。 如果y是实数矩阵&#xff0c;则相当于对y的每一列进行二维绘图。 如果y是复数组成的向量&#xff0c;则相当于plot(real(y),imag(y))。 2、plot…

phpstudy一个域名配置两个网站(一个是thinkphp5,一个是原生php)

phpstudy一个域名配置两个网站&#xff08;一个是thinkphp5&#xff0c;一个是原生php&#xff09; 一、总结 一句话总结&#xff1a;把原生php的网站直接放到thinkphp5的public目录下可以解决以stem.aaaa.hk\**方式访问原生网站会被当成thinkphp子模块的问题 最后的解决方法&a…

bzoj3442 学习小组

目前处于迷之TLE状态 -----6.21更新 已AC 3442: 学习小组 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 200 Solved: 87Description 【背景】坑校准备鼓励学生参加学习小组。【描述】共有n个学生&#xff0c;m个学习小组&#xff0c;每个学生有一定的喜好&#xff0c;只愿…

C语言经典著作导读

本人不是卖书的&#xff0c;我也不会给出任何购书链接&#xff0c;只是给C语言学习者推荐一条学习的方向。如果你喜欢看电子书网上很多&#xff0c;如果你喜欢纸质那么就买吧&#xff0c;经典的书值得收藏&#xff0c;是对版权的尊重&#xff01; 基础篇 1.《写给大家看的C语言…