Skip to content

local web app

· xieyuheng

定义 ​

目前 windbell 是一个 local web app, 也就是用 Web 技术构建, 但主要运行在用户设备本地, 而不是依赖远程服务器的应用。

问题 ​

与一般的本地应用相比,这样做很费事, 因为每个提供服务的函数, 需要被打包成 http api, 然后再从 http api 打包成前端的 api client。

相当于为了实现某个功能, 除了这个功能本身的代码之外, 还要实现额外的两层代码包裹。

这样实现的优点是, 在电脑上跑的程序, 可以在手机上打开网页使用。

方案 ​

生成代码 ​

「每个服务函数都要包成 HTTP API,再包成前端 client」, 是手写 REST 风格的典型代价。 某些工具可以将额外代码变成声明式或自动生成, 而不是两套手写代码。

基于文件系统 ​

首先可以假设 local app 所需要的所有「本地服务」, 都是通过「修改本地的文件」来实现的, 可以暴露出 fs 的 http api, 然后所有服务都基于这个 api 来写, 这样服务代码就是可以在前端调用的了。

但是,并不是所有服务都可以通过「修改本地的文件」来实现的, 比如在实现 agent tool call 时,我们需要运行 bash 脚本。 但是这也许也可以有一个统一的 http api 层。

实验结果 ​

经过实验,用跨网络的 http-fs + 依赖注入, 直接在前端实现服务相关的代码。 经常会产生「1 + N 问题」, 如果用 batch 操作来避免了「1 + N 问题」, 访问一个页面也会发很多请求。

对于 web app 来说, 就算是 local web app, 也需要 backend for frontend 来做聚合。

所以对于 local web app 来说, 这完全是错误的方案。

但是「明确核心业务逻辑使用依赖的能力是什么」, 这件事还是有价值的,可以帮助我们理解代码。