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的形式保存
相关推荐
烛阴5 分钟前
XPath 进阶:掌握高级选择器与路径表达式
前端·javascript
小鱼小鱼干9 分钟前
【JS/Vue3】关于Vue引用透传
前端
JavaDog程序狗11 分钟前
【前端】HTML+JS 实现超燃小球分裂全过程
前端
独立开阀者_FwtCoder15 分钟前
URL地址末尾加不加 "/" 有什么区别
前端·javascript·github
独立开阀者_FwtCoder19 分钟前
Vue3 新特性:原来watch 也能“暂停”和“恢复”了!
前端·javascript·github
snakeshe101019 分钟前
优化 Mini React:实现组件级别的精准更新
前端
前端小盆友20 分钟前
从零实现一个GPT 【React + Express】--- 【2】实现对话流和停止生成
前端·gpt·react.js
京东云开发者26 分钟前
行云前端重构之路:从单体应用到 Monorepo 的血泪史
前端
whale fall27 分钟前
npm install安装不成功(node:32388)怎么解决?
前端·npm·node.js
疯狂动物城在逃flash37 分钟前
数据库入门:SQL学习路线图与实战技巧
前端