# 入口配置 ## 功能 `app.entry` 决定窗口启动后加载什么页面。它的含义由 `app.mode` 决定。 ## static 模式 `static` 模式加载项目内 HTML 文件: ```json { "app": { "mode": "static", "entry": "index.html" } } ``` 相对路径以项目根目录为基准。默认 `index.html` 运行时会加载为根路径: ```text bt://app/ ``` 这样 Vue Router `createWebHistory()` 这类前端路由能把初始路径识别为 `/`。其他入口文件会按实际路径转换,例如 `pages/start.html` 会转换为: ```text bt://app/pages/start.html ``` 路径必须是项目内相对路径,不能是绝对路径,不能包含 `..`。入口资源不存在时,窗口会显示启动错误页,提示 `入口资源不存在`。 ## server 模式 `server` 模式固定执行项目根目录的 `server.bt`,窗口加载 `app.entry` 指定的 HTTP 地址: ```json { "app": { "mode": "server", "entry": "http://127.0.0.1:18280" } } ``` `server.bt` 中需要自己启动 Web 服务,并保证监听地址和 `app.entry` 一致。当前推荐使用 `net.listen({ type:'web' })`。 ```bt net.listen({ type:'web' bind:'127.0.0.1:18280' sites:[ { domains:['127.0.0.1'] root:'www/' entry:'main.bt' } ] }) ``` ## remote 模式 `remote` 模式直接加载远程 Web 地址: ```json { "app": { "mode": "remote", "entry": "https://example.com" } } ``` `remote` 模式的 `entry` 必须以 `http://` 或 `https://` 开头。 ## 默认值 | 模式 | entry 默认值 | |---|---| | `static` | `index.html` | | `server` | `http://127.0.0.1:18280` | | `remote` | `https://example.com` | ## bt:// 地址 开发者通常不需要在 `app.entry` 中手写 `bt://`。`static` 模式会自动把相对入口转换为 `bt://app/...`。 `static` 模式下,无扩展名路径在资源不存在时会回退到入口 HTML,用于支持 SPA history 路由刷新;带扩展名的脚本、样式和图片不会回退。 页面内部可以引用: ```html ``` ## 排查 - 本地入口打不开:检查 `app.mode` 是否为 `static`,`entry` 文件是否存在,路径是否没有 `..`。 - 本地服务打不开:检查 `server.bt` 是否存在,端口是否被占用,`net.listen` 监听地址是否和 `app.entry` 一致。 - 远程入口打不开:检查网络、证书、URL 是否能在普通浏览器打开。 - 入口路径不能访问项目外文件;开发目录和 Bundle 都会校验安全相对路径。