vue3 中使用 TinyMCE 富文本编辑器

1. TinyMCE 官方网站地址(可能需要魔法上网才能访问)

我们直接找到 TinyMCE 关于 vue 的下载地址,其他框架的下载也在这里

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/4199789a41e34801835e1bb6ae45d648.png

2. 向下找,找到关于vue3下载的地方

下载命令

npm install --save "@tinymce/tinymce-vue@^5"

例子代码,把代码直接复制到你的项目中去就能打开

<script setup>
import Editor from '@tinymce/tinymce-vue'
</script><template><main id="sample"><img alt="Vue logo" class="logo" src="./assets/logo.svg" width="125" height="125" /><Editorapi-key="no-api-key":init="{plugins: 'lists link image table code help wordcount'}"/></main>
</template><style scoped>
.logo {display: block;margin: 0 auto 2rem;
}@media (min-width: 1024px) {#sample {display: flex;flex-direction: column;place-items: center;width: 1000px;}
}
</style>

在这里插入图片描述

3. 但是你会发现一个问题

富文本编辑器是只读状态,并有一段提示语,告诉你要使用API-key才能使用完整功能
在这里插入图片描述
他这个提示里面有一个地址链接,点击进去看
找到如何获取一个API-key,然后点击进行登录获取免费的API-key

在这里插入图片描述
点击这个永久免费的版本
在这里插入图片描述
然后会让你进行登录,两个快捷登录选项,一个是goole账号登录,一个是github账号登录,我这边选择的是github登录

登录进去之后,找到vue.js的语法版本,找到下面的代码,直接复制下来,粘贴到你的代码中就可以使用了

在这里插入图片描述
这样就可以使用了
在这里插入图片描述

4. 汉化

这个版本的 TinyMCE 汉化很简单,只需要在上面初始化的版本中加上这句 language: 'zh_CN' 就可以了

在这里插入图片描述
在这里插入图片描述

5. 上传本地图片

TinyMCE如果不设置的话,只能上传有地址的图片,或者将图片直接拖拽进富文本编辑器,或者直接截图复制进富文本编辑器中都行

但是如果你想要选择相册中的图片上传的话,你就加上下面这段就可以了

file_picker_callback: (cb, value, meta) => {const input = document.createElement('input');input.setAttribute('type', 'file');input.setAttribute('accept', 'image/*');input.addEventListener('change', (e) => {const file = e.target.files[0];const reader = new FileReader();reader.addEventListener('load', () => {const id = 'blobid' + new Date().getTime();const blobCache = tinymce.activeEditor.editorUpload.blobCache;const base64 = reader.result.split(',')[1];const blobInfo = blobCache.create(id, file, base64);blobCache.add(blobInfo);cb(blobInfo.blobUri(), { title: file.name });});reader.readAsDataURL(file);});input.click();},

在这里插入图片描述

注意注意注意::
如果这段代码复制进去之后你发现没有 tinymce 这个变量
你需要定义一个ref对象,获取 Editor 的示例
然后将 tinymce.activeEditor.editorUpload.blobCache 修改为 editorRef.value.getEditor().editorUpload.blobCache
这样就可以了

<Editor v-model="content" ref="editorRef" api-key="*********" :init="TinyMCEInitConfig" />file_picker_callback: (cb, value, meta) => {const input = document.createElement('input')input.setAttribute('type', 'file')input.setAttribute('accept', 'image/*')input.addEventListener('change', (e) => {const file = e.target.files[0]const reader = new FileReader()reader.addEventListener('load', () => {const id = 'blobid' + new Date().getTime()const blobCache = editorRef.value.getEditor().editorUpload.blobCacheconst base64 = reader.result.split(',')[1]const blobInfo = blobCache.create(id, file, base64)blobCache.add(blobInfo)cb(blobInfo.blobUri(), { title: file.name })})reader.readAsDataURL(file)})input.click()}

这样我们就完成了一个简单的富文本编辑器的初始化

总结一下

  1. 找到官网,找到下载vue版本的地址上
  2. 执行下载命令,将官网上的实例代码复制粘贴上去
  3. 注册账号,获取免费的API-key
  4. 汉化
  5. 优化组件行为动作,比如上传图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/721228.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 模拟实现shell【简单实现】

