html,,,,,Marked.js Example,,,,,, const markdownText =
# Hello, Marked.js!, This is a simple example of using Marked.js to render Markdown content.
;, document.getElementById('markdown-content').innerHTML = marked(markdownText);,,,,
“
Marked.js CDN 使用指南
一、Marked.js 简介
Marked.js 是一个广受欢迎的 JavaScript 库,专门用于将 Markdown 文本转换为 HTML,它能够在浏览器端和 Node.js 环境下高效运行,支持 Markdown 的所有基本语法,如标题、段落、列表、链接、图片等,还支持一些扩展语法,如表格、代码块、代码高亮、删除线、粗体、斜体等。
二、通过 CDN 引入 Marked.js
1、BootCDN:提供了多个版本的 Marked.js,https://cdn.bootcss.com/marked/0.8.1/marked.min.js ,这是较为常用的版本之一。
2、JSDelivr:https://cdn.jsdelivr.net/npm/marked/ ,该服务速度较快且稳定,能确保库文件的快速加载。
以 BootCDN 为例,在 HTML 页面的<head>
或<body>
标签内添加以下<script>
标签即可引入:
<script src="https://cdn.bootcss.com/marked/0.8.1/marked.min.js"></script>
这样,在页面的其他脚本中就可以使用 Marked.js 提供的功能了。
三、Marked.js 基础用法示例
(一)简单的 Markdown 转 HTML
1、HTML 部分:创建一个文本区域用于输入 Markdown 文本,以及一个用于显示转换后的 HTML 内容的元素。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Marked.js Example</title> <script src="https://cdn.bootcss.com/marked/0.8.1/marked.min.js"></script> </head> <body> <textarea id="markdownInput" rows="10" cols="50"># Markdown Title This is a paragraph in Markdown. List item 1 List item 2 </textarea> <div id="htmlOutput"></div> <script> // JavaScript 部分 const markdownText = document.getElementById('markdownInput').value; const htmlContent = marked(markdownText); document.getElementById('htmlOutput').innerHTML = htmlContent; </script> </body> </html>
2、效果展示:当在文本区域输入 Markdown 文本后,页面会自动将其转换为 HTML 并显示在下方的<div>
元素中,输入上述 Markdown 文本后,会显示出对应的带有标题、段落和列表样式的 HTML 内容。
Marked.js 提供了丰富的配置选项,可以通过设置这些选项来定制 Markdown 的解析和输出行为,以下是一些常用的配置选项及其说明:
选项 | 描述 | 示例值 |
gfm | 是否启用 GitHub 风格的 Markdown 语法,如任务列表、表格等。 | true |
tables | 是否支持表格语法。 | true |
breaks | 是否将换行符转换为 |
false |
pedantic | 是否严格解析 Markdown 语法,对不符合规范的语法进行更严格的处理。 | false |
sanitize | 是否对生成的 HTML 进行安全过滤,以防止 XSS 攻击。 | true |
smartLists | 是否将标点符号周围的列表项转换为智能列表(如使用无序列表的圆点或有序列表的数字)。 | true |
示例代码:
const renderer = new marked.Renderer(); const options = { gfm: true, tables: true, breaks: false, pedantic: false, sanitize: true, smartLists: true }; const htmlContent = marked(markdownText, options, renderer); document.getElementById('htmlOutput').innerHTML = htmlContent;
四、Marked.js 的高级用法
通过创建自定义渲染器,可以对 Markdown 中的各种元素进行更精细的控制和自定义渲染,可以自定义代码块的渲染方式,使其具有特定的样式或功能。
const renderer = new marked.Renderer();
renderer.code = function(code, infostring, escaped) {
return<pre><code class="language-${infostring}">${escaped}</code></pre>
;
};
const htmlContent = marked(markdownText, {}, renderer);
document.getElementById('htmlOutput').innerHTML = htmlContent;
上述代码中,自定义了代码块的渲染方式,为其添加了一个表示编程语言的 CSS 类,以便后续可以通过 CSS 进行样式定制。
如果后端提供了 Markdown 格式的数据,可以在前端使用 Marked.js 将其转换为 HTML 并进行展示,通过 AJAX 请求获取后端的 Markdown 数据,然后使用 Marked.js 进行转换:
fetch('/getMarkdownData') .then(response => response.json()) .then(data => { const htmlContent = marked(data.content); document.getElementById('htmlOutput').innerHTML = htmlContent; }) .catch(error => console.error('Error fetching Markdown data:', error));
上述代码中,假设后端提供了一个名为/getMarkdownData
的接口返回 Markdown 数据,前端通过fetch
请求获取数据后,使用 Marked.js 将其转换为 HTML 并显示在页面上。
五、相关问题与解答
(一)如何更新引入的 Marked.js 版本?
如果需要使用最新版本的 Marked.js,可以访问其官方发布页面或其他可靠的 CDN 服务提供商,查找最新的版本号,并按照上述引入方式更新<script>
标签中的 URL,如果最新版本是 4.0.10,则可以将 BootCDN 的地址改为:https://cdn.bootcss.com/marked/4.0.10/marked.min.js。
(二)Marked.js 生成的 HTML 存在安全问题吗?
Marked.js 默认不会对生成的 HTML 进行安全处理,这可能导致 XSS(跨站脚本攻击)等安全问题,在使用 Marked.js 生成 HTML 之前,建议安装并使用 DOMPurify 库来净化生成的 HTML,可以通过 npm 安装 DOMPurify:npm install dompurify
,然后在代码中使用DOMPurify.sanitize
方法对生成的 HTML 进行安全过滤。