vue3 中 tinymce+tinymce-vue 富文本编辑器使用

1.安装插件

  • npm 安装
  • npm install --save "@tinymce/tinymce-vue@^4"

  • yarn 安装
  • yarn add  "@tinymce/tinymce-vue@^4"

  • npmp 安装
  • pnpm  add  "@tinymce/tinymce-vue@^4"

2.再然后把node_modules/tinymce下的skins 文件夹复制到public文件夹下

3.下载中文语言包

TinyMCE中文文档中文手册

  • 把解压后的语言包,也放到 public文件夹下面;

4.富文本组件引入使用

<template>
  <div class="app-container">
    <h1>tinymce</h1>
    <editor id="tinymce" v-model="tinymceHtml" :init="init"></editor>
    <div v-html="tinymceHtml"></div>
  </div>
</template>
<script setup>
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";
// 以上所有的样式在 node_modules 下面 tinymce 里面的 plugins 都能找到。
const tinymceHtml = ref("请输入内容");
const init = {
  //初始化数据
  language_url: "/langs/zh-Hans.js", // 引入语言包(该语言包在public下,注意文件名称)
  language: "zh-Hans", // 这里名称根据 zh-Hans.js 里面写的名称而定
  skin_url: "/skins/ui/oxide", // 这里引入的样式
  height: 300, // 限制高度
  plugins: "link lists image code table wordcount", // 富文本插件
  toolbar:
    "bold italic underline strikethrough | fontsizeselect | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist | outdent indent blockquote | undo redo | link unlink image code | removeformat",
  branding: false, // //是否禁用“Powered by TinyMCE”
  menubar: true, //顶部菜单栏显示
  // paste_convert_word_fake_lists: false, // 插入word文档需要该属性
  content_css: "/skins/content/default/content.css", //以css文件方式自定义可编辑区域的css样式,css文件需自己创建并引入
  images_upload_handler: (blobInfo) =>
        new Promise((resolve, reject) => {
          // console.log(blobInfo.blob());
          // 上传图片需要,FormData 格式的文件;
          const formDataUp = new FormData();
         // img  是接口需要的上传的属性名,一般属性名是 file
          formDataUp.append("img", blobInfo.blob());
          // // console.log(formDataUp);
          axios.post("xxxx", formDataUp).then((res) => {
              resolve("返回的上传图片后的地址");
            });
        }),
    };
onMounted(() => {
  tinymce.init({}); // 初始化富文本
});
</script>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值