写点什么

使用 Netflix Falcor 获取 JSON 数据

  • 2015-08-25
  • 本文字数:863 字

    阅读完需:约 3 分钟

Netflix 开源了 JavaScript 库 Falcor ,它为从多个来源获取 JSON 数据提供了模型和异步机制。

Netflix 利用 Falcor 库实现通过 JSON 数据填充他们网页应用的用户界面。所有来自内存缓存或者多个数据库的后端数据,都通过一个虚拟 JSON 对象进行建模。这个 JSON 对象被称为“虚拟”,是因为从客户端的视角来看,这些数据来自内存,而事实上这些数据可能来自本地或者远程数据库。

数据通过 JSON 图提供,可以通过使用 DataSource 接口提供的 get、set 和 call 这几个异步方法操作。客户端能够通过类似直接访问 JSON 数据的方式,通过使用 JavaScript 路径的方式来遍历 JSON 图。为了便于演示,我们使用这个最小 JSON 对象:

复制代码
{
"greeting": "Hello World"
}

如果这个 JSON 对象存储在 model.json 文件中,那么访问这个对象可以这样做:

复制代码
<script src="<a href="https://netflix.github.io/falcor/build/falcor.browser.js%22">https://netflix.github.io/falcor/build/falcor.browser.js"</a>></script>
<script>
  var model = new falcor.Model({source: new falcor.HttpDataSource('/model.json') });
  // 从虚拟 JSON 资源的根节点获取“greeting”键的值
  model.
    get("greeting").
    then(function(response) {
      document.write(response.json.greeting);
    });
</script>

Falcor 包含一个路由,它隐藏了实际数据存储,指示调用负责获取数据的相应后端服务。另外,当数据获取回来后会被缓存起来,以避免后续对数据库的访问。Falcor 也能够批处理多个请求,将它们合并成一个网络请求,如果当前已经有一个数据库请求,Falcor 也不会重复请求。

Netflix 已经将 Falcor 开放到 GitHub 上,请求社区来帮助查找和修复缺陷,并与各种 MVC 框架进行集成。

查看英文原文 Getting JSON Data with Netflix Falcor


感谢邵思华对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-08-25 19:002070

评论

发布
暂无评论
发现更多内容

Salesforce遇挑战:Marc Benioff的管理、代码老化、Slack后遗症

B Impact

用户画像设计:揭秘成功产品背后的关键环节

L3C老司机

产品设计 数字化转型 产品管理 用户画像 用户画像分析

触手可及的 GPT —— LLaMA

Zilliz

Towhee ChatGPT LLM llama

【特别策划】2022年银行年报金融科技系列专题(一)

易观分析

金融科技 金融 银行

再立灯塔,我们为什么仍然期待魅族?

脑极体

魅族

神奇,前端不用redis也能实现消息队列——indexedDB

吴脑的键客

前端 js indexedDB

产品思维:微信是如何一步步打磨出完美产品的

石云升

读书感悟 产品思维

BroadcastReceiver牛刀小试

梦笔生花

广播 broadcast broadcastreceiver

软件测试/测试开发丨玩游戏为什么会卡顿?

测试人

软件测试 游戏 自动化测试 卡顿 测试开发

使用 LifseaOS 体验 ACK 千节点分钟级扩容

阿里巴巴云原生

阿里云 云原生 ACK

精彩抢先看!OceanBase在「数据技术嘉年华 2023」现场等你

OceanBase 数据库

数据库 oceanbase

龙蜥开发者说:历时三周,记录如何从 0 到 1 构建龙蜥衍生版 | 第 18 期

OpenAnolis小助手

开源 操作系统 龙蜥社区 浪潮信息 衍生版

RunnerGo(开源)Docker版部署文档(macOS)

爱研究代码的极客人

Docker 开源 软件测试 部署 runnergo

Django笔记二之连接数据库、执行migrate数据结构更改操作

Hunter熊

Python django

〖产品思维训练白宝书 - 认知篇③〗- 产品思维 VS 技术思维

哈哥撩编程

#产品思维

对话阿里云致凡:社会视频化“狂飙”,倒逼视频云技术加速迭代

云布道师

平头哥

产品团队使用比较广泛的8款敏捷开发工具软件

爱吃小舅的鱼

项目管理工具 敏捷开发管理工具

聊聊业务高可用和应用高可用

老张

高可用 高可用架构 稳定性保障

🎊这个 OpenTiny 开源项目的 CLI 可太牛了,两行命令创建一个美观大气的 Vue Admin 后台管理系统,有手就会,连我的设计师朋友都学会啦啦

Kagol

Vue3 cli 后台管理系统 vue admin

大数据公司如何结合AI技术

MobTech袤博科技

如何让ChatGPT充当细致入微的Java代码优化工? | 得物技术

得物技术

ChatGPT

CTO:半小时内处理好MyBatisPlus逻辑删除与唯一索引的兼容问题

了不起的程序猿

哪里有免费大文件传输平台?通过这4个网站免费来进行大文件传输

镭速

共享资源的保护:使用RWMutex的正确姿势

Jack

容器化,让数据库如虎添翼

沃趣科技

MySQL 数据库 云原生 容器化

CNStack 服务网格:构建统一的服务治理和零信任安全能力

阿里巴巴云原生

阿里云 云原生 CNStack

开心档之MySQL WHERE 子句

“成年人”的数据库,既要又要也要!

OceanBase 数据库

数据库 oceanbase

华为云开源项目OpenTiny的TinyNG组件库应该如何使用?

英勇无比的消炎药

开源 前端 OpenTiny UI组件库

艾瑞巴蒂看过来!OSSChat 上线:融合 CVP,试用通道已开放

Zilliz

开源 向量数据库 ChatGPT osschat

使用Netflix Falcor获取JSON数据_开源_Abel Avram_InfoQ精选文章