news 2026/4/18 12:23:51

【Tiptap】在服务器端使用 Tiptap 内容格式转换

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Tiptap】在服务器端使用 Tiptap 内容格式转换

在 Node.js 环境将 Tiptap 的 JSON 内容转换为 Markdown,有两种推荐方式,使用官方@tiptap/markdown扩展(最新版本支持良好)。

推荐方式 1:使用 MarkdownManager(无需创建完整 Editor 实例,最适合纯服务端转换)

先确保安装:

npminstall@tiptap/markdown @tiptap/starter-kit# 如果有其他扩展(如 Image、Table 等),一并安装

然后在 Service 中创建 MarkdownManager 实例:

import{Injectable}from'@nestjs/common';import{MarkdownManager}from'@tiptap/markdown';importStarterKitfrom'@tiptap/starter-kit';import{Markdown}from'@tiptap/markdown';// 需要导入 Markdown 扩展本身// 导入其他扩展...// import Image from '@tiptap/extension-image';// import Table from '@tiptap/extension-table';// 等constextensions=[StarterKit,Markdown,// 必须包含 Markdown 扩展来启用序列化// Image,// Table,// 其他扩展...];constmarkdownManager=newMarkdownManager({extensions,// 传递所有 extensions,包括 Markdown});@Injectable()exportclassTiptapService{// JSON → MarkdownjsonToMarkdown(json:any):string{returnmarkdownManager.serialize(json);}// 额外:如果需要 Markdown → JSONmarkdownToJson(markdown:string):any{returnmarkdownManager.parse(markdown);}}

使用示例(在 Controller 或其他地方):

constjsonFromDB={type:'doc',content:[...]};// 从数据库取的 Tiptap JSONconstmarkdown=this.tiptapService.jsonToMarkdown(jsonFromDB);// markdown 就是字符串,如 "# Title\n\n**Bold** text"

这种方式完全服务端兼容、无 DOM 依赖、最轻量高效。

推荐方式 2:创建 headless Editor 实例(兼容性好,editor.getMarkdown())

如果你已经在其他地方用了 Editor,也可以这样:

import{Editor}from'@tiptap/core';importStarterKitfrom'@tiptap/starter-kit';import{Markdown}from'@tiptap/markdown';// 其他扩展...constextensions=[StarterKit,Markdown,// 必须包含// 其他...];@Injectable()exportclassTiptapService{jsonToMarkdown(json:any):string{consteditor=newEditor({extensions,content:json,// 直接传入 JSONelement:null,// 关键:服务端不绑定 DOM});constmarkdown=editor.getMarkdown();editor.destroy();// 用完销毁,避免内存泄漏returnmarkdown;}}

注意事项

  • 必须在 extensions 中包含Markdown扩展,否则getMarkdown()serialize()不生效。
  • 如果需要 GitHub Flavored Markdown(支持表格、任务列表等),配置:
    Markdown.configure({markedOptions:{gfm:true},})
  • 自定义扩展需要实现renderMarkdown来正确序列化(参考官方文档)。
  • 避免先转 HTML 再转 Markdown(容易丢失格式,如表格),直接用以上方式最准确。

这样就能在 NestJS 服务端安全地将 Tiptap JSON 转换为 Markdown 了。更多细节见官方文档:https://tiptap.dev/docs/editor/markdown

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 8:38:49

基于lora-scripts的图文生成定制化实战:风格、人物、场景全搞定

基于 lora-scripts 的图文生成定制化实战:风格、人物、场景全搞定 在 AI 创作日益普及的今天,我们早已不再满足于“输入提示词 → 得到一张图”这种通用模式。无论是数字艺术家希望打造专属画风,还是企业需要一个懂行业术语的智能客服&#x…

作者头像 李华
网站建设 2026/4/18 7:55:19

STM32串口通信FIFO缓冲区设计实践

STM32串口通信FIFO缓冲区设计:从痛点出发的实战优化你有没有遇到过这种情况?系统明明在跑,但串口发来的数据就是对不上号——少几个字节、帧头错位、解析失败。查了一圈硬件没问题,时钟也稳定,最后发现是主程序没及时处…

作者头像 李华
网站建设 2026/4/17 15:34:20

exe资源编辑器是干啥的?修改软件图标、汉化全靠它

在软件开发和本地化工作中,exe资源编辑器是一个处理Windows可执行文件内部资源的实用工具。它能直接修改程序的图标、对话框、字符串表、版本信息等非代码资源,而无需接触源代码。这类工具对于界面定制、软件汉化或小型功能调整具有特定价值,…

作者头像 李华
网站建设 2026/4/18 3:12:14

为什么你的物理引擎卡顿?C++碰撞检测性能瓶颈全剖析

第一章:为什么你的物理引擎卡顿?C碰撞检测性能瓶颈全剖析在开发高性能游戏或仿真系统时,物理引擎的流畅性直接决定用户体验。而碰撞检测作为物理引擎的核心模块,常常成为性能瓶颈的源头。许多开发者在初期使用简单的暴力检测算法&…

作者头像 李华
网站建设 2026/4/17 19:51:06

如何在毫秒内完成上千物体碰撞检测?C++优化实战案例分享

第一章:C物理引擎中碰撞检测的挑战与优化目标在C构建的物理引擎中,碰撞检测是决定模拟真实感和运行效率的核心模块。其主要挑战在于如何在复杂几何体之间高效、准确地判断是否发生接触,并计算出相应的法向量与穿透深度。随着场景中刚体数量的…

作者头像 李华