---
title: 内嵌资源
description: 说明 SuccApp Super JSON 中 innerResources 的含义、使用方式和直接编辑规则。
navTitle: 内嵌资源
---
# 内嵌资源

`innerResources` 表示把另一个元数据资源的完整内容嵌入当前文件。它不是外部资源引用，不通过 `targetPath` 指向外部文件，也不写入当前文件的 `referenceResources`。

常见场景包括页面中的内嵌加工、内嵌 SQL 数据集、临时模型或只归属于当前页面的局部资源。

## 使用方式{#overview}

使用内嵌资源的位置通常只保存一个代号，完整资源内容集中放在 `innerResources` 中。

```jsonc
{
  "sources": [
    {
      "id": "topStores",
      "name": "门店销售 TopN",
      "modelType": "dataflow",
      "content": "tbl1"
    }
  ],
  "innerResources": {
    "tbl1": {
      "type": "tbl",
      "content": {
        "version": "5.8.2",
        "settings": {},
        "sources": []
      }
    }
  }
}
```

上例中，`sources[0].content` 保存 `tbl1`，完整加工内容写在 `innerResources.tbl1.content`。

## 和外部引用的区别{#reference-difference}

`referenceResources` 和 `innerResources` 都可能通过代号被业务字段使用，但含义不同：

| 结构 | 保存内容 | 是否外部依赖 | 是否使用 `targetPath` |
| --- | --- | --- | --- |
| `referenceResources` | 外部资源的路径、类型和引用用途。 | 是 | 是 |
| `innerResources` | 被嵌入资源的完整元数据内容。 | 否 | 否 |

查找一个代号时，先看 `innerResources` 是否有同名条目；没有时，再看 `referenceResources`。这个顺序可以避免把内嵌资源误判为外部文件。

## 内嵌资源也会继续引用外部资源{#nested-references}

内嵌资源的 `content` 本身仍是一个 Super JSON 资源。它如果读取外部模型、引用脚本、使用图片或关联其他资源，应在自己的 `content.referenceResources` 中记录这些外部依赖。

不要把内嵌资源内部使用的外部依赖直接写到所属文件这一层。所属文件只负责记录内嵌资源本身，内嵌资源内部的引用由内嵌资源自己的内容维护。

## 直接编辑规则{#editing-rules}

直接编辑 `innerResources` 时按这个顺序处理：

1. 先确认当前文件类型和使用点字段，例如数据集可能用 `content` 保存内嵌资源代号。
2. 新增内嵌资源时，同时新增使用点字段和 `innerResources[refId]`。
3. `innerResources[refId].type` 写内嵌资源的文件类型，`content` 写该资源完整 Super JSON 内容。
4. 如果内嵌资源内部引用外部资源，在 `innerResources[refId].content.referenceResources` 中维护。
5. 删除内嵌资源前，先确认没有业务字段继续使用这个代号。
6. 移动或重命名外部资源不会直接影响内嵌资源代号，但可能影响内嵌资源内容里的外部引用。

## 应该查看的 DTS{#dts}

| DTS | 重点查看 |
| --- | --- |
| [`types/meta/superjson/base.d.ts`](../../../../dev-types/types/meta/superjson/base.d.ts) | `SuperJSON.innerResources` 的根字段说明。 |
| [`types/meta/superjson/referenceResources.d.ts`](../../../../dev-types/types/meta/superjson/referenceResources.d.ts) | `InnerResource` 的结构定义。 |
| 具体文件类型 DTS | 哪个业务字段保存内嵌资源代号。 |

外部资源引用的写法见[资源引用与路径](./reference-paths.md)。
