# @ember-data/rfc395-data 中文文档

规范地址：https://npmcn.com/package/%40ember-data/rfc395-data/

版本：0\.0\.4
npm 元数据更新时间：2025-09-24T05:58:15.504Z
中文译文更新时间：2026-11-13T14:46:53.452Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40ember-data/rfc395-data
原文对照：https://npmcn.com/package/%40ember-data/rfc395-data/?lang=original
项目主页：https://github.com/ember-data/ember-data-rfc395-data#readme

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：16.4 kB，4 个文件
- TypeScript 类型：未声明
- 运行依赖：0 个
- 首次发布：2019-07-03T17:03:08.557Z
- 最新版本发布：2019-07-31T06:20:28.616Z
- 近 30 天下载量：1045653（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：3（近 12 个月 0 个）

## 中文简介

Ember.js RFC #395的JSON数据

## 安装

```sh
npm install @ember-data/rfc395-data
```

也可以使用：`pnpm add @ember-data/rfc395-data`、`yarn add @ember-data/rfc395-data`、`bun add @ember-data/rfc395-data`

## README

# 嵌入式数据-rfc395-数据

JSON数据 [RFC 第395号](https://github.com/emberjs/rfcs/blob/master/text/0395-ember-data-packages.md)

### 相关项目

-   [贝贝-插孔-模具- api- 填充](https://github.com/ember-cli/babel-plugin-ember-modules-api-polyfill)
-   [ember-模块-代码模块](https://github.com/ember-cli/ember-modules-codemod)
-   [ember-rfc176-数据](https://github.com/ember-cli/ember-rfc176-data) 用于启发

## 目录

### 全球到新模块

| 在此之前 | 之后 |
| --- | --- |
| `DS.AbortError` | `import { AbortError } from '@ember-data/adapter/error';` |
| `DS.Adapter` | `import Adapter from '@ember-data/adapter';` |
| `DS.AdapterError` | `import AdapterError from '@ember-data/adapter/error';` |
| `DS.attr` | `import { attr } from '@ember-data/model';` |
| `DS.belongsTo` | `import { belongsTo } from '@ember-data/model';` |
| `DS.BuildURLMixin` | `import { BuildURLMixin } from '@ember-data/adapter';` |
| `DS.ConflictError` | `import { ConflictError } from '@ember-data/adapter/error';` |
| `DS.EmbeddedRecordsMixin` | `import { EmbeddedRecordsMixin } from '@ember-data/serializer/rest';` |
| `DS.errorsArrayToHash` | `import { errorsArrayToHash } from '@ember-data/adapter/error';` |
| `DS.errorsHashToArray` | `import { errorsHashToArray } from '@ember-data/adapter/error';` |
| `DS.ForbiddenError` | `import { ForbiddenError } from '@ember-data/adapter/error';` |
| `DS.hasMany` | `import { hasMany } from '@ember-data/model';` |
| `DS.InvalidError` | `import { InvalidError } from '@ember-data/adapter/error';` |
| `DS.JSONAPIAdapter` | `import JSONAPIAdapter from '@ember-data/adapter/json-api';` |
| `DS.JSONAPISerializer` | `import JSONAPISerializer from '@ember-data/serializer/json-api';` |
| `DS.JSONSerializer` | `import JSONSerializer from '@ember-data/serializer/json';` |
| `DS.Model` | `import Model from '@ember-data/model';` |
| `DS.normalizeModelName` | `import { normalizeModelName } from '@ember-data/store';` |
| `DS.NotFoundError` | `import { NotFoundError } from '@ember-data/adapter/error';` |
| `DS.RecordData` | `import RecordData from '@ember-data/record-data';` |
| `DS.RESTAdapter` | `import RESTAdapter from '@ember-data/adapter/rest';` |
| `DS.RESTSerializer` | `import RESTSerializer from '@ember-data/serializer/rest';` |
| `DS.Serializer` | `import Serializer from '@ember-data/serializer';` |
| `DS.ServerError` | `import { ServerError } from '@ember-data/adapter/error';` |
| `DS.Store` | `import Store from '@ember-data/store';` |
| `DS.TimeoutError` | `import { TimeoutError } from '@ember-data/adapter/error';` |
| `DS.Transform` | `import Transform from '@ember-data/serializer/transform';` |
| `DS.UnauthorizedError` | `import { UnauthorizedError } from '@ember-data/adapter/error';` |

### 到全局的新模块

#### `@ember-data/adapter`

| 模块 | 全球 |
| --- | --- |
| `import Adapter from '@ember-data/adapter';` | `DS.Adapter` |
| `import { BuildURLMixin } from '@ember-data/adapter';` | `DS.BuildURLMixin` |
| `import { AbortError } from '@ember-data/adapter/error';` | `DS.AbortError` |
| `import AdapterError from '@ember-data/adapter/error';` | `DS.AdapterError` |
| `import { ConflictError } from '@ember-data/adapter/error';` | `DS.ConflictError` |
| `import { ForbiddenError } from '@ember-data/adapter/error';` | `DS.ForbiddenError` |
| `import { InvalidError } from '@ember-data/adapter/error';` | `DS.InvalidError` |
| `import { NotFoundError } from '@ember-data/adapter/error';` | `DS.NotFoundError` |
| `import { ServerError } from '@ember-data/adapter/error';` | `DS.ServerError` |
| `import { TimeoutError } from '@ember-data/adapter/error';` | `DS.TimeoutError` |
| `import { UnauthorizedError } from '@ember-data/adapter/error';` | `DS.UnauthorizedError` |
| `import { errorsArrayToHash } from '@ember-data/adapter/error';` | `DS.errorsArrayToHash` |
| `import { errorsHashToArray } from '@ember-data/adapter/error';` | `DS.errorsHashToArray` |
| `import JSONAPIAdapter from '@ember-data/adapter/json-api';` | `DS.JSONAPIAdapter` |
| `import RESTAdapter from '@ember-data/adapter/rest';` | `DS.RESTAdapter` |

#### `@ember-data/model`

| 模块 | 全球 |
| --- | --- |
| `import { attr } from '@ember-data/model';` | `DS.attr` |
| `import Model from '@ember-data/model';` | `DS.Model` |
| `import { belongsTo } from '@ember-data/model';` | `DS.belongsTo` |
| `import { hasMany } from '@ember-data/model';` | `DS.hasMany` |

#### `@ember-data/record-data`

| 模块 | 全球 |
| --- | --- |
| `import RecordData from '@ember-data/record-data';` | `DS.RecordData` |

#### `@ember-data/serializer`

| 模块 | 全球 |
| --- | --- |
| `import Serializer from '@ember-data/serializer';` | `DS.Serializer` |
| `import JSONSerializer from '@ember-data/serializer/json';` | `DS.JSONSerializer` |
| `import JSONAPISerializer from '@ember-data/serializer/json-api';` | `DS.JSONAPISerializer` |
| `import { EmbeddedRecordsMixin } from '@ember-data/serializer/rest';` | `DS.EmbeddedRecordsMixin` |
| `import RESTSerializer from '@ember-data/serializer/rest';` | `DS.RESTSerializer` |
| `import Transform from '@ember-data/serializer/transform';` | `DS.Transform` |

#### `@ember-data/store`

| 模块 | 全球 |
| --- | --- |
| `import Store from '@ember-data/store';` | `DS.Store` |
| `import { normalizeModelName } from '@ember-data/store';` | `DS.normalizeModelName` |

### 脚本

上面的表格可以使用 `scripts` 文件夹,例如:

```
node scripts/generate-markdown-table.js
```

## 捐款

### 映射.json格式

这个 `mappings.json` 文件包含有下列格式的条目:

```ts
interface Mapping {
  /**
    The globals based API that this module and export replace.
   */
  global: string;

  /**
    The module to import.
   */
  module: string;

  /**
    The export name from the module.
   */
  export: string;

  /**
    The recommended `localName` to use for a given module/export. Only present
    when a name other than the value for `export` should be used.

    This is useful for things like ember-data-codemod or eslint-plugin-ember
    so that they can provide a nice suggested import for a given global path usage.
   */
  localName?: string;

  /**
    A replacement module/export which should be used instead.
  */
  replacement?: {
    module: string;
    export: string;
  }
}
```

## 常见问题

### @ember-data/rfc395-data 是什么？

Ember\.js RFC \#395的JSON数据

### 如何安装 @ember-data/rfc395-data？

在项目目录运行 npm install @ember-data/rfc395-data，或使用 pnpm add / yarn add / bun add。

### @ember-data/rfc395-data 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/ember-data\_\_rfc395-data 是否存在。

### @ember-data/rfc395-data 可以商用吗？

@ember-data/rfc395-data 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @ember-data/rfc395-data 的下载量有多少？

根据 npm 官方下载统计，@ember-data/rfc395-data 在 2026/10/14 – 2026/11/12 这 30 天内被下载 1,045,653 次，日均约 34,855 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @ember-data/rfc395-data 还在维护吗？

最新版本 0\.0\.4 发布于 2019/07/31（7 年前）；至今共发布 3 个版本，其中过去 12 个月发布了 0 个；首次发布于 2019/07/04。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

