React 展示Markdown内容 - 教程

news/2025/9/24 18:08:31/文章来源:https://www.cnblogs.com/lxjshuju/p/19109739

Vditor:一款功能强大的前端 Markdown 编辑器

前言

在开发知识库系统时,选择一款合适的 Markdown 编辑器至关重要。经过调研和对比,我最终选择了 Vditor,这是一款功能全面且适用于多种前端框架的 Markdown 编辑器。无论是 Vue、React 还是 jQuery,Vditor 都能轻松集成。本文将详细介绍 Vditor 的基本用法,并分享一些实际开发中的经验。


Vditor 的优点

Vditor 的官方描述是:“易于使用的 Markdown 编辑器,为适配不同的应用场景而生。” 其核心优势包括:

  1. 跨框架支持:适用于 Vue、React、jQuery 等主流前端框架。
  2. 功能全面:支持多种编辑模式、代码高亮、图片上传、主题切换等。
  3. 高度可定制:工具栏、主题、上传配置等均可自定义。
  4. 性能优异:支持实时保存、懒加载、多平台预览等功能。

基本用法

以下以 Vue 2.x 项目为例,介绍 Vditor 的安装和基本使用。

1. 安装依赖

通过 npm 安装 Vditor:

npm install vditor --save
2. 引入并初始化

在 Vue 组件中引入 Vditor 及其样式文件:

import Vditor from 'vditor';
import 'vditor/dist/index.css';
// 或者使用官方推荐的引入方式
3. 初始化编辑器

在组件中初始化 Vditor:

