【vue富文本插件】tinymce 安装使用及汉化注意项

news2024/9/20 18:26:56

文章目录

    • 前言
    • 一、tinymce 下载安装
      • 1.1 npm 安装
      • 1.2 提供 CDN 版本免费下载
    • 二、tinymce 本地化
      • 三、编写富文本组件
      • 四、在其他 .vue 组件中引入上面编写的 myEditor 组件
    • 五、相关问题
      • 5.1 汉化
      • 5.2 富文本不显示或者黄色文本提示
    • 附:引入第三方拓展啊插件

前言

前端开发过程中,无论是移动设备还是PC设备,经常会用到富文本编辑器。一般情况下,我们不会自己造轮子(太耽误时间,而且有大量成熟的轮子免费且好用),而是使用一些前人封装好的插件。常见的富文本编辑器插件如:wangEditor、UEditor、Kindeditor、Simditor、CKEditor 等等。

数字化管理平台
Vue3+Vite+VueRouter+Pinia+Axios+ElementPlus
权限系统-商城
个人博客地址

而我们今天要说的,TinyMCE 是一款易用、且功能强大的所见即所得的富文本编辑器。插件丰富,可扩展性强,功能配置灵活简单,加载速度快,界面好看,符合现代审美,可支持多种语言:(官网说的这些优势,当然大家可以在使用过过程中进行对比):

  • 开源可商用,基于LGPL2.1
  • 插件丰富,自带插件基本涵盖日常所需功能
  • 接口丰富,可扩展性强,有能力可以无限拓展功能
  • 界面好看,符合现代审美
  • 提供经典、内联、沉浸无干扰三种模式
  • 对标准支持优秀(自v5开始)
  • 多语言支持,官网可下载几十种语言。

你可以通过隐藏工具栏的方式,让富文本编辑器无缝融合到页面中。也可以开启全部功能,呈现经典的类 word 模式,界面如下:
在这里插入图片描述
你可以更改图表颜色,更加醒目的展示某个功能:
在这里插入图片描述
官网

中文文档

一、tinymce 下载安装

1.1 npm 安装

  • 环境

    • “node”: v14.18.1
    • “vue”: “^2.6.10”
    • “tinymce”: “^6.7.0”
    • “@tinymce/tinymce-vue”: “^3.2.8”
  • 安装相关插件

    npm install tinymce -S
    npm install @tinymce/tinymce-vue -S
    

    如果因vue版本过低与最新tinymce插件不兼容,可通过@指定tinymce版本号

    npm install tinymce@5.1.0 -S
    npm install @tinymce/tinymce-vue@3.0.1 -S
    

    tinymce-vue是tinymce官方提供的一个vue组件,可以直接拿过来使用,但是必须要到官网注册获取api-key,否则只有一段时间的试用期。
    在这里插入图片描述

1.2 提供 CDN 版本免费下载

社区版
开发版

二者的区别是开发版包含未被压缩过的源码,方便开发者学习分析,魔改部分功能。开发版中包含社区版。

其它下载:

  • Github
  • Gitee码云

CDN:

  • 国内:BootCDN
  • 国外:tiny官网

二、tinymce 本地化

插件安装后可以直接使用,但是由于众所周知的国内网络环境,这个国外插件时不时的会加载失败,从而页面编辑器部分一片空白(这也是目前国内用户的短板限制),所以我们需要将它本地化,以提高这种不可控制的用户功能体验。

安装完成后,在 node_modules 中找到 tinymce 文件夹,并将 tinymce 复制到 public 文件夹下或者其他能直接访问到的路径,本文将 tinymce 文件放到了 public 文件夹下。

  • tinymce 目录结构如下图:
    在这里插入图片描述
  • 复制后的文件结构如下图所示:
    在这里插入图片描述

三、编写富文本组件

在components路径下新建myEditor.vue文件,打开编写如下代码:

  1. 引入插件
    import Editor from '@tinymce/tinymce-vue'
    
  2. 注册组件
    components: {
        editor: Editor
    },
    
  3. 在模板中使用组件
    <editor
        api-key="你的api-key,需要自己去官网注册获取幺!"
        v-model="form.content"
        :init="init"
     />
    </a-form-model-item>
    
  4. init 相关配置信息
    data() {
    	return {
    		init: {
    				height: 500,
                    menubar: true,
                    plugins: [
                      'advlist autolink lists link image charmap print preview anchor',
                      'searchreplace visualblocks code fullscreen',
                      'insertdatetime media table paste code help wordcount'
                    ],
                    toolbar:
                      'undo redo | formatselect | bold italic backcolor | \
               alignleft aligncenter alignright alignjustify | \
               bullist numlist outdent indent | removeformat | help',
                    menu: {
                      file: { title: 'File', items: 'newdocument restoredraft | preview | print ' },
                      edit: { title: 'Edit', items: 'undo redo | cut copy paste | selectall | searchreplace' },
                      view: { title: 'View', items: 'code | visualaid visualchars visualblocks | spellchecker | preview fullscreen' },
                      insert: { title: 'Insert', items: 'image link media template codesample inserttable | charmap emoticons hr | pagebreak nonbreaking anchor toc | insertdatetime' },
                      format: { title: 'Format', items: 'bold italic underline strikethrough superscript subscript codeformat | formats blockformats fontformats fontsizes align lineheight | forecolor backcolor | removeformat' },
                      tools: { title: 'Tools', items: 'spellchecker spellcheckerlanguage | code wordcount' },
                      table: { title: 'Table', items: 'inserttable | cell row column | tableprops deletetable' },
                      help: { title: 'Help', items: 'help' }
                    },
                    language: 'zh-CH'
    		}
    	}
    }
    

