当前位置:首页 > JavaScript

markdown js实现

2026-02-01 00:30:33JavaScript

Markdown 在 JavaScript 中的实现方法

使用现有库解析 Markdown

推荐使用成熟的库如 marked.jsshowdown,它们能快速将 Markdown 转换为 HTML。

安装 marked

npm install marked

基本用法:

import { marked } from 'marked';

const markdownText = '# Heading\n\nThis is bold text.';
const htmlOutput = marked.parse(markdownText);
console.log(htmlOutput); // 输出解析后的 HTML

自定义简单解析器

若需轻量级实现,可通过正则表达式处理基础语法:

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

const result = parseMarkdown('[Google](https://google.com)');
console.log(result); // <a href="https://google.com">Google</a>

支持代码高亮

结合 highlight.js 实现代码块高亮:

import hljs from 'highlight.js';

marked.setOptions({
    highlight: (code, lang) => hljs.highlight(lang, code).value
});

const codeMarkdown = '```js\nconsole.log("Hello");\n```';
console.log(marked.parse(codeMarkdown));

安全防护

使用 DOMPurify 防止 XSS 攻击:

import DOMPurify from 'dompurify';

const dirtyHtml = marked.parse('<script>alert(1)</script>');
const cleanHtml = DOMPurify.sanitize(dirtyHtml);

实时预览

通过事件监听实现编辑器实时渲染:

markdown js实现

document.getElementById('editor').addEventListener('input', (e) => {
    document.getElementById('preview').innerHTML = marked.parse(e.target.value);
});

注意事项

  • 复杂表格或嵌套列表建议直接使用库处理。
  • 自定义解析器需注意正则性能,避免回溯问题。
  • 启用 breaks: true 选项可将换行符转换为 <br>

标签: markdownjs
分享给朋友:

相关文章

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js如何实现继承

js如何实现继承

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

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…

js实现滑动

js实现滑动

实现滑动效果的方法 在JavaScript中实现滑动效果可以通过多种方式完成,以下是几种常见的实现方法: 使用CSS过渡和JavaScript触发 通过CSS定义过渡效果,JavaScript控制触…

js实现定位

js实现定位

使用Geolocation API获取当前位置 在JavaScript中,可以通过浏览器内置的Geolocation API获取用户的地理位置信息。该API需要用户授权才能访问位置数据。 if (n…