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

前端直接渲染Markdown

前端直接渲染Markdown,主要技术方案:

1. 使用JavaScript库(最常用)

marked

// 安装:npm install marked
import { marked } from 'marked';
document.getElementById('content').innerHTML = marked.parse(markdownText);

showdown

// 安装:npm install showdown
const converter = new showdown.Converter();
document.getElementById('content').innerHTML = converter.makeHtml(markdownText);

remark + rehype

// 更现代的方案
import { unified } from 'unified';
import remarkParse from 'remark-parse';
import remarkRehype from 'remark-rehype';
import rehypeStringify from 'rehype-stringify';const html = await unified().use(remarkParse).use(remarkRehype).use(rehypeStringify).process(markdownText);

2. 浏览器原生方案

使用textarea + 解析

<textarea id="markdown-source" style="display:none">
# 标题
这是**粗体**文本
</textarea>
<div id="rendered-content"></div><script>
// 需要配合marked或其他库使用
</script>

3. 框架集成方案

React + react-markdown

import ReactMarkdown from 'react-markdown';function MarkdownRenderer({ content }) {return <ReactMarkdown>{content}</ReactMarkdown>;
}

Vue + markdown-it

<template><div v-html="compiledMarkdown"></div>
</template><script>
import markdownIt from 'markdown-it';export default {data() {return {markdown: '# Hello World'};},computed: {compiledMarkdown() {return markdownIt().render(this.markdown);}}
};
</script>

4. 完整示例

<!DOCTYPE html>
<html>
<head><script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
</head>
<body><textarea id="input" rows="10" cols="50">
# 标题
## 子标题
- 列表项1
- 列表项2
**粗体** *斜体*</textarea><div id="output"></div><script>const input = document.getElementById('input');const output = document.getElementById('output');function updateOutput() {output.innerHTML = marked.parse(input.value);}input.addEventListener('input', updateOutput);updateOutput(); // 初始渲染</script>
</body>
</html>

5. 安全考虑

使用DOMPurify防止XSS攻击:

import DOMPurify from 'dompurify';
import { marked } from 'marked';const cleanHtml = DOMPurify.sanitize(marked.parse(markdownText));
document.getElementById('content').innerHTML = cleanHtml;

推荐使用markedremark,它们性能好、功能完整,且有良好的社区支持。

http://www.dtcms.com/a/565784.html

相关文章:

  • Vue 3.5 新特性——useTemplateRef:简化模板引用的革命!
  • 网站开发技术三大件网页设计与制作教程期末考试试题
  • 赣州制作网站企业个人简历自我评价
  • 寄存器与存储器的区别(TLB和Cache,指令流水线分析)
  • 思维链(CoT)× 智能体(Agent)× 提示词(Prompt)讲解
  • MAC-SQL 图1
  • 第一章 WPF概述
  • 建设网站主机免费版展厅设计与施工公司
  • 如何注册网站免费的吗wordpress注释符号
  • 博客网站快速排名常用的设计软件有哪些
  • 做直播导航网站有哪些网站后端开发语言
  • C# 常用集合的使用
  • 合肥市建设网官方网站公司微网站怎么做的
  • 网站服务器的费用如何在网站后台删除栏目
  • 3.4 Lua代码中的文件操作
  • 高盛西湖智谷引进高科技企业 聚集产业高质量发展
  • 行业网站建设公司自己怎么做一个企业官网
  • Hercules
  • Python从入门到精通:(2)Python 核心进阶教程从数据结构到面向对象
  • 普洱专业企业网站建设制作书签图片大全简单漂亮
  • 违法网站开发者网页在线短网址生成器
  • HWiNFO下载和安装图文教程(附安装包,非常详细)
  • 【Unity基础详解】(6)Unity核心:物理系统
  • LLM基础·Huggingface使用教程
  • 新手学做网站百度云做塑胶网站需要什么
  • Oracle故障处理|【实战笔记】一次“删不掉的表”:全局临时表 ORA-14452 故障复盘
  • npm install core-js不成功
  • 【论文精读】SimDA:用于高效视频生成的简单扩散适配器
  • 许昌哪个网站做苗木百度网站介绍显示图片
  • CLIP:打破模态壁垒,重塑AI理解世界的方式