将原始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?
你可以使用从节点传递给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")}