您现在的位置是:首页 > 技术教程 正文

Vue 富文本编辑器tinymce的安装教程(前端必备小知识)

admin 阅读: 2024-03-27
后台-插件-广告管理-内容页头部广告(手机)

目录

一、Tinymce编辑器简介

二、安装以及配置tinymce

        2.1.安装tinymce编辑器

        2.2.从node_modules/tinymce复制样式到public目录下,复制完毕的public下的目录结构如下

三、在Vue里面使用

        3.1.在components 目录下新建 Editor.vue 将下面代码复制进去

        3.2 app.vue中代码,引入组件 Editor.vue


一、Tinymce编辑器简介

        TinyMCE是一个轻量级的基于浏览器的所见即所得编辑器,由JavaScript写成。它对IE6+和Firefox1.5+都有着非常良好的支持。功能方面虽然不能称得上是最强,但绝对能够满足大部分网站的需求,并且功能配置灵活简单。另一特点是加载速度非常快,如果你的服务器采用的脚本语言是PHP,那还可以进一步优化。最重要的是,TinyMCE是一个根据LGPL license发布的自由软件,你可以把它用于商业应用。

        1、该插件仅支持使用FastAdmin开发的后台管理中使用,不支持前台页面、问答、小程序、APP、VUE、Uniapp中使用
        2、cms插件的前台页面样式文件common.less中的.article-text img {}样式会影响此编辑器的图片格式(使其自动居中)建议手动修改.article-text img {}中的样式,若为自定义前台页面则没有样式冲突。

二、安装以及配置tinymce

2.1.安装tinymce编辑器

  1. npm i tinymce
  2. npm i @tinymce/tinymce-vue

 安装完成

2.2.从node_modules/tinymce复制样式到public目录下,复制完毕的public下的目录结构如下

 (1)现在public目录下新建文件夹 ticymce

(2).将node_modules/tinymce/tinymce.min.js 复制到上面创建的文件夹目录下面

(3).在public/tinymce目录下创建文件夹 skins 和 langs

 (4).将node_modules/tinymce/skins 文件夹直接复制到 public/tinymce目录下

 

 (5).配置中文语言 中文语言包 zh-Hans.js下载地址

Language Packages | Trusted Rich Text Editor | TinyMCE

下拉选择 Chinese Simplified 然后点击下载

 下载完成后,解压

 解压完成后,将解压后 zh-Hans.js 复制到 public/tinymce/langs 文件夹下

当前public目录下的文件结构如下:完全一致

三、在Vue里面使用

3.1.在components 目录下新建 Editor.vue 将下面代码复制进去

  1. <script setup>
  2. import tinymce from "tinymce/tinymce";
  3. import Editor from "@tinymce/tinymce-vue";
  4. import { ref, watch } from "vue"
  5. import "tinymce/themes/silver/theme"; // 引用主题文件
  6. import "tinymce/icons/default"; // 引用图标文件
  7. import 'tinymce/models/dom'
  8. // tinymce插件可按自己的需要进行导入
  9. // 更多插件参考:https://www.tiny.cloud/docs/plugins/
  10. import "tinymce/plugins/advlist"
  11. import "tinymce/plugins/anchor"
  12. import "tinymce/plugins/autolink"
  13. import "tinymce/plugins/autoresize"
  14. import "tinymce/plugins/autosave"
  15. import "tinymce/plugins/charmap" // 特殊字符
  16. import "tinymce/plugins/code" // 查看源码
  17. import "tinymce/plugins/codesample" // 插入代码
  18. import "tinymce/plugins/directionality"
  19. import "tinymce/plugins/emoticons"
  20. import "tinymce/plugins/fullscreen" //全屏
  21. import "tinymce/plugins/help"
  22. import "tinymce/plugins/image" // 插入上传图片插件
  23. import "tinymce/plugins/importcss" //图片工具
  24. import "tinymce/plugins/insertdatetime" //时间插入
  25. import "tinymce/plugins/link"
  26. import "tinymce/plugins/lists" // 列表插件
  27. import "tinymce/plugins/media" // 插入视频插件
  28. import "tinymce/plugins/nonbreaking"
  29. import "tinymce/plugins/pagebreak" //分页
  30. import "tinymce/plugins/preview" // 预览
  31. import "tinymce/plugins/quickbars"
  32. import "tinymce/plugins/save" // 保存
  33. import "tinymce/plugins/searchreplace" //查询替换
  34. import "tinymce/plugins/table" // 插入表格插件
  35. import "tinymce/plugins/template" //插入模板
  36. import "tinymce/plugins/visualblocks"
  37. import "tinymce/plugins/visualchars"
  38. import "tinymce/plugins/wordcount" // 字数统计插件
  39. // v-model
  40. const props = defineProps({
  41. modelValue: String,
  42. })
  43. const emit = defineEmits(["update:modelValue"])
  44. // 配置
  45. const init = {
  46. language_url: '/tinymce/langs/zh-Hans.js', // 中文语言包路径
  47. language: "zh-Hans",
  48. skin_url: '/tinymce/skins/ui/oxide', // 编辑器皮肤样式
  49. content_css: "/tinymce/skins/content/default/content.min.css",
  50. menubar: false, // 隐藏菜单栏
  51. autoresize_bottom_margin: 50,
  52. max_height: 500,
  53. min_height: 450,
  54. // height: 320,
  55. toolbar_mode: "none",
  56. plugins:
  57. 'wordcount visualchars visualblocks template searchreplace save quickbars preview pagebreak nonbreaking media insertdatetime importcss image help fullscreen directionality codesample code charmap link code table lists advlist anchor autolink autoresize autosave',
  58. toolbar:
  59. "formats undo redo fontsizeselect fontselect ltr rtl searchreplace media | outdent indent aligncenter alignleft alignright alignjustify lineheight underline quicklink h2 h3 blockquote numlist bullist table removeformat forecolor backcolor bold italic strikethrough hr link preview fullscreen help ",
  60. content_style: "p {margin: 5px 0; font-size: 14px}",
  61. fontsize_formats: "12px 14px 16px 18px 24px 36px 48px 56px 72px",
  62. font_formats: "微软雅黑=Microsoft YaHei,Helvetica Neue,PingFang SC,sans-serif;苹果苹方= PingFang SC, Microsoft YaHei, sans- serif; 宋体 = simsun, serif; 仿宋体 = FangSong, serif; 黑体 = SimHei, sans - serif; Arial = arial, helvetica, sans - serif;Arial Black = arial black, avant garde;Book Antiqua = book antiqua, palatino; ",
  63. branding: false,
  64. elementpath: false,
  65. resize: false, // 禁止改变大小
  66. statusbar: false, // 隐藏底部状态栏
  67. }
  68. tinymce.init; // 初始化
  69. const content = ref(props.modelValue)
  70. watch(props, (newVal) => content.value = newVal.modelValue)
  71. watch(content, (newVal) => emit("update:modelValue", newVal))
  72. script>
  73. <style>
  74. .tox-tinymce-aux {
  75. z-index: 9999 !important;
  76. }
  77. style>

3.2 app.vue中代码,引入组件 Editor.vue

  1. <script setup>
  2. import { ref } from "vue"
  3. import Editor from "/src/components/Editor.vue"
  4. const form = ref({
  5. content: ''
  6. })
  7. script>

 引入成功,显示富文本编辑器,可以正常编辑

 目录结构如下

欢迎大家在评论区讨论,一起学习进步

标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索
排行榜