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

【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

http://www.jsqmd.com/news/186771/

相关文章:

  • 揭秘C++26 std::execution on函数:5大特性让你的并行代码性能飙升
  • CSDN博客矩阵运营覆盖更多‘markdown’‘git commit’搜索人群
  • 欧拉-拉格朗日方程:水往低处流
  • 通过STM32实现蜂鸣器电路节奏控制:操作手册
  • 【C++26并发编程新纪元】:std::execution on函数将如何重塑未来异步开发?
  • 完整教程:2025年影视仓TV+手机官方版 内置地址源支持高清直播
  • 【C++多线程资源管理终极指南】:揭秘高效并发编程的5大核心策略
  • 如何用C++实现自适应分布式AI任务调度?3步构建智能决策核心
  • 支持PyCharm开发环境调试:lora-scripts项目结构深度解析
  • mybatisplus是否可用于存储lora-scripts训练元数据?数据库设计建议
  • 不贪恋过去,不忧患未来~ - 借口/*
  • 如何在生产环境实现C++ AIGC推理吞吐量行业顶尖水平?
  • 利用jScope提升调试效率:STM32CubeIDE深度剖析
  • 打造品牌专属IP形象生成器:lora-scripts人物定制全流程
  • 网工毕业设计本科生选题答疑
  • 低显存也能训模型?lora-scripts助力RTX 3090/4090用户轻松微调LoRA
  • Token购买优惠通道:为高频使用者提供的成本优化方案
  • HTML前端展示lora-scripts生成效果图集的技术实现路径
  • 亲测好用10个AI论文软件,继续教育学生轻松搞定毕业论文!
  • C++编译期优化终极方案:内核配置如何实现0运行时开销(仅限高级开发者)
  • 揭秘C++17/20中让元编程变简单的5个特性,你知道几个?
  • 论文季生存指南:5款热门AI写作工具深度测评
  • 【C++专家私藏技术】:静态链接与内核配置协同优化的7个黄金法则
  • 量化交易-选股-业务规则
  • Mathtype公式识别训练新思路:基于lora-scripts的小样本微调方案
  • 个人创作者福音:低成本打造专属AI助手的新途径
  • Go 项目中如何正确升级第三方依赖(Go Modules 实战指南)
  • 量化交易-选股-伪代码
  • lora-scripts进阶指南:如何调整rank、学习率和batch size优化训练结果
  • HuggingFace镜像网站部署lora-scripts所需模型权重的正确姿势