Fluent Editor 富文本开源2个月的总结:增加格式刷、截屏、TypeScript 类型声明等新特性

news/2024/12/26 13:06:40/文章来源:https://www.cnblogs.com/kagol/p/18523849

你好,我是 Kagol,个人公众号:前端开源星球

Fluent Editor 是一个基于 Quill 2.0 的富文本编辑器,在 Quill 基础上扩展了丰富的模块和格式,框架无关、
功能强大、开箱即用。

2024年8月12日,Fluent Editor 正式开源!

  • 源码:https://github.com/opentiny/fluent-editor/
  • 官网:https://opentiny.github.io/fluent-editor/

Fluent Editor 的前身是我在2019年基于 Quill 做的一款富文本编辑器:EditorX,最早 EditorX 只是在公司内部使用,做 EditorX 的过程让我对 Quill 这款开源富文本有了更加深入的了解,沉淀了《深入浅出 Quill》系列文章。

2021年5月28日,我在华为HWEB大前端技术分享会上分享了我做 Quill 富文本编辑器的实践:

Quill 富文本编辑器的实践

Fluent Editor 虽然刚开源2个多月,但其实已经在公司内部大量业务中使用,是一个成熟稳定的富文本编辑器。

目前 Fluent Editor 最新版本是:v3.21.0

npm i @opentiny/fluent-editor@3.21.0

欢迎大家体验和使用!

近期开发的新特性

虽然 Fluent Editor 在公司内部使用很久了,但开源之后,依然收到了更广泛的社区开发者的 issue,我们持续响应,在这两个多月完成了很多实用的功能。

格式刷

第一个功能是格式刷,这个功能很小,但是很实用,而且 Quill 并没有内置。

该功能由 Fluent Editor 核心贡献者 zzxming 实现。

使用起来很方便,只需要配置下工具栏,增加 format-painter 格式即可。

const TOOLBAR_CONFIG = [[{ header: [] }],['bold', 'italic', 'underline', 'link'],[{ list: 'ordered' }, { list: 'bullet' }],['clean'],['format-painter'], // 增加格式刷功能
]const editor = new FluentEditor('#editor', {theme: 'snow',modules: {toolbar: TOOLBAR_CONFIG}
})

使用体验和 Word 中的格式刷是一样的,选中一段带格式的文本,点击工具栏中的格式刷图标,然后选择另一段文本,这段文本就刷成了对应的格式。

双击格式刷图标,还可以连续刷格式,非常实用。

体验地址:https://opentiny.github.io/fluent-editor/docs/format-painter

截屏

富文本编辑器还能截屏?!截屏这个功能业界大部分富文本编辑器都没有,也是 zzxming 同学实现的。

个人觉得这个功能还是挺实用的,比如我们要做一个用户反馈的功能,放到网站右下角,用户点击之后出现一个富文本框,用户可以在里面输入反馈意见,提供反馈意见总免不了要截个图,更方便地说明要反馈的问题,而此时用户并没有打开微信等软件,并且本身电脑也没有安装截屏工具。

这时富文本的截屏功能就能发挥作用啦!

点击工具栏的截屏图标,就能框选页面区域进行截屏,截屏完,图片会自动插入到富文本的光标位置,巨方便!

该功能基于 canvas2html,zzxming 同学非常贴心地解决了:当画面中包含外部链接的图片时,canvas2html 截图出现空白的问题,所以如果你使用 Fluent Editor 的截屏功能,将不会出现该问题。

要给 Fluent Editor 配置截屏功能,需要先安装 html2canvas 依赖包,并在初始化编辑器前将 Html2Canvas 变量暴露在 window 上。

import Html2Canvas from 'html2canvas'
window.Html2Canvas = Html2Canvas

然后配置工具栏按钮 screenshot,可以开启截屏功能。

const TOOLBAR_CONFIG = [[{ header: [] }],['bold', 'italic', 'underline', 'link'],[{ list: 'ordered' }, { list: 'bullet' }],['clean'],['screenshot'], // 增加截屏功能
]const editor = new FluentEditor('#editor', {theme: 'snow',modules: {toolbar: TOOLBAR_CONFIG}
})

体验链接:https://opentiny.github.io/fluent-editor/docs/screenshot

完善的 TypeScript 类型支持

Fluent Editor 本身是用 TypeScript 写的,在最新的 v3.21.0 版本中,也支持了 TypeScript 类型声明文件导出,开发者在使用 Fluent Editor 时有非常丝滑的类型提示。

当初始化 Fluent Editor 时,会提示构造函数的参数和相应的类型。

鼠标移到 FluentEditor 关键字上也有提示。

配置 modules / toolbar 时也有完善的提示。

编辑器实例的方法也是有提示的。

更多实用功能等你来体验!

  • 表格
  • 图片上传(支持图片拉伸)
  • 附件上传
  • 代码块高亮
  • @提醒(支持自定义 HTML)
  • 插入公式
  • 插入视频
  • 插入 Emoji 表情
  • Markdown 快捷键支持
  • 字符统计
  • 深色模式
  • 超链接支持自动增加 https:// 前缀
  • ...

欢迎社区的开发者朋友们给我们提供宝贵的意见,或者感兴趣也欢迎参与我们的开源共建🤝

