ck-editor5的研究 (5):优化-页面离开时提醒保存,顺便了解一下 Editor的生命周期 和 6大编辑器类型

前言

经过前面的 4 篇内容,我们已经慢慢对 CKEditor5 熟悉起来了。这篇文章,我们就来做一个优化,顺便再补几个知识点:

  1. 当用户离开时页面时,提醒他保存数据
  2. 了解一下 CKEditor5 的 六大编辑器类型
  3. 了解一下 editor 实例对象的生命周期

大致效果如下:

在这里插入图片描述

提醒用户退出页面功能(3步)

想象一下,辛辛苦苦写完的内容,不小心刷新页面或者关掉浏览器标签,数据就没了,是不是体验很糟糕。所以我们应该在用户卸载页面时进行提醒。

1. 先搭建目录

同样的,我们使用上一篇文章 ck-editor5的研究 (4):初步使用 CKEditor5 的插件功能 的代码进行搭建。也是三个文件,一个 ckeditor5.ts, 一个 ckeditor5.client.vue ,一个 demo5/index.vue,大概像这样:
在这里插入图片描述

2. 写一个事件注册 hook

在 nuxt 的 composables 目录下创建一个 useEventListener.ts 文件:在这里插入图片描述

3. 注册 beforeunload 事件

然后在 demo5/index.vue 中使用这个 hook:
在这里插入图片描述

对应的代码如下:

// useEventListener.ts 文件
export const useEventListener = (target: EventTarget, event: string, callback: EventListener) => {onMounted(() => target.addEventListener(event, callback));onUnmounted(() => target.removeEventListener(event, callback));
};// demo5/index.vue 的 setup 中使用
useEventListener(window, 'beforeunload', (event: BeforeUnloadEvent) => {event.preventDefault();
});

即可实现刷新时提醒用户,效果如下:

在这里插入图片描述

六种编辑器

找到 官方文档,我们在 第一篇文章 就推测过,既然特意提到经典编辑器,就说明有很多种编辑器,仔细看看,确实有6种编辑器:
在这里插入图片描述

1. Classic editor 经典编辑器

经典编辑器,也就是我们一直在使用的编辑器,使用的类名是 ClassicEditor :

import { ClassicEditor } from '@ckeditor/ckeditor5-editor-classic'

在这里插入图片描述

2. Inline editor 内联编辑器

可以把编辑器分成多个块,分开编辑
在这里插入图片描述

3. Balloon editor 气泡编辑器

只有我们选中内容时,工具栏才会出来
在这里插入图片描述

4. Balloon block editor 气泡块编辑器

它左侧有一个滑块,可以进行拖动
在这里插入图片描述

5. Document editor 文档编辑器

有点像 word 和 wps 内容居中,像写文档一样
在这里插入图片描述

6. Multi-root editor 多根编辑器

跟内联编辑器差不多,但多根编辑器的每一个块,使用同一个上下文,比如撤销功能,分别在多个块中编辑,可以进行回退。
在这里插入图片描述

editor实例生命周期

1. 创建实例使用静态方法 create()

回顾一下,我们创建编辑器实例对象,都是这样创建的:
在这里插入图片描述
无论是哪种编辑器,应该都是使用 create 方法创建实例的。

2. 保存实例对象

也就是 instance = await MyClassicEditor.create(editorRef.value); 在这里,我们用 instance 来保存了,我们后续也把他叫做 editor 实例对象,简称 editor。

3. 销毁实例对象

这是为了避免内存泄露,防止浏览器卡顿的。通常在 vue 的 onBeforeUnmount 中销毁,如下:
在这里插入图片描述

4. 获取数据和设置数据

通过实例对象的 getData() 和 setData() 方法来对编辑器设置数据,也可以在初始化的时候,使用配置项 initialData 来给编辑器设置初始内容:
在这里插入图片描述
到此为止,就算完成优化了。

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

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

相关文章

第42节:模型优化与部署:Web服务部署(Flask, FastAPI)

