# 桌面开发

## 功能
`bt_app` 是 BT 官方提供的桌面应用运行器和打包工具。它读取当前目录的 `app.json`，创建桌面窗口，并按配置加载本地页面、本地 BT 服务地址或远程 Web 地址。

开发者可以用 `HTML/CSS/JavaScript` 或任何 `前端框架` 编写界面，用 BT 编写本地逻辑、Web 服务或可被前端调用的函数。`bt_app` 负责窗口、资源协议、Bundle 打包、图标、元信息和前端 `window.bt` 桥接。

## 适用场景
- HTML前端开发人员，快速编写页面。
- BT 本地服务加 Web 前端的桌面软件。
- 将远程 Web 应用一键打包为桌面窗口。
- 需要单文件分发的 Windows 桌面应用。

## 和 Web 项目的区别
- 普通 Web 项目运行在浏览器中，页面默认不能直接调用 BT 本地函数。
- `bt_app` 运行在桌面 WebView 中，并注入 `window.bt`，页面可以通过 `bt.call()` 调用 `main.bt` 中的 BT 语言函数，也可以通过桌面 API 控制窗口、托盘、剪贴板、通知和系统对话框。

## 和普通桌面软件的区别
传统桌面软件通常直接使用原生 UI。`bt_app` 使用 Web 技术绘制界面，用 BT 负责本地逻辑或服务，适合已有 Web 前端经验的开发者。

## 基本运行思路
1. 双击启动 `bt_app.exe` 或执行命令 `./bt_app.exe run`。
2. 如果当前 exe 尾部带 Bundle，则从 Bundle 读取资源；否则从当前目录读取资源。
3. 优先读取 `app.json`；没有 `app.json` 时，如果根目录存在 `index.html`，会自动生成默认 `app.json` 后运行。
4. `static` 模式，窗口加载 `app.entry` 指定的 `HTML` 文件。
5. `server` 模式，执行 `server.bt`，窗口加载 `app.entry` 指定的本地服务地址。
6. `remote` 模式，直接加载 `app.entry` 指定的网址。

## 文档目录
- [快速开始](/docs/bt_app/quick-start)
- [app.json 配置](/docs/bt_app/app-json)
- [入口配置](/docs/bt_app/entry)
- [运行模式](/docs/bt_app/mode)
- [bt:// 协议](/docs/bt_app/protocol)
- [桌面 API](/docs/bt_app/api)
- [打包构建](/docs/bt_app/build)
- [发布分发](/docs/bt_app/release)
- [完整示例](/docs/bt_app/examples)
- [常见问题](/docs/bt_app/faq)