<template><div id="markdownDocument" /></template><script>export default {mounted() {const wikiContent = '';// 从后端接口获取的文章内容const editDocument = document.getElementById('markdownDocument');this.articleEditor = new Vditor(editDocument, {height: 600,mode: 'sv', // 分屏预览模式preview: {theme: { current: 'classic'}, // 设置内容主题hljs: { style: 'dracula'}, // 设置代码块主题},toolbarConfig: { pin: true}, // 工具栏配置upload: {url: 'article/uploadImage', // 图片上传地址accept: 'image/*',fieldName: 'file',token: 'test',multiple: false,filename(name) {return name.replace(/[^(a-zA-Z0-9\u4e00-\u9fa5\.)]/g, '').replace(/[\?\\/:|<>\*\[\]\(\)\$%\{\}@~]/g, '').replace('/\\s/g', '');},format(files, responseText) {const res = JSON.parse(responseText);const name = files[0].name;const url = res.data;return JSON.stringify({code: 0,data: { errFiles: '', succMap: {[name]: url}},});},},toolbar: ['emoji', 'headings', 'bold', 'italic', 'strike', '|', 'line', 'quote', 'list', 'ordered-list','check', 'outdent', 'indent', 'code', 'inline-code', 'insert-after', 'insert-before', 'undo','redo', { name: 'upload', tip: '上传图片'}, 'link', 'table', 'edit-mode', 'both', 'preview', 'fullscreen','outline', 'code-theme', 'export', 'devtools', 'br',],cache: { enable: false},after: () =>{this.articleEditor.setValue(wikiContent);// 设置初始内容},});},};</script>

仅展示 Markdown 内容

如果只需展示 Markdown 内容而不需要编辑功能,可以使用以下两种方式:

方式一:引入 method.min
import VditorPreview from 'vditor/dist/method.min';
<template><div id="viewDoc" /></template><script>export default {mounted() {const content = '# 标题 正文';// 后端返回的 Markdown 内容const viewDoc = document.getElementById('viewDoc');VditorPreview.preview(viewDoc, content, {theme: { current: 'light'}, // 设置主题hljs: { style: 'github'}, // 设置代码块样式});},};</script>
方式二:使用 md2html
import { md2html
} from 'vditor';
const htmlContent = md2html(mdText, options);

高级功能

Vditor 还支持以下高级功能:

  1. 多种编辑模式:所见即所得(wysiwyg)、即时渲染(ir)、分屏预览(sv)。
  2. 扩展功能:数学公式、脑图、流程图、甘特图、时序图等。
  3. 多主题支持:内置黑白绿三套主题,支持自定义。
  4. 多语言支持:内置中、英、韩文本地化。
  5. 实时保存:防止内容丢失。

注意事项

在使用 Vditor 时,需注意以下问题:

  1. CDN 依赖:Vditor 依赖一个外网 CDN(lute.min.js),建议自建 CDN 以避免服务中断。
  2. 自定义配置:根据项目需求灵活配置工具栏、上传功能等。

总结

Vditor 是一款功能强大且易于集成的 Markdown 编辑器,适用于多种前端框架和场景。无论是编辑还是展示 Markdown 内容,Vditor 都能提供良好的支持。如果你有类似需求,强烈推荐尝试 Vditor。

内容来源Vditor 使用指南


希望本文对你有所帮助!如果有任何问题或建议,欢迎留言讨论。

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

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

相关文章

江门网站推广哪家好长沙建网

使用Benchmark.NET对C# 代码进行基准测试的简介在我以前的文章中[10]&#xff0c;我介绍了该系列文章[11]&#xff0c;在其中我将分享我的经验&#xff0c;同时了解C&#xff03;和.NET Core&#xff08;corefx&#xff09;框架的新性能。在本文中&#xff0c;我想着重于对现有…

西电PCB设计指南第4章学习笔记

西电PCB设计指南第4章学习笔记 四、电源路径分析电源路径的基本原理回路路径与感抗 感抗与路径有关,信号线看似很短很直,但是引入了较大的环路感抗。多路信号线的环路之间的互感,造成相互干扰 所以,我们不能但按照…

图像处理去除噪点验证码的识别逻辑实践

验证码设计中常见的防护手段之一就是加入随机噪点,让字符边缘不清晰,从而干扰自动识别。本文介绍一种基于图像滤波与形态学操作的处理流程,帮助提取出清晰的字符区域。 一、问题分析 噪点验证码的典型特征是: 图像…

读取zip包中的文件

private List<String> readFile(String zipFilePath,String fileName){File file = new File(zipFilePath);List<String> list;System.out.println(file.getName());//20250709-5427327003468403533.ziptr…

网站开发合同知识产权手机在线制作图片加字

来源&#xff1a;图灵人工智能作者&#xff1a;王健宗等https://wwwihcm/people/euu-lin-jun-7原文链接&#xff1a;https://kns.cnki.net/kcms/detail/31.1289.tp.20201123.1641.002.html摘要&#xff1a;随着计算机行业和互联网时代的不断发展与进步&#xff0c;图神经网络已…

网站营销的优缺点网站视觉

2010/2/8号 星期一 1.决定记录下每天学到的东西和感悟 2.看老赵的博客&#xff0c;学到一句话&#xff1a;Apple告诉我们的铁律是&#xff1a;表面功夫一定要做足。 3.看到一个笑话&#xff1a;你属什么&#xff1f;我属 于你。 2010/2/9号 星期二 1.减少页面中独立的请求数&…

轻松建站网站建设图片如何加载

本文将综合运用 C++11 中的新的基础设施(主要是多线程、锁、条件变量)来阐述一个经典问题——生产者消费者模型,并给出完整的解决方案。 生产者消费者问题是多线程并发中一个非常经典的问题,相信学过操作系统课程的同学都清楚这个问题的根源。本文将就四种情况分析并介绍生产…

Java文件上传和其他参数一起提交的案例

Java文件上传和其他参数一起提交的案例package cn.daenx.demo.controller;import cn.daenx.demo.Aoidj; import cn.hutool.core.util.ObjectUtil; import org.springframework.web.bind.annotation.*; import org.spri…

Attention复杂度解析与改进方向

Attention复杂度解析与改进方向Attention复杂度解析与改进方向 摘要/引言 在大规模语言模型(LLM)浪潮中,扩展模型上下文窗口长度被认为是提升模型能力和应用范围的关键方向。然而,现代Transformer结构中的自注意力…

实用指南:Qt的数据库模块介绍,Qt访问SQLite详细示例

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

网站后台程序设计常用语言 技术的分析比较注册小规模公司流程及费用

1.AKConv原理介绍 地址:2311.11587 (arxiv.org) 摘要:基于卷积运算的神经网络在深度学习领域取得了令人瞩目的成果,但标准卷积运算存在两个固有的缺陷。一方面,卷积运算仅限于局部窗口,无法捕获其他位置的信息, 并且它的采样形状是固定的。 另一方面,卷积核的大小固定为…

泉州快速建站模板免费推广网站

作者 | 阚俊宝 阿里巴巴技术专家参与文末留言互动&#xff0c;即有机会获得赠书福利&#xff01;导读&#xff1a;云原生存储详解系列文章将从云原生存储服务的概念、特点、需求、原理、使用及案例等方面&#xff0c;和大家一起探讨云原生存储技术新的机遇与挑战。本文为该系列…

三维模型非结构化网格生成

三维非结构化网格生成方案,包含多种算法和MATLAB实现。 1. 基础类和数据结构 classdef Mesh3D < handleproperties% 网格基本数据nodes % 节点坐标 (N3)elements % 单元连接关系 (M4 四面体 或 M8 …

Windows 环境变量配置

在实际项目开发中,往往需要配置各种各样的环境变量。在使用部分windows电脑时,无法获取Admin权限,使用页面配置环境变量会受到限制。这时我们可以使用CMD命令行进行环境变量配置,具体配置步骤如下: 1.打开CMD窗口…

React自定义同步状态Hook - 详解

React自定义同步状态Hook - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&qu…

Playwright MCP浏览器自动化指南 - 详解

Playwright MCP浏览器自动化指南 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…

完整教程:【C++】STL简介+编码表+string引入

完整教程:【C++】STL简介+编码表+string引入pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &qu…

付费的网站推广该怎么做合肥网络公司 网站建设

摘要 spark的调度一直是我想搞清楚的东西&#xff0c;以及有向无环图的生成过程、task的调度、rdd的延迟执行是怎么发生的和如何完成的&#xff0c;还要就是RDD的compute都是在executor的哪个阶段调用和执行我们定义的函数的。这些都非常的基础和困难。花一段时间终于弄白了其中…

SpringBootMVC相关内容

SpringMVC 基于java实现MVC模型的轻量级Web框架 做Web程序开发 当我们的浏览器发出一个请求给到后端服务器以后,由servlet负责处理请求, servlet只是能够接收请求产生响应,不能进行真正的数据处理 于是将后端服务拆…

小柏实战学习Liunx(图文教程三十五)

小柏实战学习Liunx(图文教程三十五)本节课主题:上一节课,docker镜像加速服务器搭建完成后,本节课需要配置域名,并使用nginx端口转发; 前言:一定要知道每一个命令是啥意思,并且要学会看报错信息,学会使用AI。1. 更新系…