什么是#34;声明性数据加载"与Falcor,GraphQL和Resolver相关?

时间:2016-07-31 01:25:22

标签: reactjs redux graphql resolver falcor

我正在阅读Redux Without Profanity,作者说如下:

  

声明性数据加载的趋势主要有利于此模型   因为这更容易使用。较新的React框架,如Falcor,   GraphQL和Resolver还可以自动批量处理和重复数据删除。   它也可以使用简单的Redux动作组合实现   与自动化。

作者使用"声明性数据加载"有点无趣,所以我认为它必须是一个广为人知且非常明显的术语。但是我用谷歌搜索它并没有找到太多东西。不幸的是,作者认为这是明显的先验知识。请帮忙!

有人可以提供快速解释和示例并置"声明性数据加载"你的平均http / ajax数据来自一个简单的MEAN堆栈待办事项列表?

1 个答案:

答案 0 :(得分:1)

声明性数据加载和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. 存储数据
  5. 希望这有帮助!