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的形式保存
相关推荐
pe7er2 小时前
window管理开发环境篇 - 持续更新
前端·后端
We་ct3 小时前
LeetCode 5. 最长回文子串:DP + 中心扩展
前端·javascript·算法·leetcode·typescript
陈随易7 小时前
有生之年系列,Nodejs进程管理pm2 v7.0发布
前端·后端·程序员
冰暮流星7 小时前
javascript之事件代理/事件委托
前端
陈随易8 小时前
AI时代,你还在坚持手搓文章吗
前端·后端·程序员
里欧跑得慢10 小时前
17. Flutter Hero动画实现:让界面过渡更加优雅
前端·css·flutter·web
IT_陈寒11 小时前
Vue的这个响应式陷阱,我debug了一整天才爬出来
前端·人工智能·后端
kyriewen11 小时前
前端测试:别为了100%覆盖率而写测试,那是自欺欺人
前端·javascript·单元测试
去伪存真11 小时前
我自己写的第一个skills--project-core-standards
前端·agent
Data_Journal11 小时前
如何使用cURL更改User Agent
大数据·服务器·前端·javascript·数据库