"declarative data loading" 与 Falcor、GraphQL 和 Resolver 的关系是什么?

What is "declarative data loading" in relation to Falcor, GraphQL and Resolver?

我正在阅读 Redux Without Profanity 并且作者说了以下内容:

The trend towards declarative data loading favours this model, mainly as this is easier to work with. Newer React frameworks such as Falcor, GraphQL and Resolver also batch and dedupe requests automatically. It's also possible to implement using plain Redux actions combined with autoaction.

作者使用"declarative data loading"有点漫不经心,所以我想这一定是一个广为人知且非常明显的术语。但是我用谷歌搜索并没有找到太多。不幸的是,作者认为这是显而易见的先验知识。请帮忙!

有人可以提供一个快速的解释和示例并列 "declarative data loading" 和您的平均 http/ajax 数据加载,例如,一个简单的 MEAN 堆栈待办事项列表?

声明式数据加载和 http/ajax 数据加载之间的根本区别在于声明式和命令式编程之间的区别。使用声明式方法,您只需提及 什么 您需要什么,仅此而已。另一方面,使用命令式方法,您还需要告诉步骤,即如何得到您需要的东西。

下面我们一起来看看example of Relay's declarative data loading。它告诉每个派系,它需要这些数据:id、factionId、name、ships 以及 AddShipMutation 想要一个派系的数据。如何获取数据是抽象的。

fragments: {
  factions: () => Relay.QL`
    fragment on Faction @relay(plural: true) {
      id,
      factionId,
      name,
      ships(first: 10) {
        edges {
          node {
            id
            ${StarWarsShip.getFragment('ship')}
          }
        }
      }
      ${AddShipMutation.getFragment('faction')},
    }
  `,
},

对于使用 HTTP 或 AJAX 加载数据,我们必须指定如何获取数据。

  1. 提出请求
  2. 收到回复
  3. 从响应中提取数据
  4. 存储数据

希望对您有所帮助!