四、在其他 .vue 组件中引入上面编写的 myEditor 组件

<template>
	<myEditor ref="myEditor"></myEditor>
	</template>
	<script>
	import myEditor from '../../components/myEditor.vue';
	export default {
	    name: 'useEditor',
	    components: {
	      myEditor,
	    },
	}
</script>

页面展示效果:
在这里插入图片描述

五、相关问题

5.1 汉化

不难发现,上面工具栏是英文的,所以需要汉化。
如果需要汉化显示中文,需要引入中文包,中文包下载地址:Language Packages | Trusted Rich Text Editor | TinyMCE

在这里插入图片描述
在这里插入图片描述
找到对应的中文包,点击 Download 下载并解压,获取 langs 文件包中的 zh-Hans.js 文件,复制到 public/tinymce/langs 目录下:
在这里插入图片描述

修改 三-4 中的 init 配置:

init:{
	...
	language_url: '/tinymce/langs/zh-Hans.js', // 中文包的存放路径
    language: 'zh-Hans'
}

5.2 富文本不显示或者黄色文本提示

在这里插入图片描述
需要在 public/index.html 中引入 tinymce.min.js 文件,如下:

<script type="text/javascript" src="tinymce/tinymce.min.js"></script>

这样就显示正常了!!!

在这里插入图片描述

附:引入第三方拓展啊插件

有些插件并不是第三方提供的,而是别人开源的,这时候我们要是使用的话就要把他们引入进来。
在 public/tinymce/plugins 目录下,把下载的插件解压缩放进去,然后引用即可
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1080818.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HNU-计算机网络-讨论课1

题目&#xff1a; 有关网络系统结构的讨论 一、必选问题&#xff08;每组平均每人1个&#xff09; 1、分层结构其实是世界演进形成的普遍系统结构&#xff0c;不管是自然领域还是社会领域&#xff0c;请举例说说你的理解。 2、有人说通信网络的核心技术在物理层&#xff0c…

Soul CEO张璐团队以用户安全为核心,探索社交平台安全治理新路径

“认同感”,是现代年轻人当下的核心社交需求之一,作为年轻人喜爱的新型开放式社交平台,Soul APP为年轻人们提供了一个自在表达、轻松互动的平台,为用户带来了志趣相投、精神共鸣的高质量网络连接。在Soul日活近千万的用户中,超过七成为Z世代年轻群体,如何能够为Z世代提供更安全…

MySQL增删查改(进阶2)

一、查询 1.聚合查询 1.1聚合函数&#xff1a; &#xff08;1&#xff09;count() 获取整个结果集的行数&#xff08;数据的数量&#xff09; count&#xff08;某个字段&#xff09;count(*)count&#xff08;常量值&#xff09; &#xff08;2&#xff09;sum(某个字段)…

华为云云耀云服务器L实例评测|华为云耀云服务器L实例评测用例(五)

六、华为云耀云服务器L实例评测用例&#xff1a; “兵马未动&#xff0c;粮草先行”&#xff0c;随着企业业务的快速发展&#xff0c;服务器在数字化建设体系至关重要&#xff0c;为了保证服务器的稳定性、可靠性&#xff0c;需要对服务器进行评测&#xff0c;以确保服务器能够…

用“和美”丈量中国丨走进酒博物馆系列⑨

五粮液酒文化博览馆始建于1988年&#xff0c;是中国酒业最早的酒文化博览馆&#xff0c;于2020年启动升级改造。 现在我们看到的五粮液酒文化博览馆&#xff0c;采用了当今博览馆最前沿的展陈方式&#xff0c;展陈设计与空间布局更具灵动性和多元性&#xff0c;蕴含传统文化氛围…

Python的就业前景及薪资收入

作为近几年来特别受欢迎的编程语言之一&#xff0c;Python一直以来被众多行业内人士寄予厚望&#xff0c;今后有可能替代老牌霸主Java&#xff0c;成为新一代编程语言榜首。 与其他语言相比&#xff0c;Python中的语言语法特别简单&#xff0c;并且代码具有可读性&#xff0c;多…

ip https证书怎么更换ip地址

ip证书是一种基于互联网的数字证书&#xff0c;用于证明持有证书的单位或个人具有合法的身份和授权。它由权威的第三方机构颁发&#xff0c;具有安全、可靠、保密的特点。ip https证书是https证书中比较特殊的一种数字证书&#xff0c;它主要保护的就是只拥有公网ip地址的站点。…

【Python爬虫 js渲染思路一】

