25

我正在玩我的第一个 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

4 回答 4

20

您可以使用从节点传递给翡翠的函数来执行此操作:

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

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

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

然后通过调用函数在翡翠视图中渲染它:

!= md(markdownContent)
于 2012-09-14T16:15:09.230 回答
15

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

var md = require('marked');

在你的路由器里面

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

在你的玉模板里面

div!= md(note.string)
于 2014-01-10T16:55:16.933 回答
7

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

section
    != markdown(md)

渲染翡翠模板时数据中应该包含markdown函数locals,可以直接使用markdown库将markdown语法转换为HTML。

于 2011-10-02T05:19:08.050 回答
1

如果您使用Scalate 的 Jade 支持,您可以输入:

section
    :&markdown
        #{md}

您还可以使用以下命令导入外部文件:

section
    :&markdown
        #{include("MyFile.md")}
于 2011-12-02T14:13:19.257 回答