当前位置:首页 > JavaScript

js 实现markdown

2026-02-02 09:35:39JavaScript

以下是在 JavaScript 中实现 Markdown 解析和渲染的几种常见方法:

使用现成的 Markdown 解析库

marked 是一个流行的 Markdown 解析库,使用简单且功能强大:

js 实现markdown

const marked = require('marked');
const html = marked.parse('# Hello Markdown!');
console.log(html);

使用 highlight.js 添加代码高亮

结合 marked 和 highlight.js 可以实现代码块的高亮显示:

const marked = require('marked');
const hljs = require('highlight.js');

marked.setOptions({
  highlight: function(code, lang) {
    return hljs.highlight(lang, code).value;
  }
});

自定义 Markdown 解析器

如果需要自定义解析逻辑,可以使用正则表达式实现基础功能:

js 实现markdown

function parseMarkdown(markdown) {
  // 标题
  markdown = markdown.replace(/^# (.*$)/gm, '<h1>$1</h1>');
  // 加粗
  markdown = markdown.replace(/\*\*(.*?)\*\*/g, '<strong>$1</strong>');
  // 链接
  markdown = markdown.replace(/\[(.*?)\]\((.*?)\)/g, '<a href="$2">$1</a>');
  return markdown;
}

在浏览器中实时渲染

使用 textarea 和 div 实现实时 Markdown 预览:

<textarea id="markdown-input"></textarea>
<div id="markdown-preview"></div>

<script>
document.getElementById('markdown-input').addEventListener('input', function(e) {
  document.getElementById('markdown-preview').innerHTML = 
    marked.parse(e.target.value);
});
</script>

支持 GitHub Flavored Markdown

使用 remark 和 rehype 处理更复杂的 Markdown 语法:

import { unified } from 'unified';
import remarkParse from 'remark-parse';
import remarkRehype from 'remark-rehype';
import rehypeStringify from 'rehype-stringify';

const file = await unified()
  .use(remarkParse)
  .use(remarkRehype)
  .use(rehypeStringify)
  .process('# Hello\n\n- List item');

console.log(String(file));

这些方法涵盖了从简单到复杂的各种 Markdown 处理需求,可以根据项目要求选择合适的实现方式。

标签: jsmarkdown
分享给朋友:

相关文章

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval 实…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:…

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数: fun…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…

js实现删除

js实现删除

使用 splice 方法删除数组元素 splice 方法可以删除数组中的元素,并返回被删除的元素。它接受两个参数:起始索引和要删除的元素数量。 const array = [1, 2, 3, 4…