# JSWidget
> 使用 JavaScript / JSX 为 iOS 与 macOS 编写小组件;运行时基于 JavaScriptCore,JSX 映射到 SwiftUI。本文件供 AI 与自动化工具快速定位权威文档。
## 生成小组件时必须先遵守的约定
- 入口:在 `main.jsx` 中编写顶层脚本;桌面小组件用 **`$render`** 输出 UI;灵动岛 / Live Activity 用 **`$dynamic_island`**。通过 **`$import`** 引入的从文件为模块管线,与入口脚本不同,见 `docs/api/index.md` 概述与「文件导入 API」章节。
- JSX 标签名一律小写(如 `
`、``),语义接近 SwiftUI,而非 React DOM。
- 网络:`$http` / `fetch`;存储:`$storage`;环境:`$getenv`(例如 `widget-size` 为 `small` | `medium` | `large`)。
- 完整全局 API 列表以仓库内 `docs/api/index.md` 为准;组件与属性以 `docs/components/index.md` 为准。
- 一键导入:生成脚本后附上 `jswidget://import?name=<名称>&code=` 链接,用户点击即可导入到 App。
## 仓库内文档路径(克隆后可直接读取)
- 快速入门:`docs/guide/getting-started.md`
- AI 指南(用户向 prompt 页源文件):`docs/guide/ai.md`
- 运行时 API:`docs/api/index.md`
- 组件参考:`docs/components/index.md`
- 类型合约(手写源):`docs/dts/types.d.ts`、`docs/dts/api.d.ts`、`docs/dts/components.d.ts`
## 通过 raw.githubusercontent.com 拉取(将 BRANCH 换为 main 或当前默认分支)
将 `OWNER/REPO` 替换为你的远端(上游示例为 `qwertyyb/JSWidget`)。
- `https://raw.githubusercontent.com/OWNER/REPO/BRANCH/docs/guide/getting-started.md`
- `https://raw.githubusercontent.com/OWNER/REPO/BRANCH/docs/api/index.md`
- `https://raw.githubusercontent.com/OWNER/REPO/BRANCH/docs/components/index.md`
- `https://raw.githubusercontent.com/OWNER/REPO/BRANCH/docs/guide/ai.md`
## 人类可读的文档站
在仓库根目录执行 `pnpm docs:build`(VitePress,配置见 `.vitepress/`)并部署后,站点根路径可访问本文件副本:`/llms.txt`。远程编辑器:`/editor/`。
## 可选:项目仓库
- https://github.com/qwertyyb/JSWidget