Logo
Section 1 / 7

Ember Data 简介

了解 Ember Data 及其用于处理数据的工具。

导入

Ember Data 简介

了解 Ember Data 及其用于处理数据的工具。

什么是 Ember Data?

Ember 可以与任何后端服务配合使用,例如 JSON:API、REST、GraphQL 等。Ember Data 为我们提供了一套强大的工具,用于处理和管理应用数据。它负责格式化服务器请求、规范化响应数据,并高效地管理本地数据缓存。

...
缓存数据管理

Ember Data 模型

Ember Data 的核心思想是将应用组织为模型对象。Ember Data 模型 是信息的表示单元。我们需要根据应用的需求来设计这些模型。例如,在一个完整的在线购物应用中,我们可能会有商品、购物车、订单等模型。

模型通常是持久化的,这意味着用户关闭浏览器窗口后数据不会丢失。与大多数服务器加载模型不同,Ember 使用更高效的方法(如 IndexedDB)将数据存储在用户的硬盘上。我们可以指定某个路由,将数据从内存加载到组件中。Ember Data 让模型的管理更加简单和高效。

存储(Store)

设想一种情况:我们需要在两个独立的组件中显示相同的信息。在大多数 Web 应用中,这会导致对同一数据发起两次独立请求,增加带宽消耗。Ember Data 通过为整个应用提供一个统一的存储中心来解决这个问题。这个存储(store)是应用中所有模型的中央仓库。不同的路由及其控制器可以向存储请求模型,而存储负责获取这些模型。

记录(Records)

从服务器加载的一个模型实例被称为一条 记录。我们可以创建某个模型的记录并将其保存到服务器。每条记录由其所属模型和唯一的 ID 标识。例如,若要查找名为 item 的模型的一条记录,可使用如下命令:

1this.store.findRecord('item', 1);

这条记录通过模型名 item 和 ID 1 进行唯一识别。

适配器(Adapters)

适配器 负责将 Ember 的请求转换为服务器请求。例如,当我们的电商应用请求 ID 为 1 的特定商品时,适配器决定 Ember 应该通过 HTTP 还是 WebSocket 获取数据。如果是 HTTP 请求,适配器还会确定使用 /item/1 还是 /resources/item/1 作为 URL。当请求的记录不在存储中时,适配器负责使其可用;当记录被更新时,存储会将其传递给适配器,由适配器发送并保存到服务器。Ember 提供了多种内置适配器,支持不同类型的服务器。默认情况下,Ember Data 配置为与 JSON:API 兼容。如果需要对接没有现成适配器的服务器,也可以手动配置应用,使其能够处理服务器返回的任意数据格式。

...
请求和加载数据

缓存机制

存储具备缓存记录的能力。一旦某条记录被加载过,存储就会将其缓存起来。当下次需要该记录时,存储会直接从缓存中读取,而无需再次发起请求。这种机制显著提升了 Ember 应用的性能和响应速度,同时减少了网络带宽的消耗。

Ember 中的控制器

Ember Data 架构