Vue3中使用Tinymce富文本编辑器(版本最新)

news2024/11/14 1:55:02

使用目录

  • 前言
  • 一、安装方法一(npm、yarn下载)
  • 二、安装方法二(下载官网压缩包方法)——推荐
  • 总结


前言

最近使用了WangEditor编辑器和Tinymce编辑器,使用方法如下(采用的编辑器版本是官网最新的)
汉化包下载地址
官网下载地址
中文文档


一、安装方法一(npm、yarn下载)

在这里插入图片描述
PS: 由于汉化失败,所以就没采用该方法

  • 安装方法
yarn add "@tinymce/tinymce-vue@^5" // yarn 
npm install "@tinymce/tinymce-vue@^5" // npm 
  • 新建一个Vue文件
<template>
  <div class="app-container">
    <Editor
      id="tinymce"
      v-model="tinymceHtml"
      :init="init"
      @paste="customPaste($event)"
    />
    <!-- <div v-html="tinymceHtml"></div> -->
  </div>
</template>
<script setup lang="ts">
import { ref, onMounted } from 'vue'
import tinymce from 'tinymce/tinymce'
// 使用该方法需要引入下面的数据
import 'tinymce/models/dom' // 特别注意 tinymce 6.0.0 版本之后必须引入,否则不显示
import 'tinymce/themes/silver/theme'
import Editor from '@tinymce/tinymce-vue' // 引入组件
import 'tinymce/icons/default'
import 'tinymce/plugins/image'
import 'tinymce/plugins/link'
import 'tinymce/plugins/code'
import 'tinymce/plugins/table'
import 'tinymce/plugins/lists'
import 'tinymce/plugins/wordcount'

// 引入富文本编辑器主题的js和css
import 'tinymce/themes/silver/theme.min.js'
import 'tinymce/skins/ui/oxide/skin.min.css'

// 以上所有的样式在 node_modules 下面 tinymce 里面的 plugins 都能找到。
const tinymceHtml = ref<string>('')
const init = {
  //初始化数据
  selector: 'textarea',
  height: 300, // 限制高度
  statusbar: false,
  object_resizing: false,
  image_description: false,
  image_dimensions: false, // 禁止操作图片
  plugins: 'link lists image code table wordcount', // 富文本插件
  font_size_formats: '8px 10px 12px 14px 16px 18px 24px 36px 48px 128px',
  font_family_formats:
    '微软雅黑=Microsoft YaHei,Helvetica Neue,PingFang SC,sans-serif;苹果苹方=PingFang SC,Microsoft YaHei,sans-serif;宋体=simsun,serif',
  toolbar:
    'undo redo fontfamily fontsize fontname bold italic underline strikethrough | fontsizeselect | forecolor | alignleft aligncenter alignright',
  branding: false, // //是否禁用“Powered by TinyMCE”
  menubar: false, //顶部菜单栏显示
  paste_data_images: false, // 禁止粘贴图片
}

const emits = defineEmits<{
  (event: 'update:bindHtml', val: string): void // 富文本内容
}>()

onMounted(() => {
  tinymce.init({}) // 初始化富文本
})

// 实现双向绑定
watch(
  () => tinymceHtml.value,
  () => {
    emits('update:bindHtml', tinymce.activeEditor!.getContent())
  }
)
</script>

二、安装方法二(下载官网压缩包方法)——推荐

  • 选择Docs选择菜单并选择Free菜单

在这里插入图片描述

  • 下载压缩包以及汉化包

在这里插入图片描述

  • 解压到assets\ public文件夹下(我这里采用的是public)
    在这里插入图片描述
  • 在index.html文件中引入(根据上面的路径来定)
    在这里插入图片描述
  • 下载依赖
yarn add "@tinymce/tinymce-vue@^5" // yarn 
  • 新建一个Vue组件页面
<template>
  <div class="app-container">
    <Editor
      id="tinymce"
      v-model="tinymceHtml"
      :init="init"
      @paste="customPaste($event)"
    />
    <!-- <div v-html="tinymceHtml"></div> -->
  </div>
</template>
<script setup lang="ts">
import { ref, onMounted } from 'vue'
import tinymce from 'tinymce/tinymce'
import Editor from '@tinymce/tinymce-vue' // 引入组件

