Parsing 如何在express.js jade模板中呈现降价?

Parsing 如何在express.js jade模板中呈现降价?,parsing,node.js,render,markdown,express,Parsing,Node.js,Render,Markdown,Express,我使用expressjs框架。我有一个来自数据库的标记字符串,希望在我的jade模板中将其呈现为HTML。我安装了节点标记,并希望以这种方式渲染它: app.js var md = require("node-markdown").Markdown; 模板。jade - each note in todo.notes div= md(note.string) ... div!= md(note.string) ... 但是,它不会打印任何内容。。。有什么建议吗 谢谢 编辑:自己解决了,

我使用expressjs框架。我有一个来自数据库的标记字符串,希望在我的jade模板中将其呈现为HTML。我安装了节点标记,并希望以这种方式渲染它:

app.js

var md = require("node-markdown").Markdown;
模板。jade

- each note in todo.notes
  div= md(note.string)
...
div!= md(note.string)
...
但是,它不会打印任何内容。。。有什么建议吗

谢谢


编辑:自己解决了,只是忘了将md变量放到我的视图中…

有一个“过滤器”的概念,它将“编译器”或“过滤器”访问者暴露给jade模板的一部分

退房:

过滤器

:sass必须安装sass.js

:less必须安装less.js

:降价必须已安装或取消节点折扣

:cdata

:coffeescript必须安装coffeescript

您可以通过以下语法在模板中使用它:
我自己找到了解决方案:

问题是,我忘记将md变量传递到我的视图中。因此,要使节点标记模块运行,您必须执行以下操作:

app.js标题

var md = require("node-markdown").Markdown;
app.js路径(传递md变量)

模板。jade

- each note in todo.notes
  div= md(note.string)
...
div!= md(note.string)
...

节点模块
节点标记
已弃用。这是一个高级的新版本。你可以这样试试

var md = require('marked');
在你的路由器里面

res.render('template', { md: md });
在你的玉模板里面

div!= md(note.string)
如果您正在使用Jade文件,您可以执行以下简单操作:

extends layout

block content
    include:md ../../public/docs/getting-started.md
您可以使用,然后可以执行以下说明:

app.js 现在,您可以随时在模板jade上调用该函数,例如:

翡翠
我建议你回答并接受你自己的问题。提到如何将md变量注入视图。你能发布你如何实现这一点的答案吗?对于2016年来到这里的人:Jade现在感谢你发布你所做的。我可以将我的标记呈现到页面上,但是所有输出都是html实体,这样您就可以在页面上看到实际的标记。你遇到过类似的情况吗?我弄明白了为什么它以转义html的形式输出-我没有
div!=md(str)
防止渲染器清理html。如果经常使用变量,将其写入app.locals可能是个好主意?这样,您也可以从视图中以md的形式访问它,而不必将它传递到每个视图。根据您的渲染需要,您不需要
div
,可以简单地使用它:
!=md(note.string)
虽然这个答案是正确的,但它并没有明确回答这个问题,因为
过滤器是编译时的。这使它们速度更快,但意味着它们无法支持动态内容。
这对我不适用。我得到了类似于
md不是过滤器的东西
- each note in todo.notes
    div!= md(note.string)