当前位置:首页 > JavaScript

markdown js实现

2026-02-01 00:30:33JavaScript

Markdown 在 JavaScript 中的实现方法

使用现有库解析 Markdown

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

安装 marked

npm install marked

基本用法:

markdown js实现

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 实现代码块高亮:

markdown 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);

实时预览

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

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

注意事项

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

标签: markdownjs
分享给朋友:

相关文章

js实现轮播图

js实现轮播图

轮播图实现方法 基础HTML结构 <div class="slider"> <div class="slides"> <img src="image1.jpg…

js实现vue路由

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue-r…

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url,…

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Pa…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…