当前位置: 首页 > article >正文

ck-editor5的研究 (7):自定义配置 CKeditor5 的 toolbar 工具栏

文章目录

  • 一、前言
  • 二、实现步骤
    • 1. 第一步: 搭建目录结构
    • 2. 第二步:配置toolbar工具栏的步骤
      • (2-1). 配置粗体和斜体
      • (2-2). 配置链接和标题+正文
      • (2-3). 配置列表和引用
      • (2-4). 配置自动格式化
    • 3. 第三步:更多工具
  • 三、测试效果和细节
  • 四、总结


一、前言

在前面的文章中,我们已经对 CKEditor5 有了一定的熟悉,从这篇文章开始,我们将对 CKEditor5 进行配置化——自定义 toolbar 工具栏。

实现的效果图大致如下:
在这里插入图片描述


二、实现步骤

CKEditor5 的所有功能都是通过插件实现的,不配置插件,编辑器就是一具空壳,什么也做不了。在 37.1.0 版本中,每一个依赖包,就是一个插件:在这里插入图片描述
有些插件是包含了多个工的, 比如 @ckeditor/ckeditor5-basic-styles 包含了 Bold(粗体), Italic(斜体)。
有些插件是相互依赖的,可能需要安装多个包,比如缩进功能。

1. 第一步: 搭建目录结构

仍然跟之前一样,一个 ts 文件,一个 vue 组件,一个 demo6/index.vue 测试页面
在这里插入图片描述
接下来我们的侧重点会在 ckeditor6.ts 这个文件中

2. 第二步:配置toolbar工具栏的步骤

要想配置 toolbar 工具栏,总共分成4步:

  1. 安装对应的依赖包,这里有查找依赖包的方法 如何找到某项功能的依赖包
  2. 导入依赖包的功能,如: import { Bold, Italic } from '@ckeditor/ckeditor5-basic-styles';
  3. 设置到插件中
  4. 配置 toolbar 属性

我们一步一步来看,首先看到现在的编辑器:
在这里插入图片描述

(2-1). 配置粗体和斜体

使用 @ckeditor/ckeditor5-basic-styles 这个包的详细步骤如下:
在这里插入图片描述

(2-2). 配置链接和标题+正文

使用 @ckeditor/ckeditor5-link@ckeditor/ckeditor5-heading
在这里插入图片描述

(2-3). 配置列表和引用

使用 @ckeditor/ckeditor5-list@ckeditor/ckeditor5-block-quote
在这里插入图片描述

(2-4). 配置自动格式化

使用 @ckeditor/ckeditor5-autoformat ,这个插件比较特殊,它不需要配置 toolbar,它是用来触发类似 md 文档的自动格式化功能的,可以查看演示:
在这里插入图片描述
经过前面的4个例子,后续我们只要依葫芦画瓢即可,按照4个步骤:安装包、引入插件、使用插件、配置toolbar工具栏。

3. 第三步:更多工具

如果想要寻找更多功能,只需要找这个 功能表 即可。
这里我尽可能引入多的功能进来,以下是我的代码:

import { ClassicEditor } from '@ckeditor/ckeditor5-editor-classic';
import { Essentials } from '@ckeditor/ckeditor5-essentials';
import { Paragraph } from '@ckeditor/ckeditor5-paragraph';
import { Bold, Italic, Underline, Strikethrough, Code, Subscript, Superscript } from '@ckeditor/ckeditor5-basic-styles';
import { Link } from '@ckeditor/ckeditor5-link';
import { Heading } from '@ckeditor/ckeditor5-heading';
import { List }
http://www.lryc.cn/news/2398541.html

相关文章:

  • MPLS-EVPN笔记详述
  • 嵌入式Linux系统中的启动分区架构
  • 无人机甲烷检测技术革新:开启环境与能源安全监测新时代
  • mysql数据库实现分库分表,读写分离中间件sharding-sphere
  • [Python] struct.unpack() 用法详解
  • 普通二叉树 —— 最近公共祖先问题解析(Leetcode 236)
  • Spring AOP:面向切面编程 详解代理模式
  • 零知开源——STM32F407VET6驱动ILI9486 TFT显示屏 实现Flappy Bird游戏教程
  • 数据安全中心是什么?如何做好数据安全管理?
  • Monorepo 详解:现代前端工程的架构革命
  • 16-前端Web实战(Tlias案例-部门管理)
  • 电路学习(二)之电容
  • 从“remote rejected”看git角色区别,Maintainer和Devoloper
  • CTA-861-G-2017中文pdf版
  • JavaScript中的常量值与引用值:从基础到实践
  • 港大NVMIT开源Fast-dLLM:无需重新训练模型,直接提升扩散语言模型的推理效率
  • ESP32-C3 Vscode+ESP-IDF开发环境搭建 保姆级教程
  • SCSS 全面深度解析
  • 解决vscode打开一个单片机工程文件(IAR/keil MDK)因无法找到头文件导致的结构体成员不自动补全问题。
  • Python 在金融中的应用- Part 1
  • 【Node.js 深度解析】npm install 遭遇:npm ERR! code CERT_HAS_EXPIRED 错误的终极解决方案
  • Vue内置组件Teleport和Suspense
  • Java网络编程实战:TCP/UDP Socket通信详解与高并发服务器设计
  • vue+threeJs 绘制3D圆形
  • Silky-CTF: 0x02靶场
  • Kafka 的优势是什么?
  • 基于FPGA + JESD204B协议+高速ADC数据采集系统设计
  • 微服务中引入公共拦截器
  • Ubuntu20.04 LTS 升级Ubuntu22.04LTS 依赖错误 系统崩溃重装 Ubuntu22.04 LTS
  • C++11:unique_ptr的基本用法、使用场景和最佳使用指南