nic*_*ckf 25 markdown node.js express pug
我正在玩我的第一个Node.js Express应用程序,正如每个程序员都知道的那样,在测试新框架时你应该首先构建的是博客!无论如何,我想在Markdown中写文章然后在视图中呈现它.我看到Jade允许在视图内部使用过滤器完成此操作,但我无法使其正常工作.
为了简化这种情况,这里是我正在谈论的一个例子.
//app.js
res.render("article", {
md : "Hello World!\n\n*Woo*"
});
//article.jade
section
:markdown
#{md}
Run Code Online (Sandbox Code Playgroud)
但是,这产生了这样的结果:<section><h1>{md}</h1></section>......它并没有代替我传给它的变量.
然后我尝试了这个:
//article.jade
section
:markdown
!{md}
Run Code Online (Sandbox Code Playgroud)
输出是这样的:
<section><p>Hello World!
*Woo*</p></section>
Run Code Online (Sandbox Code Playgroud)
所以,现在它没有解析降价!
我已经能够通过解析app.js文件中的markdown 然后将HTML传递给视图来显示来实现这一点,但我不知道,这似乎有点混乱.
有没有办法将变量传递给Jade过滤器?
mar*_*man 19
您可以使用从节点传入jade的函数来执行此操作:
var md = require("node-markdown").Markdown;
Run Code Online (Sandbox Code Playgroud)
然后将其作为本地传递到视图中:
res.render('view', { md:md, markdownContent:data });
Run Code Online (Sandbox Code Playgroud)
然后通过调用函数在jade视图中呈现它:
!= md(markdownContent)
Run Code Online (Sandbox Code Playgroud)
Fiz*_*han 15
node-markdown不推荐使用节点模块.在显着的是先进的新版本.你可以这样试试
var md = require('marked');
Run Code Online (Sandbox Code Playgroud)
在您的路由器内
res.render('template', { md: md });
Run Code Online (Sandbox Code Playgroud)
在你的玉模板里面
div!= md(note.string)
Run Code Online (Sandbox Code Playgroud)
我不认为玉可以开箱即用.实现它的一种方法可能比预渲染markdown稍微清晰一点,就是创建一个调用帮助函数markdown,该函数采用markdown字符串并返回HTML.然后你可以做类似的事情
section
!= markdown(md)
Run Code Online (Sandbox Code Playgroud)
locals渲染jade模板时,markdown函数应包含在数据中,并且可以直接使用markdown库将markdown语法转换为HTML.
| 归档时间: |
|
| 查看次数: |
10146 次 |
| 最近记录: |