vue3 初略版使用markdown

news/2024/12/2 16:45:12/文章来源:https://www.cnblogs.com/LIang2003/p/18582178

vue3 初略版使用markdown

构造一个能够编写markdown且能解析数学公式,且有预览页面的markdown组件

第一步,katex用来解析数学公式,markded用来解析markdown语法

npm install katex markded

第二步 封装组件

<template><div class="markdown-container"><div style="flex: 50%"><textarea v-model="input" class="content"  placeholder="输入 Markdown" /></div><div style="flex: 50%"><div v-html="renderedMarkdown" class="markdown-content"></div></div></div>
</template><script>
import { ref, watch } from 'vue';
import { marked } from 'marked';
import katex from 'katex';
import 'katex/dist/katex.min.css';export default {name: 'MarkdownEditor',setup() {const input = ref('');const renderedMarkdown = ref('');// 监听 input 的变化并渲染 Markdownwatch(input, (newInput) => {renderedMarkdown.value = renderMarkdown(newInput);});function renderMarkdown(markdown) {// 使用 marked 解析 Markdownconst html = marked(markdown, { breaks: true });// 使用 KaTeX 渲染数学公式return renderMath(html);}function renderMath(html) {// 使用正则表达式找到所有的数学公式并进行渲染const mathRegex = /\$([^$]+)\$/g;return html.replace(mathRegex, (match, math) => {try {// 尝试渲染数学公式return `<span class="math">${katex.renderToString(math)}</span>`;} catch (error) {// 捕获错误并返回错误信息return `<span class="math-error">Error rendering math: ${error.message}</span>`;}});}return {input,renderedMarkdown,};},
};
</script><style>
.markdown-container {display: flex;gap: 1rem;
}.content{width: 100%;height: 500px;
}.markdown-content {padding: 1rem;min-height: 30rem;border: 1px solid #ccc;background-color: #f9f9f9;
}
.math {font-size: 1rem; /* 可以根据需要调整数学公式的大小 */
}
/*解析数学公式报错时直接显示在预览页面的提示*/
.math-error {color: red;font-weight: bold;
}
</style>

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

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

相关文章

css 边框镶角

效果图:background: linear-gradient(to left, yellow, yellow) left top no-repeat,linear-gradient(to bottom, yellow, yellow) left top no-repeat,linear-gradient(to left, yellow, yellow) right top no-repeat,linear-gradient(to bottom, yellow, yellow) right top …

go语言常见cache库

摘自 https://zhuanlan.zhihu.com/p/624248354

带有多选和突出显示关键字的自定义下拉选择框(动态)

本文是在上一篇的基础上改造成 根据输入关键词动态筛选选项列表,然后实现多项选择并且关键词高亮。 上一篇:带有多选和突出显示关键字的自定义下拉选择框(静态) >> 带有多选和突出显示关键字的自定义下拉选择框: Custom Dropdown Select Box with Multiple Selectio…

2024.11.26(周二)

旅游的出行方式有乘坐飞机旅行、乘火车旅行和自行车游,不同的旅游方式有不同的实现过程,客户可以根据自己的需要选择一种合适的旅行方式。 实验要求: 1. 画出对应的类图; 2. 提交源代码; 3. 注意编程规范。1、类图2、源代码 #include<iostream> using namespace …

多人编辑的终极指南,版本冲突不是问题!

在局域网环境下实现高效文档协同编辑,一直是企业和科研团队关注的焦点。版本冲突是这一过程中的核心技术挑战之一,它不仅关系到协作效率,还直接影响最终成果的质量。 在传统的文档协同中,多个用户同时编辑同一文档可能导致内容覆盖、丢失或逻辑混乱。这种问题常见于无版本控…

摄像机实时接入分析平台视频分析网关机动车结构化识别算法:“智眼识车”的技术革新

随着智能交通系统的发展,视频分析技术在机动车识别和监控中的应用越来越广泛。视频分析网关作为这一技术的核心组件,利用先进的算法对机动车进行结构化识别,以提升交通管理的效率和准确性。本文将探讨摄像机实时接入分析平台视频分析网关中机动车结构化识别算法的原理和应用…

HCIP-14 BGP基础

本文介绍了BGP基础知识,涵盖了:BGP产生的背景、AS的概念、BGP的特征等。 本文中我们详细地学习了BGP的对等体关系建立过程以及BGP状态机,学习时将对等体关系建立过程与状态机的转换相结合有助于理解记忆。不同于IGP路由协议,BGP不能自己发现、计算路由条目,其路由条目由IG…

【SpringCloud】LoadBalancer——服务调用与负载均衡

基本介绍 主要功能:LoadBlancer的主要作用就是提供客户端软件的负载均衡,然后由OpenFeign去调用具体的微服务。负载均衡的算法,分为轮询和随机。 使用 场景: 订单模块的负载均衡。通过消费者模块,访问订单支付模块(子模块8001/8002/8003) 例子前提:已经使用了注册服务中…

VMware Cloud Director 10.6 - 领先的云服务交付平台

VMware Cloud Director 10.6 - 领先的云服务交付平台VMware Cloud Director 10.6 - 领先的云服务交付平台 VMware Cloud Director | Leading Cloud Service Delivery Platform 请访问原文链接:https://sysin.org/blog/vmware-cloud-director-10/ 查看最新版。原创作品,转载请…

Winform窗体控件双向绑定数据模拟读写PLC数据

1.用Modbus工具模拟PLC2.创建一个实体类点击查看代码 internal class Data : INotifyPropertyChanged {ushort[] ushorts = new ushort[10];public ushort D0 { get => ushorts[0]; set { ushorts[0] = value; OnPropertyChanged(nameof(D0)); } }public ushort D1 { get =&…

解决:点击编辑时预警通知人(与科室下拉联动)会闪一下Id再显示汉字

表单:<el-form-item label="通知人所在科室:" prop="ksdm"><el-selectv-model="formData.ksdm"placeholder="请选择"style="width: 90%"clearablefilterable@change="handleKsChange"><el-option…