想要一个这样的 Magic 浏览器

wheelg · 2025-4-9 15:07:42 · 828 次点击

最近有很多 App 的奇思妙想,作为前端从业者,拿 JS 开发软件界面简直不要太爽,但是一旦到了发布的时候,问题就来了,用 electron 整个打包吧又太大了,单纯作为网页发布,又少了很多只有客户端才能使用的权限,尤其是很多 Web 应用其实只需要可以绕开跨域请求第三方数据而已,却要为此付出一整个运行时的代价,或者自己花钱搭服务器,真的得不偿失。

拿我最近做的一个 MP3 标签自动识别软件来说吧,其实它的功能很简单,就是识别 mp3 文件,然后请求网易的接口,最后再写入到 mp3 里面,而这样一个小小的需求,其实 JS 很简单就能做到,但就是缺少两个关键功能:1 ,跨域请求第三方接口; 2 ,读写本地文件,而不得不使用 tauri 来完成。而其实方法 2 只需要最新的 Chrome 和 Safari 就可以实现了,只有方法 1 ,是无论如何没办法只通过网页来实现(不使用服务器转发接口的情况下)。

包括 Statckblitz 这样的应用也是如此,就是因为不允许请求跨域,nodejs 环境跑在浏览器上也是诸多不便,不然直接使用 PWA 版本跑 node 服务,那该是多么一件美事啊。

所以我的想法是,如果有这样一个应用,它能够让用户输入的 URL 自动变成 PWA ,同时注入一些 JSBridge ,让网页能够直接调用满血版的 fetch 和文件系统,再加上一些权限限制,这不就成了一个完美的网页容器了吗?而事实上,我用 tuari 开发的几个应用,rust 部分的代码几乎完全相同,因为真的只需要几个关键的权限,就能实现大部分 App 能实现的功能,我现在就能列出几个非常适合这样做的应用: 1 ,Postman 2 ,Statckblitz 3 ,VS Code Online

另外我也想过 Chrome 配合 extension 可以实现这个需求,但是 extension 鱼龙混杂,而且每个 PWA 都需要单独设置,还会影响 Chrome 本身的用户数据,我就是想要一个完全独立的 App ,在里面管理类似的网页和权限。理论上这个应该很容易做到才对。

至于生态,现在已经有很多 electron 和 tuari 应用了,只需要一层 JSBridge 的接口层就能抹平大部分运行容器的差异,而且大部分应用都是开源项目或者独立开发者,做一些小工具场景应该还是会比较有市场的吧

举报· 828 次点击
登录 注册 站外分享
7 条回复  
wheelg 楼主 初学 2025-4-9 15:23:03
问了 GPT4o 它也很支持,这就让它整个原型出来~
okakuyang 小成 2025-4-9 16:07:46
直接让用户使用最新的浏览器就行了
musi 初学 2025-4-9 16:23:56
> 现在已经有很多 electron 和 tuari 应用,只需要一层 JSBridge 的接口层就能抹平大部分运行容器的差异 不同版本之间的差异你抹不平的
dufu1991 小成 2025-4-9 16:54:30
目前最好的方案是希望 Chromium 官方能将 Chromium 按模块拆包,现在将一个最简单的应用打包成 Electron ,即使你只是写一下 UI 界面,但是实际你打包进去的包含渲染引擎、V8 引擎、网络堆栈、音视频处理模块、扩展系统、开发者工具、WebRTC 、WebSockets 、WebSockets......其中大多数是我们用不到的,相信按需的话绝大多数应用的体积不会这么大。
dufu1991 小成 2025-4-9 16:55:46
@dufu1991 WebAssembly
wheelg 楼主 初学 2025-4-9 17:18:52
@okakuyang 最新浏览器也做不到摆脱请求跨域的,更别说其他更细节的系统功能了
wheelg 楼主 初学 2025-4-9 17:22:18
@musi 完全抹平确实有点困难,但是保证基础的 api 表现一致还是可以的,我的想法是不需要完美实现 electron 或者 tauri 的全部功能,只需要一部分(即上面提到的跨域请求,文件系统这样的)即可,让独立开发者只需要专注于 GUI ,哪天乐意了再移植到其他平台也很简单。
返回顶部