Nodejs中Markdown如何设置可以解析htm标签?

Nodejs中Markdown如何设置可以解析htm标签?

<h1>要素</h1><h1> </h1><h1>Feature</h1><h2>描述</h2><p>要素包含地理和属性,这个特定的OpenLayers.Feature类包含一个标记和一个经纬度</p><h2>属性</h2><table border="1"cellpadding="0"cellspacing=“0”><tbody><tr><th><p align=“center”>属性项</p></th><th><p align=“center”>类型</p>

 	marked.setOptions({
  	 	 renderer: renderer,
   	 	gfm: true,
      	  tables: true,
    	breaks: true,
   		 pedantic: false,
   		 sanitize: false,//是把这个设置成false吧
   	 	smartLists: true,
  	  smartypants: false,
	});

5 回复

Node.js 中 Markdown 如何设置可以解析 HTML 标签?

在使用 Node.js 处理 Markdown 文件时,有时需要解析 HTML 标签。默认情况下,大多数 Markdown 解析器(如 marked)会将 HTML 标签视为普通文本。为了使 Markdown 解析器能够正确解析 HTML 标签,我们需要对其进行一些配置。

示例代码

首先,确保你已经安装了 marked 库。如果没有安装,可以通过 npm 安装:

npm install marked

然后,你可以使用以下代码来配置 marked,使其能够解析 HTML 标签:

const marked = require('marked');

// 创建一个新的 Renderer 实例
const renderer = new marked.Renderer();

marked.setOptions({
  renderer: renderer,
  gfm: true,
  tables: true,
  breaks: false,
  pedantic: false,
  sanitize: false, // 关键设置,允许解析 HTML
  smartLists: true,
  smartypants: false,
});

const markdownText = `
# 元素

## Feature
元素包含地理和属性,这个特定的 OpenLayers.Feature 类包含一个标记和一个经纬度

## 属性
| 属性项 | 类型 |
| --- | --- |
`;

const htmlOutput = marked(markdownText);
console.log(htmlOutput);

解释

  1. 导入库:首先,我们导入 marked 库。
  2. 创建 Renderer:我们创建了一个新的 Renderer 实例,虽然在这个例子中没有特别使用它,但这是可选的,可以根据需要自定义渲染行为。
  3. 设置选项:通过 marked.setOptions() 方法,我们可以设置各种选项:
    • sanitize: false:这个选项非常重要,它允许解析 HTML 标签。如果将其设置为 true,则所有 HTML 标签都会被转义,不会被解析。
  4. Markdown 文本:定义了一个简单的 Markdown 文本示例。
  5. 转换 Markdown 为 HTML:使用 marked() 函数将 Markdown 文本转换为 HTML 字符串。
  6. 输出结果:最后,我们将生成的 HTML 输出到控制台。

通过上述步骤,你可以让 Node.js 使用 marked 解析器正确地解析 Markdown 文本中的 HTML 标签。


大概是吧…

按照文档 sanitize 是是否忽略 HTML 内容: https://github.com/chjj/marked/#sanitize 你说的解析是什么意思… 帖子没说清楚啊

markdown-js简单一些

为了在 Node.js 中使用 Markdown 解析 HTML 标签,你可以使用 marked 库,并将 sanitize 选项设置为 false。这样,Markdown 渲染器就不会对 HTML 进行转义,从而允许 HTML 标签被解析为实际的 HTML。

以下是一个示例代码:

const marked = require('marked');

// 创建一个自定义渲染器来处理HTML标签
const renderer = new marked.Renderer();
renderer.table = (header, body) => {
  return `<table><thead>${header}</thead><tbody>${body}</tbody></table>`;
};

marked.setOptions({
  renderer: renderer,
  gfm: true,
  tables: true,
  breaks: true,
  pedantic: false,
  sanitize: false, // 设置为false以允许HTML标签
  smartLists: true,
  smartypants: false,
});

const markdownText = `
# 元素
## 描述
元素包含地理和属性,这个特定的OpenLayers.Feature类包含一个标记和一个经纬度
## 属性
| 属性项 | 类型 |
`;

console.log(marked(markdownText));

在这个例子中,我们首先引入了 marked 库,并创建了一个自定义的渲染器来处理表格标签(如果你需要处理其他标签也可以自定义)。然后设置了 sanitize 选项为 false 来允许 HTML 标签的解析。最后通过 marked 函数将 Markdown 文本转换为 HTML。

请注意,虽然这种方法允许解析 HTML 标签,但也会带来潜在的安全风险(例如 XSS 攻击),因此在生产环境中使用时需要谨慎。

回到顶部