当前位置:首页 > JavaScript

js 实现markdown

2026-02-02 09:35:39JavaScript

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

使用现成的 Markdown 解析库

marked 是一个流行的 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 解析器

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

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 处理需求,可以根据项目要求选择合适的实现方式。

js 实现markdown

标签: jsmarkdown
分享给朋友:

相关文章

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Ja…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…