Nodejs:可以设置hexo g不对某些代码段进行解析么?

Nodejs:可以设置hexo g不对某些代码段进行解析么?

自动加入了好多<em> <br>标签啥的,可以设定对特定代码,不做这种解析么?

2 回复

当然可以。Hexo 是一个基于 Node.js 的静态站点生成器,它使用 Markdown 渲染引擎来处理文章中的文本。默认情况下,Markdown 引擎会对文本中的特定字符进行转换,例如将 *text* 转换为 <em>text</em>,或者将连续的换行符转换为 <br> 标签。

如果你希望某些代码段不被解析成 HTML 标签,可以使用一些特殊的语法来标记这些代码段。以下是几种常见的方法:

方法一:使用 Markdown 的代码块语法

你可以使用三个反引号(```)来定义代码块,并指定语言类型,这样 Hexo 将不会对代码块内的内容进行额外的解析。例如:

这是一个普通的段落。

这段代码不会被解析。


这是另一个代码块,其中包含一些 Markdown 语法:

  • 不会被转换成 标签
  • 不会被转换成
    标签

方法二:使用 HTML 的 <pre><code> 标签

你也可以直接使用 HTML 标签来包裹代码,这同样可以避免 Markdown 对其内容的解析:

<pre><code>
这段代码也不会被解析。
</code></pre>

示例代码

假设你有一个 Hexo 文章,内容如下:

# 示例文章

这是一个普通的段落。

这段代码不会被解析。


这是另一个代码块,其中包含一些 Markdown 语法:

  • 不会被转换成 标签
  • 不会被转换成
    标签

当你运行 hexo g 命令时,上述代码会被正确地渲染为:

<h1>示例文章</h1>

<p>这是一个普通的段落。</p>

<pre><code>
这段代码不会被解析。
</code></pre>

<pre><code>
这是另一个代码块,其中包含一些 Markdown 语法:
* 不会被转换成 &lt;em&gt;标签
* 不会被转换成 &lt;br&gt;标签
</code></pre>

通过以上方法,你可以确保某些代码段不会被 Hexo 的 Markdown 渲染引擎解析成 HTML 标签。


Hexo 是一个静态站点生成器,它使用 Markdown 解析器来处理内容。如果你希望某些代码段不被 Hexo 的 Markdown 解析器解析,可以通过一些方法来实现。

一种简单的方法是使用 HTML 注释来包裹这些代码段。Markdown 解析器通常不会解析 HTML 注释内的内容。例如:

<!-- <p> 这是一个不会被解析的段落 </p> -->

另一种方法是在代码段前后添加特殊的标记,然后通过自定义的 Markdown 解析规则来忽略这些标记。你可以创建一个自定义的 Hexo 插件或修改现有的 Markdown 解析插件来实现这一点。

以下是一个简单的示例,展示如何使用自定义插件来实现这一功能:

  1. 创建一个自定义插件文件 no-parse-plugin.js:
const markdown = require('hexo-renderer-marked/lib/renderer').markdown;
const renderer = markdown.renderer;

renderer.rules.code_block = function (tokens, idx, options, env, self) {
    const token = tokens[idx];
    if (token.info === 'no-parse') {
        return `<pre><code>${token.content}</code></pre>`;
    }
    return self.renderToken(tokens, idx, options);
};

module.exports = function (hexo) {
    hexo.extend.renderer.register('md', 'html', markdown, true);
};
  1. 在你的 Hexo _config.yml 文件中配置插件路径:
plugin:
  - path/to/no-parse-plugin.js
  1. 使用自定义标记来包裹代码段:
```no-parse
这是一个不会被解析的代码段

通过上述方法,你可以确保特定的代码段不会被 Hexo 的 Markdown 解析器解析。这样,你可以避免出现 `<em>` 和 `<br>` 标签等不必要的转换。
回到顶部