运行模式
运行模式
功能
app.mode 控制 bt_app 如何准备资源、执行脚本和加载窗口入口。当前只支持 static、server、remote。
对比
| 模式 | 入口示例 | 是否需要本地服务 | 是否适合打包 | 适合场景 |
|---|---|---|---|---|
static | index.html | 否 | 是 | 纯静态页面、小工具、本地资源应用 |
server | http://127.0.0.1:18280 | 是 | 是 | BT 后端加 Web 前端的桌面应用 |
remote | https://example.com | 否 | 是 | 远程 Web、SaaS 管理工具、云端页面壳 |
static
static 模式通过 bt://app/... 读取项目资源。
{ "app": { "mode": "static", "entry": "index.html" } }
优点是部署简单,打包后不需要启动本地 Web 服务。缺点是页面不能依赖浏览器服务器环境特性,例如服务端路由需要前端自己处理。
server
server 模式先执行项目根目录的 server.bt,再打开 app.entry 指定的 HTTP 地址。
{ "app": { "mode": "server", "entry": "http://127.0.0.1:18280" } }
server.bt 示例:
net.listen({ type:'web', bind:'127.0.0.1:18280', sites:[ { domains:['127.0.0.1'], root:'www/', entry:'main.bt', static:{ route:'/static/{**}', path:'www/static/', default:'index.html' } } ] })
优点是可以使用完整 BT Web 服务能力。缺点是要管理端口,端口被占用会启动失败。
开发目录运行时修改 server.bt 或相关资源后,bt_app 会先停止旧 Web 服务,再重新执行 server.bt 并刷新窗口。修改监听端口时,需要同步修改 app.entry,否则窗口仍会打开旧地址。
remote
remote 模式直接打开远程 URL:
{ "app": { "mode": "remote", "entry": "https://example.com" } }
远程入口模式下,软件壳本身可以保持稳定,业务页面部署在服务器端。开发者更新服务器内容后,用户再次打开应用即可使用新版本功能,不一定需要重新下载安装客户端。
当前版本 remote 页面同样会注入 window.bt 和窗口控制能力,只应加载可信远程页面。
server.bt 自动执行
除了 server 模式,只要项目资源中存在 server.bt,当前运行时也会尝试执行它。普通 static 或 remote 项目如果不需要本地服务,不要放置无用的 server.bt。