往期推荐文章

  • Fluent Editor:一个基于 Quill 2.0 的富文本编辑器,功能强大、开箱即用!
  • 🎉喜报!Fluent Editor 开源富文本迎来了第一位贡献者👏

联系我们

GitHub:https://github.com/opentiny/tiny-vue(欢迎 Star ⭐)

官网:https://opentiny.design/tiny-vue

B站:https://space.bilibili.com/15284299

个人博客:https://kagol.github.io/blogs

小助手微信:opentiny-official

公众号:OpenTiny

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

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

相关文章

JavaScript DOM

一 获取Element对象点击查看代码 Document对象中提供了以下获取 Element元素对象的函数 getElementById():根据id属性值获取,返回单个Element对象 getElementsByTagName():根据标签名称获取,返回Element对象数组 getElementsByName():根据name属性值获取,返回Element对象…

zblog列表页面包屑导航的代码 支持显示所有子分类

当前位置:<a href="{$host}">网站首页</a> {if $type==category} {php} $html=; function navcate($id){global $html;$cate = new Category;$cate->LoadInfoByID($id);$html = > <a href=".$cate->Url." title="查看.$cat…

zblog注册插件调用自定义模板的方法

操作步骤安装注册插件:安装官方提供的注册插件。修改插件文件:打开/zb_users/plugin/RegPage/include.php文件。替换模板名称:在第213行,将$article->Template改为自定义模板的名称,例如login。扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种C…

帝国CMS如何判断当前页面为首页高亮代码

<?php if(empty($GLOBALS[navclassid])){ echo class="active"; } ?>说明:如果当前栏目ID为空,则认为是首页,添加class="active"进行高亮。 特殊情况处理:如果不想在TAG页面和自定义页面也高亮,可以在这些页面顶部定义$GLOBALS[navclassid]为…

开启慢SQL设置long_query_time=0.1为啥会统计的sql却存在小于100毫秒的sql

开启慢SQL设置long_query_time=0.1为啥会统计的sql却存在小于100毫秒的sql@目录问题描述我的使用场景描述结论本人其他相关文章链接 问题描述开启慢SQL设置long_query_time=0.1为啥会统计的sql却存在小于100毫秒的sql?我的使用场景描述 我采用执行sql修改配置文件,也就是采用…

帝国CMS文章列表页模板动态刷新点击数代码

修改HTML代码:将点击数显示部分修改为:<em class="clickcount" data-class="[!--classid--]" data-id="[!--id--]">[!--onclick--]</em>添加JS代码:在模板页面尾部加入以下JS代码:<script> window.onload = function() {$…

人工智能技术:引领档案馆数字化转型新浪潮,档案专业人士必读(内有产品体验)

获取白皮书或产品体验,文末添加产品经理微信 在这个信息爆炸的时代,档案馆作为知识的宝库,承载着历史的记忆和文化的传承。如何让这些宝贵的信息更容易被检索、管理和利用,是档案管理领域面临的重大挑战。思通数科AI多模态平台,以前沿的人工智能技术,为档案馆的数字化转型…

GoPro 不同数码镜头的区别 All In One

GoPro 不同数码镜头的区别 All In One GoPro 数码镜头 HyperView 数码镜头/视野,只有 GoPro 10 之后的几代才有, 即 GoPro 11、GoPro 12、GoPro 13 ... HyperView 超大广角 HV SuperView SV 宽 W 线性 L 线性 + 水平锁定/地平线修正 L+GoPro 不同数码镜头的区别 All In One Go…

《计算机基础与程序设计》第6周学习总结

学期2024-2025-1学号20241414《计算机基础与程序设计》第6周学习总结 作业信息这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计这个作业要求在哪里 2024-2025-1计算机基础与程序设计第6周作业这个作业的目标 1.循环语句2.循环语句的具体运用3.第二次实验4.函数作业正文…

Z-Library电子图书馆最新官方入口网站 镜像地址 客户端合集(2024持续更新)

PS: 本文章不涉及营销性质,没有盈利目的,仅供博友学习交流读书阅读本应该是自由的一件事 前言:Z-Library电子图书馆简介 Z-Libray简称 Z-Lib,它前身为 BookFinder,如今已成为众多读者下载期刊、文章以及各类书籍的首选之地。 Z-Library 共收录了超过 1000 万本书籍和…

java实现“数据平滑升级”

java实现“数据平滑升级”@目录一、摘要二、前提场景说明:三、项目用到的脚本和代码1.项目目录长这样2.java代码、配置文件、部分脚本3.升级包中的部分文件 一、摘要所谓的数据平滑升级:指的是比如旧的系统代码咱称之为V4.6版本,V4.6涉及的部分库表字段只有5个字段,而新版本…

第三十二讲:我查这么多数据,会不会把数据库内存打爆?

第三十二讲:我查这么多数据,会不会把数据库内存打爆? 简概还是平淡的开篇 ​ 我经常会被问到这样一个问题:我的主机内存只有 100G,现在要对一个 200G 的大表做全表扫描,会不会把数据库主机的内存用光了? 这个问题确实值得担心,被系统 OOM(out of memory)可不是闹着玩…