我应该在 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 文件?的主要内容,如果未能解决你的问题,请参考以下文章
从 Vapor 3 到 Vapor 4 的 LingoVapor 包