# bt:// 协议 ## 功能 `bt://` 是 `bt-app` 内部 WebView 使用的项目资源协议。它把项目目录或打包 Bundle 中的文件映射成页面可访问的 URL。 ```text bt://app/ bt://app/index.html bt://app/assets/app.css bt://app/main.js ``` 该协议不是系统级外部协议,不用于让操作系统或普通浏览器打开 BT 应用。它只在 `bt-app` 创建的 WebView 内部生效。 ## 使用方式 `static` 模式下,`app.entry` 写相对路径即可: ```json { "app": { "mode": "static", "entry": "index.html" } } ``` 页面中可以显式引用项目资源: ```html ``` ## 路径规则 - `bt://app/` 会映射到当前 `static` 入口文件,默认是 `index.html`。 - 主机名必须是 `app`,例如 `bt://app/index.html`。 - 路径是项目内相对路径。 - 不能访问绝对路径。 - 不能包含 `..`。 - 开发模式读取项目目录文件,打包模式读取 exe 尾部 Bundle。 - `static` 模式下,无扩展名路径在资源不存在时会回退到入口 HTML,用于兼容 SPA history 路由;带扩展名的资源不存在时仍返回资源错误。 ## 内容类型 协议会按扩展名返回常见 Content-Type: | 扩展名 | 类型 | |---|---| | `.html` `.htm` | `text/html; charset=utf-8` | | `.css` | `text/css; charset=utf-8` | | `.js` | `application/javascript; charset=utf-8` | | `.json` | `application/json; charset=utf-8` | | `.png` `.jpg` `.jpeg` `.gif` `.svg` `.webp` `.ico` | 对应图片类型 | | `.wasm` | `application/wasm` | | `.txt` | `text/plain; charset=utf-8` | ## 调试 需要查看协议请求时,可以设置环境变量: ```bash set BT_APP_TRACE_PROTOCOL=1 ./bt-app.exe run ``` ## 常见错误 - `资源路径无效`:URL 路径包含非法编码或不是安全相对路径。 - `资源不存在或无法读取`:文件没有放在项目目录中,或打包时没有进入 Bundle。 - `403`:协议主机不是 `app`,或路径试图访问项目外部。