将原始Markdown文本传递给Jade

时间:2011-09-26 00:38:25

标签: node.js markdown express pug

我正在玩我的第一个Node.js Express应用程序,并且正如每个程序员都知道的那样,在测试新框架时应该首先构建的是博客!无论如何,我想在Markdown中写文章然后在视图中呈现它。我看到Jade允许在视图本身内部使用过滤器完成此操作,但我无法使其正常工作。

为了简化这种情况,这是我正在谈论的一个例子。

//app.js
res.render("article", {
    md : "Hello World!\n\n*Woo*"
});

//article.jade
section
    :markdown
        #{md}

但是,输出这个:<section><h1>{md}</h1></section> ...它不会替换我传给它的变量。

然后我尝试了这个:

//article.jade
section
    :markdown
        !{md}

输出是这样的:

<section><p>Hello World!

*Woo*</p></section>

所以,现在它没有解析降价!

我已经能够通过解析app.js文件中的markdown然后将HTML传递给视图来显示来实现这一点,但我不知道,这看起来有点麻烦。

有没有办法将变量传递给Jade过滤器?

4 个答案:

答案 0 :(得分:19)

您可以使用从节点传入jade的函数来执行此操作:

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

然后将其作为本地传递到视图中:

res.render('view', { md:md, markdownContent:data });

然后通过调用函数:

在玉视图中渲染它
!= md(markdownContent)

答案 1 :(得分:15)

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

var md = require('marked');

在路由器内

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

在您的玉石模板中

div!= md(note.string)

答案 2 :(得分:7)

我不认为玉可以开箱即用。实现它的一种方法可能比预渲染markdown稍微清晰一点,就是创建一个名为markdown的辅助函数,它接受一个markdown字符串并返回HTML。然后你可以做类似

的事情
section
    != markdown(md)

当您渲染玉石模板时,降价功能应包含在locals数据中,并且可以直接使用降价库将降价语法转换为HTML。

答案 3 :(得分:1)

如果您使用的是Scalate's Jade support,则可以输入:

section
    :&markdown
        #{md}

您还可以使用以下内容导入外部文件:

section
    :&markdown
        #{include("MyFile.md")}