【问题标题】:Passing raw Markdown text to Jade将原始 Markdown 文本传递给 Jade
【发布时间】:2011-11-24 20:45:06
【问题描述】:

我正在玩我的第一个 Node.js Express 应用程序,正如每个程序员都知道的那样,在测试新框架时首先应该构建一个博客!无论如何,我想用 Markdown 写文章,然后在视图中渲染。我看到 Jade 允许使用过滤器在视图本身内部完成此操作,但我无法使其正常工作。

为了简化情况,这里是我所说的一个例子。

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

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

但是,这会输出:<section><h1>{md}</h1></section>... 它没有替换我传递给它的变量。

然后我尝试了这个:

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

输出是这样的:

<section><p>Hello World!

*Woo*</p></section>

所以,现在它不解析降价!

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

有没有办法将变量传递给 Jade 过滤器?

【问题讨论】:

  • 你有没有找到一个好的解决方案?
  • 只是为了补充为什么这不能开箱即用,过滤器在编译时运行,这意味着它们不支持动态内容。正如此页面上的警告所说:jade-lang.com/reference/filters

标签: node.js markdown express pug


【解决方案1】:

您可以使用从节点传递给翡翠的函数来做到这一点:

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

然后将其作为本地传递到视图中:

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

然后调用函数在翡翠视图中渲染:

!= md(markdownContent)

【讨论】:

    【解决方案2】:

    节点模块node-markdown 已弃用。 marked 是高级新版本。你可以这样试试

    var md = require('marked');
    

    在您的路由器内部

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

    在你的玉模板里面

    div!= md(note.string)
    

    【讨论】:

      【解决方案3】:

      我不认为玉可以开箱即用。实现它的一种方法可能比预渲染 markdown 稍微干净一些,它是创建一个名为 markdown 的辅助函数,它接受一个 markdown 字符串并返回 HTML。然后你可以做类似的事情

      section
          != markdown(md)
      

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

      【讨论】:

      • 解决此问题的好方法...有没有人尝试过影响基准测试?
      • 所以,他们决定实现一个专用的:markdown 过滤器,但没有选择提供将外部 Markdown 文件加载到此过滤器的机制? ಠ_ಠ
      【解决方案4】:

      如果您使用的是Scalate's Jade support,您可以输入:

      section
          :&markdown
              #{md}
      

      您还可以通过以下方式导入外部文件:

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

      【讨论】:

      • 我认为这个答案不正确。我确实赞成,因为你让我很兴奋。但是随着进一步的研究,我找不到任何 Node js Scala 实现。现在语法很棒,我喜欢这个主意,但我认为时机未到,但......
      • 这可能不是您正在寻找的答案,因为它在 JVM 上的 Scala 下而不是 node.js 下运行,但如果您使用的是 Scalate 的 Jade 支持和链接我的答案的顶部将您带到有关此的文档。
      猜你喜欢
      • 1970-01-01
      • 2017-06-02
      • 2014-08-24
      • 2014-04-15
      • 1970-01-01
      • 2017-09-20
      • 2011-02-27
      • 1970-01-01
      • 2012-09-01
      相关资源
      最近更新 更多