当前位置: 首页 > 知识库问答 >
问题:

11ty/eleventy中来自yaml文件的数据

阎修明
2023-03-14

在我的11ty站点(skeleventy-starter)上,我想解析数百篇评论。这些评论被存储在我的数据文件夹中的一个名为reviews的文件夹中,作为单个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"
const yaml = require("js-yaml");

module.exports = (eleventyConfig) => {
  
// Yaml
 eleventyConfig.addDataExtension("yaml", (contents) =>
        yaml.safeLoad(contents)
 );
};

但是,当我尝试在我的.njk文件中遍历review-data时:

{% for review in reviews %}
    <p>{{ review.name }}</p>
    <p>{{ review.rating }}</p>
    <p>{{ review.review }}</p>
{% endfor %}

我似乎既没有访问数据的权限,也没有在控制台中得到一个错误。我错过了什么?感谢任何帮助。谢谢!

共有1个答案

朱通
2023-03-14

您需要更改所有_data/entry-*.yml文件的文件扩展名,以使用.yaml扩展名(请注意附加的a)。

YAML团队推荐的正式文件扩展名为.YAML;然而,.yml在野外也很常见(请参阅此SO问题以获取快速了解)。

在自定义数据文件格式文档中支持YAML的代码示例是为了支持官方的.YAML扩展名而编写的。

在11ty config的这一行中,“yaml”表示要支持的文字文件扩展名,而不仅仅是语言的口语名称:

eleventyConfig.addDataExtension("yaml", (contents) =>

如果要同时公开_data/目录中的.yml.yaml文件,则可以html" target="_blank">执行以下操作:

eleventyConfig.addDataExtension('yaml', contents => yaml.safeLoad(contents))
eleventyConfig.addDataExtension('yml', contents => yaml.safeLoad(contents))

请注意,上面的代码顺序会影响11ty数据级联。如果.yaml.yml文件之间存在优先级冲突,.yml将胜出,因为扩展名是稍后添加的。

同样重要的是:11ty最近刚刚在V0.10.0中添加了默认的YAML支持,所以请确保您处于V0.10.0或更高版本。

 类似资料:
  • 我在这方面遇到了很多麻烦。我定义了构造函数,我可以让它导入一个文档,但不是两个。我得到的错误是: 有了一个include,Snakeyaml很高兴找到一个EOF并处理导入。有了两个,就不开心了(上图)。 我的java源代码是: 问题是,有没有人对蛇蟹做过类似的事情?有没有想过我做错了什么?

  • 我正在尝试为运行的已处理图像指定一个输出目录。 但是当我运行时,我得到的是这个错误消息 在没有指定选项的情况下,它可以正常工作。下面是它的文档:https://www.11ty.dev/docs/plugins/image/#output-directory 没有使用它的实际示例,但在逻辑上应该以与参数相同的方式传递它。

  • Eleventy 是一个更简单的静态站点生成器。Jekyll 的替代品,用 JavaScript 编写。将模板目录(不同类型)转换为 HTML。它默认为零配置,但有灵活的配置选项。Eleventy 与你的项目的现有目录结构一起工作。 Eleventy 使用独立的模板引擎 Eleventy 可以使用多种模板语言。适用于 HTML、Markdown、Liquid、Nunjucks、Handlebars

  • 问题内容: 我正在为桌子写夹具。并且其中之一接受JSON字符串作为值。 问题是灯具未加载失败,原因是: 任何解决方案。 问题答案: 我认为将引号括起来应该可以解决问题:

  • 免责声明: 首先我想说的是,我对网络开发还很陌生——也许这个问题是由于缺乏基础知识造成的,因此,如果有任何有用的建议,我将不胜感激。 问题: 我试图在我的web应用程序上加载gltf格式的3D数据,但是数据是动态的- 然而,我想坚持使用反应三纤维德雷,因为它易于与反应一起使用。不幸的是,我无法在示例或其他人的代码中找到解决方案。 可在此处找到可编辑沙盒: https://codesandbox.i

  • 我想在我的yaml文件中定义一个映射以在yaml文件中使用。 注意:我们对 yaml 有一个预处理步骤,它基本上允许我们插入可替换的令牌。我想使用替换令牌的值作为我的密钥...这就是为什么我不知道在我写yaml时我想要什么价值,只是FYI 所以简而言之,我想做的是这样的事情 或 或 我期望的结果是 然而使用https://yaml-online-parser.appspot.com/ 我可以看到这