首页 文章

什么是与Falcor,GraphQL和Resolver相关的“声明性数据加载”?

提问于
浏览 999
0

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

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

作者使用“声明性数据加载”有点无趣,所以我认为它必须是一个广为人知且非常明显的术语 . 但是我用Google搜索并没有发现太多 . 不幸的是,作者认为这是明显的先验知识 . 请帮忙!

Could somebody provide a quick explanation and example juxtaposing "declarative data loading" and your average http/ajax dataloading from, say, a simple MEAN stack todo list?

1 回答

  • 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加载数据,我们必须指定如何获取数据 .

    • 提出请求

    • 收到回复

    • 从响应中提取数据

    • 存储数据

    希望这可以帮助!

相关问题