处理DeepSeek返回的markdown文本
处理DeepSeek返回的markdown文本
markdown预览组件,支持公式显示,支持uniapp。
相关依赖
markdown-itmarkdown-it-mathjaxmarkdown-it-katexmarkdown-it-latexkatexgithub-markdown-css
组件源码
<!--* @Description: markdown显示组件* @Author: wang keju* @Email: git config user.email* @Date: 2025-02-25 20:42:41* @LastEditTime: 2025-02-27 23:28:39* @LastEditors: wang keju
-->
<script lang="ts" setup>
import { ref, watch, onMounted } from "vue";
import MarkdownIt from 'markdown-it';
import markdownItMathjax from 'markdown-it-mathjax';
import mk from 'markdown-it-katex';
import mkl from 'markdown-it-latex';import 'katex/dist/katex.min.css';
import "github-markdown-css";type Props = {text: string;
}const props = defineProps<Props>();
const displayText = ref<string>();const preprocessLaTeX = (content: string) => {if (typeof content !== 'string') return content;return content.replace(/\\\[(.*?)\\\]/gs, (_, equation) => `$$${equation}$$`).replace(/\\\((.*?)\\\)/gs, (_, equation) => `$$${equation}$$`).replace(/(^|[^\\])\$(.+?)\$/gs, (_, prefix, equation) => `${prefix}$${equation}$`).replace(/\t/g, '\\t');
};const md = new MarkdownIt({html: true,linkify: true,typographer: true,
});
md.use(markdownItMathjax);
md.use(mk, {throwOnError: false,
});
md.use(mkl);const renderMd = (text: string) => {text = preprocessLaTeX(text);return md.render(text);
};const updateDisplayText = async () => {const info = renderMd(props.text);displayText.value = info;
}watch(props, updateDisplayText);onMounted(() => {updateDisplayText();
});
</script><template><view class="markdown-body" data-theme="light" v-html="displayText"></view>
</template><style lang="scss" scoped>
.markdown-body {box-sizing: border-box;padding: 12px;min-height: 32px !important;::deep(.katex-display) {margin: 12px 0 !important;}
}
</style>
相关文章:
处理DeepSeek返回的markdown文本
处理DeepSeek返回的markdown文本 markdown预览组件,支持公式显示,支持uniapp。 相关依赖 markdown-itmarkdown-it-mathjaxmarkdown-it-katexmarkdown-it-latexkatexgithub-markdown-css 组件源码 <!--* Description: markdown显示组件* Author: wa…...
互联网+房产中介+装修设计+物料市场+智能家居一体化平台需求书
一、项目概述 1.1 项目背景 随着互联网技术的飞速发展以及人们生活品质的显著提升,传统房产交易、装修设计、家居购物等领域暴露出诸多问题。信息不对称使得用户难以获取全面准确的信息,在房产交易中可能高价买入或低价卖出,装修时可能遭遇…...
Node.js定义以及性能优化
Node.js Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时,广泛用于构建高性能的网络应用。以下是一些常见的 Node.js 面试题及其解答,帮助你准备面试: 1. 什么是 Node.js? Node.js 是一个基于 Chrome V8 引擎的 JavaSc…...
浅谈流媒体协议以及视频编解码
流媒体协议介绍 流媒体协议用于传输视频、音频等多媒体数据,确保数据流畅地传输到用户设备。常见的流媒体协议包括 RTMP、HLS、DASH、WebRTC 等,每种协议具有不同的特点和适用场景。 1. RTMP (Real-Time Messaging Protocol) 定义:由 Adob…...
在 Windows 上配置 Ollama 服务并开放局域网访问
为了在局域网内共享 Ollama 服务,我们需要完成以下两步: 1、设置 Ollama 的环境变量 OLLAMA_HOST,使其监听局域网的 IP 地址。 (1) 配置 Ollama 服务的监听地址 Ollama 服务使用环境变量 OLLAMA_HOST 来指定监听的地…...
【六祎 - Note】消息队列的演变,架构图;备忘录; IBM MQ,RabbitMQ,Kafka,Pulsar
IBM MQ 于 1993 年推出。它最初称为 MQSeries,2002 年更名为 WebSphere MQ。2014 年更名为 IBM MQ。IBM MQ 是一款非常成功的产品,广泛应用于金融领域。其收入在 2020 年仍达到 10 亿美元。 RabbitMQ 架构与 IBM MQ 不同,更类似于 Kafka 的…...
常见AI写作工具介绍(ChatGPT 4o、DeepClaude、Claude 3.5 Sonnet 、DeepSeek R1等)
AI写作工具介绍 1. ChatGPT-4o ChatGPT-4o是OpenAI于2024年5月发布的最新旗舰模型,相比之前的版本,它在多模态支持和实时推理能力上有了显著提升。它能够处理和理解音频、图像和文本数据,适用于复杂的图像分析、语音识别等应用场景[1]。 2…...
WPF中对滚动条进行平滑滚动
有时候我们在动态添加内容时,需要将滚动条滚动到指定内容处。 一般我们会调用ScrollViewer的ScrollToVerticalOffset(垂直方向)函数和ScrollToHorizontalOffset(水平方向)函数来控制滚动条滚动到指定位置。 正常滚动效…...
深入xtquant:Python量化交易的桥梁与核心
深入xtquant:Python量化交易的桥梁与核心 🚀量化软件开通 🚀量化实战教程 在当今的金融市场中,量化交易已成为一种趋势。为了高效地进行策略开发和执行,选择合适的工具至关重要。xtquant,作为迅投官方开…...
Flutter 学习之旅 之 flutter 在 Android 端进行简单的打开前后相机预览 / 拍照保存
Flutter 学习之旅 之 flutter 在 Android 端进行简单的打开前后相机预览 / 拍照保存 目录 Flutter 学习之旅 之 flutter 在 Android 端进行简单的打开前后相机预览 / 拍照保存 一、简单介绍 二、简单介绍 camera 三、安装 camera 四、简单案例实现 五、关键代码 一、简单…...
网络变压器的主要电性参数与测试方法(2)
Hqst盈盛(华强盛)电子导读:网络变压器的主要电性参数与测试方法(2).. 今天我们继续来看看网络变压器的2个主要电性参数与它的测试方法: 1. 线圈间分布电容Cp:线圈间杂散静电容 测试条件:100KHz/0.1…...
SpringSecurity基于JWT实现Token的处理
前面介绍了手写单点登录和JWT的应用,本文结合SpringSecurity来介绍下在SpringBoot项目中基于SpringSecurity作为认证授权框架的情况下如何整合JWT来实现Token的处理。 一、认证思路分析 SpringSecurity主要是通过过滤器来实现功能的!我们要找到SpringSecurity实现认证和校验…...
TCP的三次握手与四次挥手:建立与终止连接的关键步骤
引言 TCP(传输控制协议)工作在OSI模型的传输层。OSI模型将计算机网络功能划分为七个层级,从底层到顶层依次是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。传输层负责在网络节点之间提供可靠的端到端通信&a…...
某住宅小区地下车库安科瑞的新能源汽车充电桩的配电设计与应用方案
摘要: 文中以某住宅小区建设工程为例,重点研究了住宅小区地下车库新能源汽车充电桩配电设计,从位置设置、安装方式选择、配电箱设置、配电箱回路设置、供配电系统设计等方面展开分析,提出了民用建筑充电桩设计的科学建议,为新能源充电桩的推广应用提供参考。 关键…...
登录次数限制
文章目录 一、应用场景与设计目的1. 应用场景2. 设计目的 二、功能设计1. 登录限制规则2. 解锁机制3. 适用维度 三、技术实现1. 数据存储2. 逻辑流程3. 实现代码示例4. 动态锁定时间 四、安全增强与扩展1. 防止用户名枚举2. 加入验证码3. 监控与报警4. 分布式支持 五、设计思考…...
java jar包内的jar包如何打补丁
问题描述: 主包:hisca.jar,解压后 BOOT-INFO/lib下有其他jar包 因为一个小bug,需要修改这个hisca包下BOOT-INF/lib下的子jar包service-hisca-impl-1.0.0.jar中的一个service类及xml文件 操作步骤: 1、主包jar -xvf …...
面试(进阶) —虚拟列表在什么场景使用,如何实现?
面试(进阶) —虚拟列表在什么场景使用,如何实现? 在前端开发中,当需要渲染大量数据时,传统的渲染方式往往会遇到性能瓶颈。一次性将大量数据渲染到DOM中,不仅会导致页面加载缓慢,还可能占用大量内存&#x…...
深入了解 NAT 模式:网络地址转换的奥秘
深入了解 NAT 模式:网络地址转换的奥秘 在计算机网络的世界里,NAT 模式(Network Address Translation,网络地址转换)扮演着至关重要的角色。它就像是网络中的翻译官,在不同网络地址之间进行转换࿰…...
Android Studio 新版本Gradle发布本地Maven仓库示例
发布代码到JitPack示例:https://blog.csdn.net/loutengyuan/article/details/145938967 以下是基于 Android Studio 24.2.2(Gradle 8.10.2 AGP 8.8.0 JDK17) 的本地 Maven 仓库发布示例,包含aar和jar的不同配置: 1.…...
无服务边缘融合架构:重新定义云原生应用边界
引言:零部署计算的革命突破 Airbnb迁移至LambdaEdge架构后,全球客房详情页渲染延迟降至35ms,冷启动时间缩至50ms以内。Stripe采用无服务边缘计算处理支付事务,成功将动态API响应P99延迟从210ms压缩至19ms。AWS官方基准显示&#…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