shell的模拟实现 我们知道shell是一个永不退出的程序&#xff0c;所以他应该是一个死循环&#xff0c;并且shell为了防止影响到自己&#xff0c;我们在命令行上输入的所有命令都是由shell的子进程来执行的&#xff0c;所以它应该要有创建子进程的相关函数&#xff0c;当然也会…

loadrunner lr解决参数化一次取多条记录【一对多问题】

场景&#xff1a;批量进行工作汇报&#xff0c;一个项目下选择三个工作项进行汇报&#xff1b; 问题&#xff1a;项目GUID变化一次&#xff0c;工作项GUID要取三个值&#xff0c;也就是变化三次&#xff1b; 我们知道&#xff0c;在Parameter List中可以设置参数取值规则&…

Tomcat(二) 动静分离

一、(TomcatNginx)动静分离 1、单机反向代理 利用 nginx 反向代理实现全部转发至指定同一个虚拟主机 客户端curl www.a.com 访问nginx服务&#xff0c;nginx服务通过配置反向代理proxy_pass www.a.com:8080&#xff0c;最终客户端看到的是www.a.com 实验中&#xff1a;7-3 做客…

#QT(智能家居界面-界面切换)

1.IDE&#xff1a;QTCreator 2.实验 3.记录 &#xff08;1&#xff09;创建一个新界面&#xff08;UI界面&#xff09; &#xff08;2&#xff09;可以看到新加入一个ui文件&#xff0c;双击打开&#xff0c;设置窗口大小与登录界面一致 &#xff08;3&#xff09;加入几个PUS…

python 基础知识点(蓝桥杯python科目个人复习计划58)

今日复习内容&#xff1a;做题 例题1&#xff1a;仙境诅咒 问题描述&#xff1a; 在一片神秘的仙境中&#xff0c;有N位修仙者&#xff0c;他们各自在仙境中独立修炼&#xff0c;拥有他们独特的修炼之地和修炼之道&#xff0c;修炼者们彼此之间相互尊重&#xff0c;和平相处…

P-States/C-States/S-States/G-States/D-States

P-States是指处理器的性能状态&#xff0c;可以根据需要调整处理器的工作频率和电压来平衡性能和能效。 S-States是指系统的睡眠状态&#xff0c;可以让系统在空闲时进入低功耗状态以节省能量。 G-States是系统的全局状态&#xff0c;通常用于描述整个系统的运行状态。 C-St…

用ChatGPT计算植被归一化指数NDVI并出图的详细教程

用ChatGPT结合GIS计算植被归一化指数NDVI出图教程 用ENVI计算比较繁琐&#xff0c;如今AI的盛行&#xff0c;我们可以轻松解决计算问题&#xff0c;只需1一分钟变可以出图。 详细教学请看上方视频步骤。 更多ChatGPT教学内容请见&#xff1a;ChatGPT结合GIS&#xff1a;一分钟…

如何在Vue中进行单元测试?

前端开发中&#xff0c;单元测试是一个非常重要的环节&#xff0c;它可以帮助我们在开发过程中发现潜在的问题&#xff0c;并确保我们的代码在不断迭代的过程中依然能够保持稳定。在Vue中进行单元测试同样非常重要&#xff0c;本文将介绍如何在Vue项目中进行单元测试。 在Vue中…

Qt::TabWidget

在Tab的右上角添加控件 QPushButton *add new QPushButton; add->setText(""); add->resize(30,30); ui->tabWidget->setCornerWidget(add,Qt::TopRightCorner); 结果&#xff1a; Tab添加子页 QWidget*newp new QWidget; ui->tabWidget->add…

【脑切片图像分割】MATLAB 图像处理 源码

1. 简单图像处理 加载图像 Brain.jpg&#xff0c;使用直方图和颜色分割成区域这些区域有不同的颜色。 这是一个更高级的问题&#xff0c;有多个解决它的方法。 例如&#xff0c;您可以计算具有特定数字的图像的直方图&#xff08;例如 16 - 32&#xff09;&#xff0c;找到直方…

