javascript - 来自 11ty / 110 中 yaml 文件的数据
问题描述
在我的 11ty 网站(skeleventy-starter)上,我想解析数百条评论。这些评论作为单独的 yaml 文件(命名如下:“entry-7128372832.yml”)存储在我的数据文件夹中名为评论的文件夹中。每个 yaml 文件如下所示:
_id: 84494a00-b086-11ea-94d5-7f955bef1b4e
rating: 5
name: Name
review: "review body"
date: "2019-05-12T12:12:31.116Z"
如文档中所述,我将自定义数据文件格式添加到 11ty 配置中:
const yaml = require("js-yaml");
module.exports = (eleventyConfig) => {
// Yaml
eleventyConfig.addDataExtension("yaml", (contents) =>
yaml.safeLoad(contents)
);
};
但是,当我尝试遍历 .njk 文件中的评论数据时:
{% for review in reviews %}
<p>{{ review.name }}</p>
<p>{{ review.rating }}</p>
<p>{{ review.review }}</p>
{% endfor %}
我似乎既无法访问数据,也无法在控制台中收到错误。我在这里想念什么?任何帮助表示赞赏。谢谢!
解决方案
您需要更改所有文件的文件扩展名_data/entry-*.yml
以使用.yaml
扩展名(注意附加的a
)。
YAML 团队推荐的官方文件扩展名是.yaml
; 但是,.yml
在野外也很常见(请参阅此 SO question快速潜水)。
自定义数据文件格式文档中的 YAML 支持代码示例是为了支持官方.yaml
扩展而编写的。
在您的 11ty 配置的这一行中,"yaml"
代表要支持的文字文件扩展名,而不仅仅是语言的通俗名称的名称:
eleventyConfig.addDataExtension("yaml", (contents) =>
如果要公开目录中的.yml
和.yaml
文件_data/
,这将起作用:
eleventyConfig.addDataExtension('yaml', contents => yaml.safeLoad(contents))
eleventyConfig.addDataExtension('yml', contents => yaml.safeLoad(contents))
请注意,上面的代码顺序会影响11ty Data Cascade。.yaml
如果 a和.yml
文件之间存在优先级冲突,.yml
则将获胜,因为扩展名是稍后添加的。
推荐阅读
- django - 如何使一个应用程序的一个视图显示在 Django 的所有 url 中?
- java - Sevenzipjbinding:当文件句柄变得不需要时,如何正确关闭它们?
- video - wmv视频;数据包分片位置无效;这是什么意思以及如何解决它
- azure - 在 MongoAPI 查询中使用投影时对 CosmosDB RU 有什么影响
- javascript - How to consume/ receive rabbitmq queue message in Vue js appliaction?
- c++ - 为什么在 Boost zip 迭代器上使用 C++17 并行执行算法时,MSVC 会出现错误?
- python - 如何生成串行wif密钥,程序在python中只生成一个密钥
- azure - 为什么我的 ASP.NET Core 应用程序中的图像在我的本地环境中被覆盖,但在我上传到 Azure 时却没有?
- python - 对于 Python Pandas,如何根据索引日期范围附加到列值(类型列表)?
- python - 在 itertools.groupby 的结果上使用 zip 意外地给出了空列表