我应该在 Vapor 项目的哪里添加我自己的 Markdown 文件?

Posted

技术标签:

【中文标题】我应该在 Vapor 项目的哪里添加我自己的 Markdown 文件?【英文标题】:Where should I add my own Markdown file in Vapor project? 【发布时间】:2016-10-25 12:40:28 【问题描述】:

我想添加我自己的 Markdown 文件,一个名为 profile.md 的文件。但是,我不知道应该在我的 Vapor 项目中添加文件的位置,该项目是用 Xcode 开发的。

我尝试将它添加到Sources/ 或只是根目录,但它无法通过Bundle.main.url(forResource:) 函数搜索,例如:

guard let url = Bundle.main.url(forResource: "profile", withExtension: ".md") else  ... 

另外,我发现我已经在 Copy Bundle Resources 标签下添加了它。

在普通应用程序中(适用于 ios 和 macOS),上述功能可以正常工作。

如何添加我自己的文件以在 Xcode 开发的 Vapor 项目中使用?

【问题讨论】:

Vapor 使用与 app bundle 不同的结构。你想用这个 Markdown 文件做什么,按原样提供,解析它,将它解释为模板文件? @tobygriffin 我只是想读取文件,解析并将其嵌入到另一个模板文件中以返回给用户。 @Blaszard 你明白了吗?其他评论者是正确的,只需加载文件并返回。我想提一下,我不相信Bundle api 在 Linux 上可用。您必须像查找 macos 文件或其他内容一样进行更多的手动查找。 【参考方案1】:

这是一个非常基本的示例,它使用 Foundation 而不是 Vapor 的模板视图加载机制从自定义位置加载文件的内容,并将其作为文本响应返回。

drop.get  req in
  let templateString = try String(contentsOfFile: drop.workDir + "Resources/profile.md")
  return templateString

我不确定您所说的“解析,并将其嵌入到另一个模板文件中”究竟是什么意思,但您会在上面的几行之间加上这一点。

【讨论】:

啊,谢谢。不过,我不确定为什么使用 Bundle 会失败。它不适用于像 Vapor 这样的项目吗? 没错。 Bundle 是一种特定于 macOS 的文件夹格式,它包装二进制可执行文件以及各种其他资源来表示应用程序。 Vapor 在 macOS 和 Linux 上只生成二进制可执行文件,因此没有 Bundle 的概念。

以上是关于我应该在 Vapor 项目的哪里添加我自己的 Markdown 文件?的主要内容,如果未能解决你的问题,请参考以下文章

制作自定义 404 页面 Vapor 3

Vapor Xcode 项目中的两个几乎相同的目标

从 Vapor 3 到 Vapor 4 的 LingoVapor 包

我应该如何以及在哪里将 Glyphicons 文件夹添加到我的项目中?

无法在 Vapor 项目中连接我的 MySQL 数据库

Vapor - 尝试手动设置启动项目