将原始Markdown文本传递给Jade

我在玩第一个Node.js Express应用程序,每个程序员都知道,在testing一个新的框架时,你应该build立的第一件事是一个博客! 无论如何,我想用Markdown写文章,然后在视图中渲染它。 我看到Jade允许在视图本身内部使用filter来完成这个工作,但是我无法完成这个工作。

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

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

但是,它会输出: <section><h1>{md}</h1></section> …它并不代替我传递给它的variables。

然后我试了这个:

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

而输出是这样的:

 <section><p>Hello World! *Woo*</p></section> 

所以,现在它不parsing降价!

我已经能够通过parsingapp.js文件中的降价,然后将HTML传递给视图来显示,但我不知道,这似乎有点混乱。

有没有办法将variables传递给Jadefilter?

       

网上收集的解决方案 "将原始Markdown文本传递给Jade"

你可以使用从节点传递给jade的函数来做到这一点:

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

然后通过它作为本地的视图:

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

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

 != md(markdownContent) 

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

 var md = require('marked'); 

在你的路由器里面

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

在你的玉模板里面

 div!= md(note.string) 

我不认为玉石可以做到这一点。 实现它的一种方法可能比预先渲染标记稍微干净一点,就是创build一个名为markdown的帮助函数,它使用一个markdownstring并返回HTML。 那么你可以做类似的事情

 section != markdown(md) 

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

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

 section :&markdown #{md} 

您也可以用以下方式导入外部文件:

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