# 能力一览

以下能力已经在 Web 宿主提供。是否可调用应通过 `platform.can` 判断，调用本身仍可能因为权限、网络或浏览器限制失败。

| 能力 | 当前接口 | 文档 |
| --- | --- | --- |
| 界面 | `platform.ui` | [组件总览](/doc/components) |
| 数据发现与读取 | `data.list`、`get`、`query`、`getRecord`、`count` | [数据](/doc/api/data)、[查询](/doc/api/query) |
| 数据写入 | `data.insert`、`insertMany`、`update`、`remove` | [写入与删除](/doc/api/mutations) |
| 宿主与能力判断 | `platform.host`、`platform.can(name)` | [宿主与用户](/doc/api/host) |
| 当前用户 | `await platform.user()` | [宿主与用户](/doc/api/host) |
| 写入剪贴板 | `await platform.clipboard.write(text)` | [剪贴板](/doc/api/clipboard) |
| 关闭当前应用 | `platform.app.close()` | [应用控制](/doc/api/app) |

## 尚未开放

当前没有 `platform.fs`、`platform.media`、`platform.notify`、`platform.request`、`platform.app.open` 或后台定时任务 API，也没有内置的页面路由和应用版本回滚。

旧 `app.json.permissions` 不参与授权。版本化 `capabilities` 声明和首次运行授权已接入 Web，详见[多文件应用包](/doc/packages)和[安装与更新](/doc/install)。

不提供 `platform.kv`。持久数据通过数据库保存，当前页面的临时状态保存在内存。

## 错误处理

异步 API 失败时会拒绝 Promise，错误包含 `code` 和安全的 `message`，有时还包含 `details.outcome`。常见错误为 `INVALID_REQUEST`、`PERMISSION_DENIED`、`NOT_FOUND`、`DEADLINE_EXCEEDED` 和 `INSTANCE_CLOSED`。`outcome: "unknown"` 代表操作可能已经执行，尤其是超时、断线和批量部分失败；不要自动重试写入，应先查询实际记录。应用应捕获错误并显示清楚的说明。`can` 只说明宿主声明支持该能力，不代表某次请求一定成功。

```js
try {
  const user = await platform.user();
  platform.ui.toast("你好，" + user.name);
} catch (error) {
  platform.ui.toast(error instanceof Error ? error.message : "读取失败，请重试");
}
```

文档预览使用真实 Web runtime 和独立模拟数据。用户信息为演示值，剪贴板操作会提示需要在安装后的应用中使用；关闭应用会显示说明，而不会关闭文档页面。