Python爬虫 破解js渲染思路一 当我们在谈论网页js渲染的时候&#xff0c;我们在谈论什么 js渲染网页&#xff0c;从某种程度来说&#xff0c;是指单纯的http请求&#xff0c;返回的文本数据&#xff0c;与我们在浏览器看到的内容&#xff0c;相距甚远.其可包括为以下几点&…

How To Improve Your LISTENING SKILLS( 如何提升你的听力技能) 学习

目录 如何提升你的听力技能 三个大问题 1.你有没有 fake listening 2.selective listening 3.critical listening 六个解决方案 1&#xff0c;awareness 请主动打破这个循环 2.在身体和精神上做好倾听的准备 3.set a goal 4.sit front /center listening is a s…

阶段六-Day03-MyBatis

一、框架介绍 1. 框架的作用 将许多项目封装起来,形成了框架 2. 框架的优缺点 1. 优点 1.1 更好用 框架都是对Java原生内容进行的封装&#xff0c;对于企业级项目开发来说&#xff0c;使用框架比使用原生Java更好用&#xff0c;写起来更简单。 1.2 更强大 框架封装过程…

LaunchView/启动页 的实现

1. 创建启动画板&#xff0c;LaunchScreen.storyboard 添加组件如图: 2. 项目中设置只支持竖屏&#xff0c;添加启动画板&#xff0c;如图: 3. 创建启动画面动画视图&#xff0c;LaunchView.swift import SwiftUI/// 启动视图 struct LaunchView: View {/// 字符串转换为字符串…

第二章——古典密码学及算法实现

凯撒加密 凯撒加密算法实现&#xff1a; # 凯撒密码加密函数 def caesar_encrypt():string [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u,v, w, x, y, z]# 密文列表cipher_text_list []cipher int(input("请输入你的密钥:"))plain_text in…

基于ChatGPT+词向量/词嵌入实现相似商品推荐系统

最近一个项目有个业务场景是相似商品推荐&#xff0c;给一个商品描述(比如 WIENER A/B 7IN 5/LB FZN )&#xff0c;系统给出商品库中最相似的TOP 5种商品&#xff0c;这种单纯的推荐系统用词向量就可以实现&#xff0c;不过&#xff0c;这个项目特点是商品库巨大&#xff0c;有…

SQL中for xml path 的用法

1. 用法 是一种将查询结果转换为 XML 格式的方法。它可以将查询结果中的每一行转换为一个 XML 元素&#xff0c;并且可以指定元素的名称和属性。 2. 应用示例 有一张学生选修课程的表&#xff0c;如下图所示 希望整合成下图所示效果 --建表 if object_id(StudentInfo,u) is…

webrtc用clang编译支持h264,支持msvc调用库

webrtc遇到困扰&#xff1a; 如果msvc编译&#xff0c;ffmpeg编译失败&#xff0c;需要替换ffmpeg库。如果用clang编译&#xff0c;vs或qt调用dll又存在崩溃。 经过反复尝试找到解决方法&#xff1a; 一、编译 1、编译参数 //我得环境配置 set DEPOT_TOOLS_UPDATE0 set DEP…

解决linux终端启动后不能自动加载环境变量配置(个人配置文件)详解

文章目录 设备环境问题阐述解决方法 设备环境 WSL2 Ubuntu-20.04 本教程适配所有linux&#xff0c;不管你是虚拟机还是WSL或者其他的平台。 问题阐述 由于专业课的要求&#xff0c;需要在Linux中新建一个用户&#xff0c;然后转到这个用户来完成专业课的各种实践要求。有可…

HttpServletRequest对象与RequestDispatcher对象

一、HttpServletRequest对象 1.介绍 在Servlet API中&#xff0c;定义了一个HttpServletRequest接口&#xff0c;它继承自ServletRequest接口&#xff0c;专门用来封装HTTP请求消息。由于HTTP请求消息分为请求行、请求消息头和请求消息体三部分&#xff0c;因此&#xff0c;在…

Android免杀小结

目录 msfvenom 自动生成 自带免杀 工具免杀 Thefatrat backdoor-apk old-fatrat msfVenom嵌入式方法 venom 工具小记 加壳 源码免杀 加壳 源码混淆 数据通信 启动和运行方式修改 对抗反编译 反编译工具崩溃 ZIP文件格式对抗 ZIP通用位伪加密 AndroidManife…

暴涨100万粉仅用一个月,B站内容趋势前线洞察

- 导语 在这个9月&#xff0c;B站涌现多位黑马UP主&#xff0c;有的UP主自入驻B站以来&#xff0c;一个月的时间就涨粉百万晋升为头部UP主&#xff0c;有的UP主因内容受到B站百万年轻人的追捧&#xff0c;展现账号爆发力。 接下来&#xff0c;飞瓜数据&#xff08;B站版&…

智慧工地:助力数字建造、智慧建造、安全建造、绿色建造

智慧工地管理系统融合计算机技术、物联网、视频处理、大数据、云计算等&#xff0c;为工程项目管理提供先进的技术手段&#xff0c;构建施工现场智能监控系统&#xff0c;有效弥补传统监理中的缺陷&#xff0c;对人、机、料、法、环境的管理由原来的被动监督变成全方位的主动管…