【发布时间】:2020-07-01 10:11:02
【问题描述】:
单页应用通常会在首次加载时进行多次 API 调用。仪表板之类的东西可能:加载用户信息、加载主要内容、加载侧边栏内容等。 让单个组件担心发出这些请求很容易,但会增加加载时间,因为您有 n 个组件发出 n 个请求。
一种方法是在单个 API 端点下整合任何一个页面进行的所有调用。因此,现在仪表板页面不再对 n 个不同的端点进行 n 次调用,而是对新引入的 /dashboard 端点进行 1 次调用。
该解决方案的代价是服务器端逻辑与客户端逻辑相结合,这似乎是个坏主意。
另一种方法是通过将所有 API 调用整合到单个组件来限制这种与客户端的耦合,然后该组件可以批量处理所有查询,等待响应,将其分解为各个部分,然后将这些结果分发给相应的组件。这种方法似乎比上面的方法更好,尽管仍然存在耦合。
问题:是否有一个完善的模式(或流行的库)来解决这个问题?我想每个大型应用程序都会在某个时候遇到这个问题,但我找不到任何关于该主题的信息。
【问题讨论】:
-
因此,您想替换来自多个组件的 n 个小请求,这些请求将在它们各自的请求解决后立即呈现,而单个大请求会阻止整个页面加载和呈现,直到每个组件的所有数据微不足道的小组件已加载?我做对了吗?看看这个谈话:youtu.be/X-kA8B2QzjY?t=448我已经在与这个问题相关的部分开始之前链接了时间戳,但您可能希望从一开始就查看它以获得更好的上下文。
-
嗯,GraphQL 是一种发送自定义 API 调用的“模式”,您可以在其中定义和组合您想要获取的数据以及应该如何聚合这些数据。 apollographql.com 是一个非常受欢迎的库。
标签: reactjs api single-page-application