我怎样才能在express.js玉器模板中进行降价?

我使用快速js框架。 我有一个从数据库markdownifiedstring,并希望在我的玉模板呈现为HTML。 我安装了node-markdown,想要这样渲染它:

app.js

var md = require("node-markdown").Markdown; 

template.jade

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

但是,它不会打印出任何东西…有什么build议吗?

谢谢!

编辑:解决它自己,只是忘了把我的看法的MDvariables…

有一个“filter”的概念,将“编译器”或“filter”访问者暴露给一部分玉石模板。

查看: https : //github.com/visionmedia/jade

filter

:sass必须安装sass.js

:less必须安装less.js

:markdown必须安装markdown-js或节点折扣

:CDATA

:coffeescript必须安装咖啡脚本

您可以通过以下语法在模板中使用它: http : //jade-lang.com/reference/filters/

我自己find了解决办法:

问题是,我忘了将mdvariables传递给我的视图。 所以你需要做的事情是让node-markdown模块运行如下:

app.js头

 var md = require("node-markdown").Markdown; 

app.js路由 (传递mdvariables)

 ... res.render('template', { vars: { foo: foo_.bar }, md: md, layout: false }); ... 

template.jade

 ... div!= md(note.string) ... 

节点模块node-markdown已弃用。 标记为高级新版本。 你可以试试这个

 var md = require('marked'); 

在你的路由器里面

 res.render('template', { md: md }); 

在你的玉模板里面

 div!= md(note.string) 

如果你使用Marked ,在你的Jade文件中,你可以做一些简单的事情:

 extends layout block content include:md ../../public/docs/getting-started.md 

你可以使用标记 ,然后你可以做以下的指示:

app.js

 app.locals.md = require('marked').setOptions({ breaks: true }) 

现在你可以每次在模板中调用这个函数,例如你的情况:

template.jade

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