const tinymceHtml = ref<string>('')
const init = {
  //初始化数据
  selector: 'textarea',
  language: 'zh-Hans', // 这里名称根据 zh-Hans.js 里面写的名称而定
  height: 300, // 限制高度
  statusbar: false, // 显示下方操作栏
  image_dimensions: false, // 禁止操作图片
  plugins: 'link lists image code table wordcount', // 富文本插件
  font_size_formats: '8px 10px 12px 14px 16px 18px 24px 36px 48px 128px', // 字体大小文本
  font_family_formats:
    '微软雅黑=Microsoft YaHei,Helvetica Neue,PingFang SC,sans-serif;苹果苹方=PingFang SC,Microsoft YaHei,sans-serif;宋体=simsun,serif', // 字体选择配置
  toolbar:
    'undo redo fontfamily fontsize fontname bold italic underline strikethrough | fontsizeselect | forecolor | alignleft aligncenter alignright',  // 菜单栏配置
  branding: false, // //是否禁用“Powered by TinyMCE”
  menubar: false, //顶部菜单栏显示
  paste_data_images: false, // 禁止粘贴图片
}

const emits = defineEmits<{
  (event: 'update:bindHtml', val: string): void // 富文本内容
}>()

watch(
  () => tinymceHtml.value,
  () => {
    emits('update:bindHtml', tinymce.activeEditor!.getContent())
  }
)
</script>

  • 效果展示
    在这里插入图片描述

总结

由于使用的不多,所以具体方法不是很详细,请多多包涵!

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

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

相关文章

@Configuration 和 @Component 区别

本文参考1&#xff1a;https://blog.csdn.net/isea533/article/details/78072133 本文参考2&#xff1a;https://blog.csdn.net/weixin_52850476/article/details/124410800 一句话概括就是 Configuration 中所有带 Bean 注解的方法都会被动态代理&#xff0c;因此调用该方法…

数据库密码定期轮换(AWS版)

问题 需要定期轮换AWS上面的RDS数据库的密码&#xff0c;而且&#xff0c;需要让业务程序无感知。 思路 AWS有个一个aws-secretsmanager-jdbc库&#xff0c;只要在SpringBoot的基础上面集成即可&#xff0c;就可以使用secrets manager来定期轮换数据库的密码了。 解决步骤 …

Excel VBA 讲座05 - InputBox和MsgBox使用

本篇介绍的内容&#xff1a; 1&#xff0c;当用户使用宏或procedure时&#xff0c;使用InputBox来接收或收集用户输入的信息。 2&#xff0c;根据需求使用IF语句构建逻辑。 3&#xff0c;使用Message Box将信息展示给用户&#xff0c;比如用户输出错误&#xff0c;就提示用户…

np.loadtxt()读取数据

前言 机器学习中使用np.loadtxt()可以高效的导入数据&#xff0c;np.loadtxt()适合.txt文件和.csv文件。但是它默认读取float类型的值。 1.np.loadtxt()读取txt文件 1-1 基础参数 numpy.loadtxt(fname, dtype, comments#, delimiterNone, convertersNone, skiprows0, usecol…

uniapp获取支付宝user_id - 支付宝提现 - 登录授权 - APP支付宝登陆 - H5支付宝授权

效果图 uniapp须知(无奈之处) uniapp绑定支付宝user_id提现 - 方法对比: ==== 不同接口 ==== 【APP支付宝登录】 https://opendocs.alipay.com/open/218/105325 【网站支付宝登录】

PMP证书有什么用?

有没有用看你的考证目的&#xff0c;总的来说就是敲门砖的作用&#xff0c;项目招聘、应聘项目经理都需要pmp 证书。⭕但是事在人为&#xff0c;祈祷考完 PMP 就能升职加薪走上人生巅峰的想法&#xff0c;一纸证书是做不到的。PS&#xff1a;身边有考了 PMP 之后跳槽薪资涨幅 3…

阳康后身体还是不舒服怎么办?

很多年轻朋友阳康后恢复的还可以&#xff0c;逐渐回到以前的身体状态&#xff0c;但是家里老人体质偏弱&#xff0c;恢复情况就没那么乐观了。有些还一直伴随着没有嗅觉、疲惫、咳嗽等后遗症。要让老人快速恢复健康&#xff0c;生病后一定要注意这几点&#xff1a;每天保证7-8小…

测试开发中的虫剂悖论

测试开发中的虫剂悖论 1 初识虫剂悖论 提到 虫剂悖论(pesticide paradox)&#xff0c;我相信很多人都没听说的&#xff0c;除非是生物学专业的同学或者老师。 虫剂悖论描述的是重复使用某种农药杀灭害虫&#xff0c;时间越久&#xff0c;杀虫的效果就越差。 之所以这样&#xf…

压阻式(压)力传感器-个人笔记

这是个人笔记 最终要求&#xff0c;单个的压阻式压力传感器、阵列之后的压力传感器、三维力传感器 关键词&#xff1a;力传感器&#xff0c;压力传感器&#xff0c;多轴力传感器&#xff0c;应变式传感器&#xff0c;应变式力传感器&#xff0c;电阻应变式传感器&#xff0c;f…

