vue3项目中使用tinyMCE,完成汉化,并忽略api-key提示(tinymceScriptSrc)

在使用 tinyMCE 之前,首先要知道几点:

  1. 2024年以后,云托管的 tinyMCE 都需要使用一个api-key的东西,不添加api-key会报错,且编辑器会变成只读状态。官网是这样说的点击跳转
  2. 即使我们根据指示,注册账号,拿到api-key,还是会有1000加载的限制,用户稍微多点就不够用了。
  3. 什么叫云托管,简单说就是,你使用 npm install 下载下来的都叫云托管
  4. 怎么避免使用api-key的限制?答案是:使用官网提供的一个prop: tinymceScriptSrc

1. npm install 下载 官网下载地址

js 复制代码
npm install "@tinymce/tinymce-vue"

2025年6月,我下载的最新版本是:"@tinymce/tinymce-vue": "^6.2.0",

新建一个文件夹,直接复制进去,就会有一个最基础的tinyMCE了

js 复制代码
<template>
  <div>
    <Editor v-model="content" ref="editorRef" />
  </div>
</template>

<script setup>
import { ref, computed, onMounted } from 'vue';
import Editor from '@tinymce/tinymce-vue';
const content = ref('');
</script>

<style lang="scss" scoped></style>

2. 设置 tinymceScriptSrc 的链接

有兴趣的可以看看这个,官网详细解释了为什么要使用api-key,为什么会有1000限制,以及怎么处理 点击跳转

我们随便点一个,我这里点击的第二个,获得了两个链接 把 https://cdn.jsdelivr.net/npm/tinymce@7.9.1/tinymce.min.js 这个链接设置到 tinymceScriptSrc 就行了

js 复制代码
<script src="https://cdn.jsdelivr.net/npm/tinymce@7.9.1/tinymce.min.js"></script>

<link href="https://cdn.jsdelivr.net/npm/tinymce@7.9.1/skins/ui/oxide/content.min.css" rel="stylesheet">
js 复制代码
<template>
  <div>
    <Editor v-model="content" ref="editorRef" tinymceScriptSrc="https://cdn.jsdelivr.net/npm/tinymce@7.9.1/tinymce.min.js" />
  </div>
</template>

<script setup>
import { ref, computed, onMounted } from 'vue';
import Editor from '@tinymce/tinymce-vue';
const content = ref('');
</script>

<style lang="scss" scoped></style>

3. 去掉不需要的logo和按钮

js 复制代码
<template>
  <div>
    <Editor v-model="content" ref="editorRef" :init="TinyMCEInitConfig" tinymceScriptSrc="https://cdn.jsdelivr.net/npm/tinymce@7.9.1/tinymce.min.js" />
  </div>
</template>

<script setup>
import { ref, computed, onMounted } from 'vue';
import Editor from '@tinymce/tinymce-vue';
const content = ref('');

const TinyMCEInitConfig = computed(() => {
  return {
    // 去除tinyMCE的logo
    branding: false,
    // 去除右上角的按钮
    promotion: false,
    toolbar_mode: 'wrap',
    height: 500,
    // 一些插件
    plugins: 'anchor autolink charmap codesample emoticons image link lists media searchreplace table visualblocks wordcount',
  };
});
</script>

<style lang="scss" scoped></style>

4. 汉化

官方网站关于汉化的文档:点击跳转,这个链接是你拓展学习的,下面的链接才是汉化包

因为我们使用的是 tinymceScriptSrc 属性,重新指定了资源加载的路径,汉化包我们是要自己下载到本地然后再使用 language_url 引入进来的,跟着我的步骤一步一来

去官网把zh_CN的中文汉化包下载下来,中文包在最下面:官网中文汉化包下载地址

下载来下,解压缩,得到汉化文件

把汉化文件放到public文件夹里去,乱放可能会导致404找不到,比如放到src里,可能会出现404的情况

最后加上语言,和语言包路径的配置,就完成汉化了

js 复制代码
<template>
  <div>
    <Editor v-model="content" ref="editorRef" :init="TinyMCEInitConfig" tinymceScriptSrc="https://cdn.jsdelivr.net/npm/tinymce@7.9.1/tinymce.min.js" />
  </div>
</template>

<script setup>
import { ref, computed, onMounted } from 'vue';
import Editor from '@tinymce/tinymce-vue';
const content = ref('');

const TinyMCEInitConfig = computed(() => {
  return {
    // 去除tinyMCE的logo
    branding: false,
    // 去除右上角的按钮
    promotion: false,
    // 设置中文语言
    language: 'zh_CN',
    // 设置中文语言包路径
    language_url: '/public/lang/zh_CN.js',
    toolbar_mode: 'wrap',
    height: 500,
    // 一些插件
    plugins: 'anchor autolink charmap codesample emoticons image link lists media searchreplace table visualblocks wordcount',
  };
});
</script>

<style lang="scss" scoped></style>

最终效果,这样就完成了最基础的tinyMCE效果

5. 关于其他性化配置

比如 menubar 、 toolbar 啊之类的配置项,这个要自己去官网看一下配置,你需要什么就配置什么:官网配置项地址

6. 其他问题

  1. 你会发现没有上传本地图片入口,但是本地的图片可以直接复制进来,会以base64的形式保存
相关推荐
是一碗螺丝粉10 小时前
React Native 运行时深度解析
前端·react native·react.js
Jing_Rainbow10 小时前
【前端三剑客-9 /Lesson17(2025-11-01)】CSS 盒子模型详解:从标准盒模型到怪异(IE)盒模型📦
前端·css·前端框架
爱泡脚的鸡腿10 小时前
uni-app D6 实战(小兔鲜)
前端·vue.js
青年优品前端团队10 小时前
🚀 不仅是工具库,更是国内前端开发的“瑞士军刀” —— @qnvip/core
前端
北极糊的狐10 小时前
Vue3 中父子组件传参是组件通信的核心场景,需遵循「父传子靠 Props,子传父靠自定义事件」的原则,以下是资料总结
前端·javascript·vue.js
看到我请叫我铁锤11 小时前
vue3中THINGJS初始化步骤
前端·javascript·vue.js·3d
q***252111 小时前
SpringMVC 请求参数接收
前端·javascript·算法
q***333711 小时前
Spring Boot项目接收前端参数的11种方式
前端·spring boot·后端
烛阴11 小时前
从`new()`到`.DoSomething()`:一篇讲透C#方法与构造函数的终极指南
前端·c#
还债大湿兄11 小时前
阿里通义千问调用图像大模型生成轮动漫风格 python调用
开发语言·前端·python