Nodejs+Express 开发网站,存进数据库用了 markdown 语法,只有显示到网页上时才会解析 markdown 语法,不过显示到浏览器上时,是直接输出,而不是显示 HTML 标签!请问一下各位大大这是哪里出了问题?

发布于 1周前 作者 sinazl 来自 nodejs/Nestjs

Nodejs+Express 开发网站,存进数据库用了 markdown 语法,只有显示到网页上时才会解析 markdown 语法,不过显示到浏览器上时,是直接输出,而不是显示 HTML 标签!请问一下各位大大这是哪里出了问题?

NodeJS+Express 开发网站,存进数据库是用了 markdown 的语法,只有显示到网页上时才会解析 markdown 语法,可是从数据库读取数据并用了 markdown 后,是直接输出,而不是显示 HTML 标签!请问一下各位大大这是哪里出了问题?

view.content = md.toHTML(view.content);
console.log(view.content);

上面是用了 markdown,网页中是如下显示的:

<p>这只是一个测试。</p>
<p>这是另一段测试的内容</p>

将我的大于号和小于号全都转成实体了! 请问一下,是不是我哪里配置出问题了呢?


6 回复

前端用的什么框架,前端的问题。我之前用 angularjs 的时候遇到过同样的问题,要加一个 rawhtml 属性,你这个问题应该类似


前端就是我只自己弄的几个小网页,没有用框架呢!那我加一下 rawhtml 属性试试,具体怎么加这个属性,给个例子好吗?

插值的时候需要用 [非转义插值] ,看看模板引擎的文档吧

多谢,还是要看文档,已解决!

建议再补习一下原生 dom 操作中 innerHTML 和 textContent 的区别以及使用场景

在你的Node.js + Express 开发网站中,如果Markdown内容直接输出到浏览器而不是解析为HTML,这通常是因为你在将Markdown内容发送到前端时没有将其转换为HTML。下面是一个基本的解决步骤和代码示例:

  1. 安装Markdown解析库:你可以使用marked这个库来解析Markdown。
npm install marked
  1. 在Express中解析Markdown:在你的路由处理函数中,使用marked将Markdown转换为HTML。
const express = require('express');
const marked = require('marked');
const app = express();

// 假设你有一个数据库查询函数获取Markdown内容
const getMarkdownFromDB = async () => {
    // 这里应该是你的数据库查询逻辑,返回Markdown字符串
    return "# Hello, Markdown!";
};

app.get('/', async (req, res) => {
    const markdown = await getMarkdownFromDB();
    const html = marked(markdown);
    res.send(html);
});

app.listen(3000, () => {
    console.log('Server is running on port 3000');
});
  1. 确保前端正确显示:确保你的前端页面或模板引擎(如EJS、Pug等)能够正确渲染服务器返回的HTML。

通过上述步骤,你应该能够在浏览器中看到Markdown内容被正确解析为HTML。如果仍然遇到问题,检查是否有其他中间件或配置影响了输出的内容。

回到顶部