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

Textbus:GitHub上的宝藏项目,构建复杂富文本的不二之选

嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目工作学习方法

Textbus 是一个组件化的、数据驱动的富文本框架,支持在线协同编辑,拥有非常好的扩展性和可定制性,可使用 Viewfly、Vue 或 React 直接渲染富文本,是构建复杂富文本的不二之选!

特点概览

  • 组件化:根据富文本的特点而专门开发的组件化系统,让富文本编辑支持复杂布局,插入特殊控件等就像现代前端框架一样,非常的简单。

  • 完全可控:由于 Textbus 采用完全的数据驱动,输入输出完全依赖内核来完成,在不同的浏览器上,不会存在不一样的行为和结果。

  • 易扩展:hooks 风格的扩展代码,让你在不同上下文中对同样事件定制不同的行为变得异常简单。原生支持多种前端框架渲染,让你编写复杂交互更容易。

  • 语法糖支持:高度灵活的语法糖支持,你可以非常灵活的定制输入实时转换功能,如 Markdown 中的 # 号 + 空格变为标题等,你也可以完全自创语法,只要你开心。

  • 格式兼容:完全可定制的文档解析能力,可以让你最大可能的保持从网页、word 等其它页面复制过来的内容和格式。

  • 格式限制:既可以做到组件深层次嵌套,也可以做到像现在大多数编辑器一样 block 化。

  • 转换便捷:内置功能强大的格式转换能力,这也是富文本的难点之一,尤其是对于支持树状数据结构的编辑器来说,要实现这一点非常复杂。

  • 支持在线协作:Textbus 官方目前提供了基于 Yjs 的协作能力支持,你也可以采用其它的协作方案来对接 Textbus 的数据模型。

  • 高度抽象:完全抽象的光标和选区系统,你不需要再关心浏览器复杂的选区问题。

模块概述

Textbus由多个模块组成,每个模块都有其独特的作用:

模块作用
@textbus/core核心模块,提供了组件、插槽、格式、属性的数据模型抽象和选区、格式变换、渲染、组件生命周期管理、编辑器控制、历史记录、快捷键管理、语法糖管理、输出转换等富文本核心能力的实现
@textbus/platform-browser浏览器支持中间层,提供了基本的视图层,桥接了选区、光标、和 DOM 渲染能力
@textbus/collaborate协作支持模块,提供了基于 Yjs 的协作对接能力
@textbus/adapter-viewflyTextbus 视图渲染 Viewlfy 适配器,可使用 Viewfly 渲染富文本内容
@textbus/adapter-vueTextbus 视图渲染 vue 适配器,可使用 vue 渲染富文本内容
@textbus/adapter-reactTextbus 视图渲染 react 适配器,可使用 react 渲染富文本内容
@textbus/platform-node适用于 node 后台运行的 Textbus 的实用工具集

XNote 编辑器

XNote 是 Textbus 官方基于最新 4.0 版本开发的一个无头的、高性能的开源富文本编辑器。提供了开箱即用的大多数功能。也为需要自己开发编辑器的开发者提供了第一手的参考资料。

仓库地址:

https://github.com/textbus/xnote

在线演示

https://textbus.io/playground

本地开发

Textbus使用pnpm作为多模块管理工具,你可以通过以下步骤开始本地开发:

  1. 全局安装pnpm:
    npm install pnpm -g
    
  2. 克隆Textbus仓库并安装依赖:
    git clone git@github.com:textbus/textbus.git
    cd textbus
    pnpm install
    
  3. 启动开发环境:
    npm start
    

资源相关

类似项目

在富文本编辑器的领域,还有许多其他优秀的项目,例如:

  • Quill:一个现代的WYSIWYG编辑器,支持嵌入到任何内容管理系统中。

  • Slate:一个完全可自定义的富文本编辑器,提供了丰富的API和插件系统。

  • ProseMirror:一个灵活的富文本编辑框架,支持多种编辑场景和定制需求。

这些项目各有特点,但

Textbus以其组件化和数据驱动的设计,提供了一种全新的编辑体验。无论是对于开发者还是最终用户,Textbus都是一个值得尝试的选择。


Textbus的探索之路还在继续,它的未来充满了无限可能。如果你对富文本编辑感兴趣,不妨试一试Textbus,或许它能为你的工作带来意想不到的便利。让我们一起期待Textbus的下一次飞跃!

项目地址

https://github.com/textbus/textbus

http://www.kler.cn/news/363214.html

相关文章:

  • 苍穹外卖--开发记录day11
  • axios直接上传binary
  • 【操作系统的使用】Linux 系统环境变量与服务管理:设置与控制的艺术
  • Qt/C++学习系列之简单记录1
  • Linux中如何理解一切皆文件
  • 如何开启华为交换机 http
  • java 提示 避免用Apache Beanutils进行属性的copy。
  • 如何在SpringTask的定时任务中创建动态的定时任务
  • 教学平台的智能化升级:Spring Boot应用
  • css-(-webkit-、-moz-、-o-)前缀主要用于CSS和某些HTML属性,确保跨浏览器的兼容性和支持特定的CSS功能
  • 如何恢复红米手机中已删除的照片?(6种方法可用)
  • C++加载sqlite3数据库文件
  • TextIn文档解析助力金融信息化企业建设数据底座
  • OpenCV和HALCON
  • Verilog——参数化定义
  • SSM(一对多和多对多)
  • data_table_2 与 flutter 官方 DataTable 的区别
  • 富格林:正确判别欺诈确保安全
  • ros2 action server示例、拓展、练习
  • 【无标题】测试
  • ubuntu启用ssh
  • Codeforces Round 980 (Div. 2) A-C 题解
  • C语言编译过程
  • 【CVPR2025】3 投稿指南和论文模版
  • 大数据查询引擎之Tez
  • MySQL的主从复制配置