1. 引言 在现代人工智能和机器学习应用中,模型的开发只是整个流程的一部分。 将训练好的模型有效地部署为可访问的Web服务,使其能够处理实际请求并返回预测结果,是模型价值实现的关键环节。Python生态系统提供了多种轻量级Web框架,其中Flask和FastAPI是目前最受欢迎的选择…

LabVIEW超宽带紧凑场测量系统

采用 LabVIEW 开发超宽带紧凑场测量系统,实现天线方向图、目标雷达散射截面(RCS)及天线增益的自动化测量。通过品牌硬件设备,优化系统架构,解决传统测量系统在兼容性、数据处理效率及操作便捷性等方面的问题&#xff0…

vue2使用笔记、vue2和vue3的区别

文章目录 vue2和vue3的区别1. 实现数据响应式的原理不同2. 生命周期不同3. vue 2.0 采用了 option 选项式 API,vue 3.0 采用了 composition 组合式 API4. 新特性编译宏5. 父子组件间双向数据绑定 v-model 不同6. v-for 和 v-if 优先级不同7. 使用的 diff 算法不同8.…

CSS3美化页面元素

1. 字体 <span>标签 字体样式⭐ 字体类型&#xff08;font-family&#xff09; 字体大小&#xff08;font-size&#xff09; 字体风格&#xff08;font-style&#xff09; 字体粗细&#xff08;font-weight&#xff09; 字体属性&#xff08;font&#xff09; 2. 文本 文…

【笔记】Windows 下载并安装 ChromeDriver

以下是 在 Windows 上下载并安装 ChromeDriver 的笔记&#xff1a; ✅ Windows 下载并安装 ChromeDriver 1️⃣ 确认 Chrome 浏览器版本 打开 Chrome 浏览器 点击右上角 ︙ → 帮助 → 关于 Google Chrome 记下版本号&#xff0c;例如&#xff1a;114.0.5735.199 2️⃣ 下载…

工厂模式 vs 策略模式:设计模式中的 “创建者” 与 “决策者”

在日常工作里&#xff0c;需求变动或者新增功能是再常见不过的事情了。而面对这种情况时&#xff0c;那些耦合度较高的代码就会给我们带来不少麻烦&#xff0c;因为在这样的代码基础上添加新需求往往困难重重。为了保证系统的稳定性&#xff0c;我们在添加新需求时&#xff0c;…

Java web学习路径预览

Java web学习路径预览 &#xff08;图源&#xff1a;黑马程序员&#xff09; 目录 Java web学习路径预览 一、HTML、CSS、JS 1. HTML (HyperText Markup Language): 网页的骨架 2. CSS (Cascading Style Sheets): 网页的皮肤 3. JavaScript (JS): 网页的行为 二、Ajax、…

linux、docker、git相关操作

1 linux 1.1解压缩 1.1.1 zip zip xxx.zip file 把名为fle的文件压缩成xxx.zip -r 递归压缩&#xff1a;加上该选项才能压缩文件夹 zip -r example_new.zip 示例集 # 新建压缩包并命名为 example_new.zip zip -r xxx.zip file1 file2 dir1 将多个文件目录压成zip包 unzip fi…

Attention Is All You Need (Transformer) 以及Transformer pytorch实现

参考https://zhuanlan.zhihu.com/p/569527564 Attention Is All You Need (Transformer) 是当今深度学习初学者必读的一篇论文。 一. Attention Is All You Need (Transformer) 论文精读 1. 知识准备 机器翻译&#xff0c;就是将某种语言的一段文字翻译成另一段文字。 由…

深入浅出:Oracle 数据库 SQL 执行计划查看详解(1)——基础概念与查看方式

背景 在当今的软件开发领域&#xff0c;尽管主流开发模式往往倾向于采用单表模式&#xff0c;力图尽可能地减少表之间的连接操作&#xff0c;以期达到提高数据处理效率、简化应用逻辑等目的。然而&#xff0c;对于那些已经上线运行多年的运维老系统而言&#xff0c;它们内部往…

