且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

在Gatsby中以编程方式创建页面的***实践是什么?

更新时间:2023-11-27 10:55:58

我在Gatsby Discord上发布了此问题,LekoArts选择了方法1,这显然是正确的选择。

这是他们对不和谐的回应:

因为否则您将使每个页面加载的数据膨胀,因为每个页面都将加载您将在Gatsby节点中查询的所有内容。Gatsby还必须查询每个可以达到数百万的节点,就像本期https://github.com/gatsbyjs/gatsby/issues/20671

另一方面,如果你传递id,你可以得到很大的速度提升https://github.com/gatsbyjs/gatsby/pull/20609


这是Gatsby贡献者链接的第一期GitHubLekoArtsvladar的另一个粘贴:

@martinMikusat感谢您提出这个问题!

看起来您在页面上下文中放入了太多数据。你把你的整个数据集放进去: https://github.com/MartinMikusat/gatsby-reproduce/blob/master/gatsby-node.esm.js#L83

页面上下文不用于将数据传递给页面。它旨在传递简单的参数,稍后可以将这些参数作为变量传递给页面的GraphQL查询。

存在与上下文相关的开销-Gatsby必须访问上下文中每个对象的每个字段才能推断SitePageContext类型。

您有850个节点的页面(在您的示例中为SanityLens),并且每个页面上下文都包含其中的所有节点。此外,每个节点大约有30个字段。这意味着盖茨比必须访问850*850*30个油田(大约2170万)。

在这样的情况下(当上下文使用不正确时),我们可以通过显示警告来做得更好,并且我们正好有一个问题:#14213

很抱歉这有点让人困惑,感谢您使用Gatsby💜