【问题标题】:Express-Handlebars render file within divExpress-Handlebars 在 div 中渲染文件
【发布时间】:2019-02-14 14:31:48
【问题描述】:

我从我的 NodeJs 服务器获得了一个文件路径。例如

  • 文件/文本/aMarkdownFile.md

  • 文件/图像/bigImage.jpg

  • 文件/文本/aTextFile.txt

我想在我的 Handlebars div 中呈现这个文件内容

<div id="renderedFileContainer">
    {{requestedFile}}
</div>

我该怎么做? 例如 Github 能够在存储库视图中显示降价文件和图像。你可以看看这里https://github.com/thenativeweb/wolkenkit(只是一个例子)。如果除了为每种文件类型创建代码之外别无他法,我想专注于 ma​​rkdown 文件。

服务器获取文件路径并将其发送到车把模板。如何让模板在 div 容器中渲染文件?

【问题讨论】:

    标签: node.js express handlebars.js markdown express-handlebars


    【解决方案1】:

    您需要使用 nodejs 将文件内容读入字符串,然后将其传递给您的车把模板。

    有两种方法,第一种(也是最简单的)是使用fs.readFilefs.readFileSync 读取文件的内容,然后将其作为requestedFile 的值传递。

    第二种方法是创建一个handlebars helper,这个助手可以使用一个文件路径,然后在内部使用fs.readFile/fs.readFileSync,如上。这里的区别在于您的视图层将读取并返回文件。如果您想在整个应用程序中使用它,这很有用,如果它只是在一个地方,那么制作一个助手可能是矫枉过正。 Here is the documentation for creating a handlebars helper.

    在任何一种方法中,您都需要将字符串传递给模板,这只是您是否从偏移量执行此操作,或者是否让车把为您解析它。

    【讨论】:

    • 抱歉,当我得到一个包含此内容的降价文件 ###### H6 并将其传递给 Handlebars 模板时,它将在文档中打印 ###### H6。不是标题。
    • 您没有指定任何关于希望在问题中将降价呈现为 HTML 的内容。如果您想这样做,您还需要通过 md -> html 转换器运行提取的降价。有很多用于此的模块,包括前端和后端。如果您想在服务器端执行此操作,我建议您使用 Showdown 之类的方法。您可以推入提取的 md,然后您将获得一个可以推入的 HTML 结果。但是您随后需要使用 Handlebars.SafeString。如果您不首先清理输入,则在您向用户打开大量攻击时要非常小心。
    猜你喜欢
    • 2017-09-02
    • 2020-11-29
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    • 2013-01-27
    • 2014-07-05
    • 1970-01-01
    • 2011-11-02
    相关资源
    最近更新 更多