如何在 express.js 玉模板中呈现 markdown?
Posted
技术标签:
【中文标题】如何在 express.js 玉模板中呈现 markdown?【英文标题】:How can I render markdown in express.js jade template? 【发布时间】:2011-09-15 12:50:54 【问题描述】:我使用 express js 框架。我有一个来自数据库的降价字符串,并希望在我的玉模板中将其呈现为 html。我安装了 node-markdown 并希望以这种方式呈现它:
app.js
var md = require("node-markdown").Markdown;
template.jade
- each note in todo.notes
div= md(note.string)
但是,它并没有打印出任何东西......对此有什么建议吗?
谢谢!
编辑:自己解决了,只是忘记将 md 变量放入我的视图中...
【问题讨论】:
我建议您回答并接受您自己的问题。并提到如何将 md 变量注入到视图中。 您能否就如何实现这一目标发表您的答案? 对于 2016 年来到这里的人:Jade 现在是 Pug 【参考方案1】:“过滤器”的概念将“编译器”或“过滤器”访问者暴露给翡翠模板的一部分。
查看:https://github.com/visionmedia/jade
过滤器
:sass 必须安装 sass.js
:less 必须安装 less.js
:markdown 必须安装markdown-js 或node-discount
:cdata
:coffeescript 必须安装 coffee-script
您可以在模板中通过以下语法使用它: http://jade-lang.com/reference/filters/
【讨论】:
虽然这个答案是正确的,但它并没有具体回答这个问题,因为Filters are compile time. This makes them fast but means they cannot support dynamic content.
【参考方案2】:
我自己找到了解决方案:
问题是,我忘记将 md 变量传递到我的视图中。因此,要让 node-markdown 模块运行,您必须执行以下操作:
app.js 标头
var md = require("node-markdown").Markdown;
app.js 路由(传递 md 变量)
...
res.render('template', vars: foo: foo_.bar , md: md, layout: false );
...
template.jade
...
div!= md(note.string)
...
【讨论】:
感谢您发布您所做的事情。我可以让我的降价渲染到页面上,但所有输出都作为 html 实体,所以你可以看到页面上的实际标记。你遇到过这样的事吗? 我知道为什么它输出为转义的 html - 我没有div!= md(str)
来阻止渲染器清理 html。
如果您经常使用变量,将其写入 app.locals 可能是个好主意?这样,您也可以从视图中以 md 的形式访问它,而不必将其传递给每个视图。
根据您的渲染需求,您不需要div
,可以像这样简单地使用它:!= md(note.string)
【参考方案3】:
节点模块node-markdown
已弃用。 marked 是高级新版本。你可以这样试试
var md = require('marked');
在您的路由器内部
res.render('template', md: md );
在你的玉模板里面
div!= md(note.string)
【讨论】:
【参考方案4】:如果您在 Jade 文件中使用 Marked,您可以执行以下简单操作:
extends layout
block content
include:md ../../public/docs/getting-started.md
【讨论】:
这对我不起作用。我得到类似md is not a filter
【参考方案5】:
您可以使用marked,然后您可以按照以下说明进行操作:
app.js
app.locals.md = require('marked').setOptions( breaks: true )
现在您可以在模板jade上每次调用该函数,例如:
template.jade
- each note in todo.notes
div!= md(note.string)
【讨论】:
以上是关于如何在 express.js 玉模板中呈现 markdown?的主要内容,如果未能解决你的问题,请参考以下文章
res.render 中的 Express-Node JS 车把模板:如何迭代?