当前位置:   article > 正文

vue3富文本编辑器

vue3富文本编辑器

1.安装插件:

  1. pnpm add "@tinymce/tinymce-vue@^4"
  2. yarn add "@tinymce/tinymce-vue@^4"
  3. npm install --save "@tinymce/tinymce-vue@^4"

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

3.下载中文语言包

Language Packages | Trusted Rich Text Editor | TinyMCE 

解压语言包,放到 public文件夹下面

4.富文本组件引入使用

  1. <template>
  2. <div class="app-container">
  3. <h1>tinymce</h1>
  4. <editor id="tinymce" v-model="tinymceHtml" :init="init"></editor>
  5. <div v-html="tinymceHtml"></div>
  6. </div>
  7. </template>
  8. <script setup>
  9. import { ref, onMounted } from "vue";
  10. import tinymce from "tinymce/tinymce";
  11. import "tinymce/models/dom"; // 特别注意 tinymce 6.0.0 版本之后必须引入,否则不显示
  12. import "tinymce/themes/silver/theme";
  13. import Editor from "@tinymce/tinymce-vue"; // 引入组件
  14. // 都是富文本插件
  15. import "tinymce/icons/default";
  16. import "tinymce/plugins/image";
  17. import "tinymce/plugins/link";
  18. import "tinymce/plugins/code";
  19. import "tinymce/plugins/table";
  20. import "tinymce/plugins/lists";
  21. import "tinymce/plugins/wordcount";
  22. // 以上所有的样式在 node_modules 下面 tinymce 里面的 plugins 都能找到。
  23. const tinymceHtml = ref("请输入内容");
  24. const init = {
  25. //初始化数据
  26. language_url: "/langs/zh-Hans.js", // 引入语言包(该语言包在public下,注意文件名称)
  27. language: "zh-Hans", // 这里名称根据 zh-Hans.js 里面写的名称而定
  28. skin_url: "/skins/ui/oxide", // 这里引入的样式
  29. height: 300, // 限制高度
  30. plugins: "link lists image code table wordcount", // 富文本插件
  31. toolbar:
  32. "bold italic underline strikethrough | fontsizeselect | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist | outdent indent blockquote | undo redo | link unlink image code | removeformat",
  33. branding: false, // //是否禁用“Powered by TinyMCE”
  34. menubar: true, //顶部菜单栏显示
  35. // paste_convert_word_fake_lists: false, // 插入word文档需要该属性
  36. content_css: "/skins/content/default/content.css", //以css文件方式自定义可编辑区域的css样式,css文件需自己创建并引入
  37. images_upload_handler: (blobInfo,success, failure) => {
  38. // console.log(blobInfo.blob());
  39. // 上传图片需要,FormData 格式的文件;
  40. const formDataUp = new FormData();
  41. // img 是接口需要的上传的属性名,一般属性名是 file
  42. formDataUp.append("img", blobInfo.blob());
  43. // // console.log(formDataUp);
  44. axios.post("xxxx", formDataUp).then((res) => {
  45. success("返回的上传图片后的地址");
  46. });
  47. }
  48. };
  49. onMounted(() => {
  50. tinymce.init({}); // 初始化富文本
  51. });
  52. </script>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/635001
推荐阅读
相关标签
  

闽ICP备14008679号