如何在express.js玉模板中渲染markdown?

时间:2011-06-15 13:11:03

标签: parsing node.js render markdown express

我使用express js框架。我有一个来自数据库的markdownified字符串,并希望在我的jade模板中将其呈现为HTML。我安装了node-markdown并希望以这种方式呈现它:

app.js

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

template.jade

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

然而,它没有打印出任何建议......有什么建议吗?

谢谢!

编辑:我自己解决了,只是忘了把md变量放到我的视野中......

5 个答案:

答案 0 :(得分:14)

“过滤器”的概念将“编译器”或“过滤器”访问者暴露给部分玉器模板。

退房:https://github.com/visionmedia/jade

的过滤器

:sass必须安装sass.js

:少了必须安装less.js

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

:CDATA

:coffeescript必须安装咖啡脚本

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

答案 1 :(得分:10)

我自己找到了解决方案:

问题是,我忘了将 md 变量传递到我的视图中。所以你要做的就是让node-markdown模块运行如下:

app.js标题

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

app.js route (传递md变量)

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

<强> template.jade

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

答案 2 :(得分:6)

不推荐使用节点模块node-markdownmarked是高级新版本。你可以试试这个

var md = require('marked');

在路由器内

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

在您的玉石模板中

div!= md(note.string)

答案 3 :(得分:2)

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

extends layout

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

答案 4 :(得分:0)

您可以使用marked,然后您可以执行以下说明:

app.js

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

现在,您可以在模板玉上每次需要时调用该函数,例如:

template.jade

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