蜂窝物联:智慧生态茶园建设方案

一、项目背景 为了进一步提高茶产业集约化、产业化发展水平&#xff0c;充分运用物联网、互联网等高新技术为产业赋能&#xff0c;加速推动安溪茶产业转型升级&#xff0c;县政府决定在安溪县推进“安溪智慧生态茶园项目”&#xff0c;并以茶叶重镇感德镇实施“安溪智慧生态茶…

分享一本好书《大模型应用开发极简入门:基于GPT-4和ChatGPT》

如果问个问题&#xff1a;有哪些产品曾经创造了伟大的奇迹&#xff1f;ChatGPT 应该会当之无愧入选。仅仅发布 5 天&#xff0c;ChatGPT 就吸引了 100 万用户——当然&#xff0c;数据不是关键&#xff0c;关键是其背后的技术开启了新的 AI 狂潮&#xff0c;成为技术变革的点火…

Python知识汇总

重要链接&#xff1a; matplotlib库&#xff1a;matplotlib — Matplotlib 3.5.1 documentation DataFrame库&#xff1a;DataFrame — pandas 2.2.1 documentation (pydata.org) Python Matplotlib 实现散点图、曲线图、箱状图、柱状图示例&#xff1a;Python Matplotlib 实…

深度学习预测分析API:金融领域的Game Changer

&#x1f680; 引言 在这个AI遍地开花的时代&#xff0c;谁能成为金融领域的真正Game Changer&#xff1f;那必然是是深度学习预测分析API。如大脑般高效运转的系统不仅颠覆了传统操作&#xff0c;更是以无与伦比的速度和精度赋予了金融数据以全新的生命。 &#x1f4bc; 广泛…

uniapp制作--进步器的选择

介绍&#xff1a; 进步器的选择,一般用于商城购物选择物品数量的场景 注意&#xff1a;该输入框只能输入大于或等于0的整数 效果展示&#xff1a; 代码展示&#xff1a; 以下是一个简单的购物车页面示例&#xff0c;包括选择商品和显示数量的功能&#xff1a; 在这个示例中…

探索人工智能的关键术语与方法

目录 前言1 机器学习&#xff08;Machine Learning&#xff09;2 数据科学&#xff08;Data Science&#xff09;3 监督学习&#xff08;Supervised Learning&#xff09;4 无监督学习&#xff08;Unsupervised Learning&#xff09;5 深度学习&#xff08;Deep Learning&#…

紫光展锐T618_4G安卓核心板方案定制

紫光展锐T618核心板是一款采用纯国产化方案的高性能产品&#xff0c;搭载了开放的智能Android操作系统&#xff0c;并集成了4G网络&#xff0c;支持2.5G5G双频WIFI、蓝牙近距离无线传输技术以及GNSS无线定位技术。 展锐T618核心板应用旗舰级 DynamlQ架构 12nm 制程工艺&#x…

私有化部署自己的ChatGPT,免费开源的chatgpt-next-web搭建

随着AI的应用变广&#xff0c;各类AI程序已逐渐普及&#xff0c;尤其是在一些日常办公、学习等与撰写/翻译文稿密切相关的场景&#xff0c;大家都希望找到一个适合自己的稳定可靠的ChatGPT软件来使用。 ChatGPT-Next-Web就是一个很好的选择。它是一个Github上超人气的免费开源…

简单介绍一下Qt动画系统,并举例说明如何使用

目录 Qt动画系统介绍 分类举例说明 1. 属性动画&#xff08;Property Animation&#xff09;&#xff1a; 2. 并行动画&#xff08;Parallel Animation&#xff09;&#xff1a; 3. 顺序动画&#xff08;Sequential Animation&#xff09;&#xff1a; 4. 动画组&#xf…

闯入监测报警摄像机

闯入监测报警摄像机是用于监测和报警未经授权者闯入特定区域的安全设备。该摄像机通常设置在建筑物、仓库、办公室等需要保护的场所&#xff0c;用于监控周围环境并及时警示相关人员。闯入监测报警摄像机是一种集视频监控和报警功能于一体的安全设备&#xff0c;旨在防范和监测…