我怎样才能在express.js玉器模板中进行降价?
我使用快速js框架。 我有一个从数据库markdownifiedstring,并希望在我的玉模板呈现为HTML。 我安装了node-markdown,想要这样渲染它:
app.js
var md = require("node-markdown").Markdown;
template.jade
- each note in todo.notes div= md(note.string)
但是,它不会打印出任何东西…有什么build议吗?
谢谢!
编辑:解决它自己,只是忘了把我的看法的MDvariables…
有一个“filter”的概念,将“编译器”或“filter”访问者暴露给一部分玉石模板。
查看: https : //github.com/visionmedia/jade
filter
:sass必须安装sass.js
:less必须安装less.js
:markdown必须安装markdown-js或节点折扣
:CDATA
:coffeescript必须安装咖啡脚本
您可以通过以下语法在模板中使用它: http : //jade-lang.com/reference/filters/
我自己find了解决办法:
问题是,我忘了将mdvariables传递给我的视图。 所以你需要做的事情是让node-markdown模块运行如下:
app.js头
var md = require("node-markdown").Markdown;
app.js路由 (传递mdvariables)
... res.render('template', { vars: { foo: foo_.bar }, md: md, layout: false }); ...
template.jade
... div!= md(note.string) ...
节点模块node-markdown
已弃用。 标记为高级新版本。 你可以试试这个
var md = require('marked');
在你的路由器里面
res.render('template', { md: md });
在你的玉模板里面
div!= md(note.string)
如果你使用Marked ,在你的Jade文件中,你可以做一些简单的事情:
extends layout block content include:md ../../public/docs/getting-started.md
你可以使用标记 ,然后你可以做以下的指示:
app.js
app.locals.md = require('marked').setOptions({ breaks: true })
现在你可以每次在模板中调用这个函数,例如你的情况:
template.jade
- each note in todo.notes div!= md(note.string)