除 svn、Testlink 外,还有哪些不错的测试用例管理工具?

类似TestLink的 9 大测试用例管理平台&#xff1a;1、PingCode&#xff1b;2、TestRail&#xff1b;3、Xray&#xff1b;4、Jira&#xff1b;5、PractiTest&#xff1b;6、PractiTest&#xff1b;7. Zephyr Enterprise&#xff1b;8、MeterSphere&#xff1b;9、Bugzilla。一、…

【Flink】浅谈Flink架构和调度

【Flink】浅谈Flink架构和调度 Flink架构 Flink 是一个分布式系统&#xff0c;需要有效分配和管理计算资源才能执行流应用程序。它集成了所有常见的集群资源管理器&#xff0c;例如【Hadoop YARN】、【Apache Mesos】和【Kubernetes】&#xff0c;但也可以设置作为独立集群甚…

Ethercat系列(2)PDO动态映射设置过程

过程数据对象PDOPDO一般用于实时数据更新&#xff1b;其分为接收PDO&#xff08;RxPDO&#xff09;和发送PDO&#xff08;TxPDO&#xff09;&#xff0c;前者的数据流方向是主站到从站&#xff0c;TxPDO是从站到主站。PDO功能支持同步周期的刷新方式&#xff0c;也支持非周期性…

解决nacos2.1版本连接mysql8.x版本异常的问题

在测试环境部署nacos集群的时候使用的是mysql5.7版本&#xff0c;部署没有什么异常。但是在生产环境中我们使用的是mysql8.x版本&#xff0c;在启动nacos的时候各种报错。在网上看了很多解决办法花了挺长时间去排错也没有处理好问题网上最常见的两种方式修改pom文件&#xff1a…

代码随想录算法训练营第五十一天|309.最佳买卖股票时机含冷冻期 714.买卖股票的最佳时机含手续费

动态规划 一、309.最佳买卖股票时机含冷冻期 题目&#xff1a; 给定一个整数数组&#xff0c;其中第 i 个元素代表了第 i 天的股票价格 。 设计一个算法计算出最大利润。在满足以下约束条件下&#xff0c;你可以尽可能地完成更多的交易&#xff08;多次买卖一支股票&#x…

前端经典面试500题【上】

一阶段面试题集锦 1、 rem em vw vw 百分比区别 相同点&#xff1a; rem&#xff0c;em&#xff0c;vw&#xff0c;vh&#xff0c;vw属于前端开发除了px单位之外的另外几种单位取值&#xff1b;但是具体含义存在区别 不同点&#xff1a; px&#xff1a;是像素单位&#xff0c…

Databend 开源周报 第 78 期

Databend 是一款强大的云数仓。专为弹性和高效设计。自由且开源。 即刻体验云服务&#xff1a;https://app.databend.com 。 What’s New 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 Features & Improvements SQL 消除多余的 group by 标量 …

Docker查看正在运行的容器目录

起因 为了方便操作服务器&#xff0c;大部分都是使用宝塔面板操作的&#xff0c;在宝塔中我发现面板中用来管理Docker的工具使用起来非常方便&#xff0c;如下图&#xff1a; 可以看到宝塔的面板可以直接查看和从操作容器、Compose 、Compose 模板、镜像、网络、存储卷、仓库等…

2022年度总结:拒绝无效努力,实现破圈成长。

在从毕业一直到现在&#xff0c;我都会写一篇关于自己的从技术、商业、人情世故以及未来展望的博文&#xff0c;以至于归纳每个时期的自己&#xff0c; 走在互联网开发的边缘&#xff0c;不得不抽出时间鞭策自己学习新知识&#xff0c;未知的知识是 充满好奇的&#xff0c; 就好…

Centos 7 内核升级

参考 https://www.cnblogs.com/zengkefu/p/5667145.html 一、ELRepo 关于内核种类: kernel-ml 中的ml是英文【 mainline stable 】的缩写&#xff0c;elrepo-kernel中罗列出来的是最新的稳定主线版本。 kernel-lt 中的lt是英文【 long term support 】的缩写&#xff0c;elre…

分布式理论之体系结构

写在前面 分布式的体系结构目前有两种&#xff0c;第一种是集中式架构&#xff0c;也就是我们最常见到的master-slave架构&#xff0c;第二种是非集中式架构&#xff0c;也就是我们经常听到的去中心化架构&#xff0c;本文我们就一起来看下吧&#xff01; 1&#xff1a;集中式…