每天掌握一个Linux命令 - fail2ban

Linux 命令工具 fail2ban 使用指南 目录 Linux 命令工具 fail2ban 使用指南一、工具概述二、安装方式1. 包管理器安装&#xff08;推荐&#xff09;Debian/Ubuntu 系统CentOS/RHEL 系统Arch Linux 系统 2. 手动编译安装&#xff08;适用于自定义需求&#xff09; 三、核心功能四…

互联网大厂智能体平台体验笔记字节扣子罗盘、阿里云百炼、百度千帆 、腾讯元器、TI-ONE平台、云智能体开发平台

互联网大厂 字节扣子、阿里云百炼、百度千帆 、腾讯元器、TI-ONE平台、云智能体开发平台 体验 开始动手 了解 智能体&#xff0c;发现已经落后时代太远 光头部互联网大厂对开 公开的平台就已经这么多&#xff0c;可以学习和了解&#xff0c;相关的信息 整理了对应的平台地址…

ansible-playbook 进阶 接上一章内容

1.异常中断 做法1&#xff1a;强制正常 编写 nginx 的 playbook 文件 01-zuofa .yml - hosts : web remote_user : root tasks : - name : create new user user : name nginx-test system yes uid 82 shell / sbin / nologin - name : test new user shell : gete…

LRC and VIP

//首先排除所有数相等的情况,再把最大值放在一个组&#xff0c;那么最大值的gcd就等于其本身&#xff0c;再判断剩下的gcd是否等于最大值就可以了 #include<bits/stdc.h> using namespace std;const int N1e3100; int a[N]; map<int,int>mapp; int main(){int t;ci…

企业应用AI对向量数据库选型思考

一、向量数据库概述 向量数据库是一种专门用于存储和检索高维向量数据的数据库系统&#xff0c;它能够高效地处理基于向量相似性的查询&#xff0c;如最近邻搜索等&#xff0c;在人工智能、机器学习等领域的应用中发挥着重要作用&#xff0c;为处理复杂的向量数据提供了有力的…

设计模式——迭代器设计模式(行为型)

摘要 本文详细介绍了迭代器设计模式&#xff0c;这是一种行为型设计模式&#xff0c;用于顺序访问集合对象中的元素&#xff0c;同时隐藏集合的内部结构。文章首先定义了迭代器设计模式并阐述了其核心角色&#xff0c;包括迭代器接口、具体迭代器、容器接口和具体容器。接着&a…

Java8 list集合根据属性分组

在Java8中&#xff0c;可以使用Collectors.groupingBy方法对List集合根据属性进行分组。以下是一个完整的示例&#xff0c;展示如何根据对象的不同属性分组。 根据对象属性分组 假设有一个Student类&#xff0c;包含name、age和grade属性&#xff1a; public class Student …

更新已打包好的 Spring Boot JAR 文件中的 class 文件

# 1. 解压原始 JAR unzip -q original-app.jar -d temp # 2. 替换 class 文件 cp ~/projects/new-classes/*.class temp/BOOT-INF/classes/com/example/ # 3. 保留原始清单 cp temp/META-INF/MANIFEST.MF . # 4. 重新打包 jar -cf0m new-app.jar MANIFEST.MF -C temp/ . # …

《HelloGitHub》第 110 期

兴趣是最好的老师&#xff0c;HelloGitHub 让你对开源感兴趣&#xff01; 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等&#xff0c;涵盖多种编程语言 Python、…

当 “欧洲版 Cursor” 遇上安全危机

在 AI 编程助手蓬勃发展的当下&#xff0c;安全问题正成为行业不容忽视的隐忧。近期&#xff0c;AI 编程助手公司 Replit 与号称 “欧洲版 Cursor” 的 Lovable 之间&#xff0c;因安全漏洞问题掀起了一场风波&#xff0c;引发了业界的广泛关注。​ Replit 的员工 Matt Palmer…