我使用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变量放到我的视野中......
答案 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-markdown
。 marked是高级新版本。你可以试试这个
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.locals.md = require('marked').setOptions({ breaks: true })
现在,您可以在模板玉上每次需要时调用该函数,例如:
- each note in todo.notes
div!= md(note.string)