有个疑问,如果都觉得 Electron 是电子垃圾,那为啥不直接用用户的浏览器做 UI 而不是自己封一个 Chromium

2023-11-22 20:43:11 +08:00
 luyinge

只是疑问,如果一个 Electron 应用将 Nodejs 部分打包成二进制文件,然后使用系统原生平台做一个启动按钮,点击后直接执行这个二进制文件 + 启动一个本地 http server 用来在 localhost 上展示前端 UI 界面,通信直接走 socket

这么搞初看上去好像也没啥毛病,当然肯定会存在很多限制,不知道这种限制会是啥?为啥都没见到有人这么玩过

21380 次点击
所在节点    前端开发
125 条回复
beijinglowb
2023-11-22 20:45:39 +08:00
用户浏览器兼容性不一样啊,我们这边很多客户还在用 IE11 ,让他们升级是不可能的事。
klmd99
2023-11-22 20:47:51 +08:00
有啊 tauri 啊。
klmd99
2023-11-22 20:48:31 +08:00
node 是吧,没审好题,忽略
luyinge
2023-11-22 20:49:40 +08:00
@beijinglowb 这种确实是个问题,,,不过如果只是开源搞个工具的话,好像也没必要在乎这种兼容性,但也没见到哪个开源项目这么玩过,反倒全都是 electron 吃我内存。。。
cmdOptionKana
2023-11-22 20:51:56 +08:00
从普通用户的角度看,Electron 不是电子垃圾,而且,普通用户也不知道什么是 Electron ,也不想知道。

其次,如果 Electron 是电子垃圾,那么对于普通用户来说,启动一个后端,然后再去浏览器里使用,这样的软件比垃圾更垃圾。

普通用户就是喜欢一个软件一个独立界面,普通用户不喜欢浏览器。
luyinge
2023-11-22 20:52:14 +08:00
@klmd99 tauri 还是用的系统默认 webview 来做渲染嘛,我举例是把渲染这块完全交给用户自己设定的默认浏览器,毕竟 tauri 在 linux 上默认用的是 WebKitGTK ,我没用过,但这个听说是一堆问题?

但如果是直接用用户浏览器打开就没这个问题了嘛,要是展示有问题可以直接让用户使用 chrome ,哈哈
snylonue
2023-11-22 20:53:43 +08:00
有些软件的 UI 就是这么做的

缺点的话就是浏览器中功能受限的,比如文件处理
luyinge
2023-11-22 20:54:33 +08:00
@cmdOptionKana 啊?你没明白我的意思啊,如果我用 macos 打包出来一个 app ,用户安装以后顶部托盘出现一个 icon ,有个选项叫打开,用户一点直接打开浏览器拉起 app 界面,至于启动后端 httpserver 这个应该是在启动应用的时候默认就装好的
luyinge
2023-11-22 20:55:28 +08:00
@snylonue 好吧,,,那是我孤陋寡闻了
cmdOptionKana
2023-11-22 20:57:14 +08:00
@luyinge 那还是浏览器,而不是一个独立的窗口,就会被讨厌。
iOCZS
2023-11-22 21:02:00 +08:00
@luyinge 系统浏览器怎么和你的 APP 通信呢?跨进程的,这个问题你想过没?
flyqie
2023-11-22 21:16:35 +08:00
之前见过挺多软件都是这么做的。

问题也如楼上所说,浏览器兼容性,你不能假定用户装了啥浏览器。。

而且还得额外占端口,得判断端口是否可用。
stinkytofu
2023-11-22 21:23:33 +08:00
@luyinge #8 有这样的软件啊, Mac 端的 Syncthing 不就是这样的软件么, 菜单栏常驻, 打开浏览器操作界面, 但是这根本就不属于标准客户端软件, 而且使用场景很受限, 和系统本地交互受限, 网页是运行在沙盒里面的, 很多需求都实现不了. 如果网页可以满足需求, 那也不需要本地跑一个 http server, 直接连接服务器不就行了么, 所以你说的这个需求就是伪需求, 本末倒置了, 最终又饶了一圈回来了.
hamsterbase
2023-11-22 21:28:53 +08:00
是没什么毛病, 我的软件就是这么架构的。


1. pc 是 electron 套 nodejs
2. docker 版是容器里启动 nodejs
3. iOS ,安卓,iPad 版是 react native 里套 nodejs



这样一份代码实现了几乎所有平台。 在网页版里,前后端通过 websocket 通信。 在 electron 里通过 electron ipc 通信。
wjx0912
2023-11-22 21:31:28 +08:00
有个叫 pwa 的可以了解下
PaulSamuelson
2023-11-22 21:32:36 +08:00
如果前端写的代码能够同时兼容 IE11 和 chrome11 ,那确实可以不用 Electron 。
macaodoll
2023-11-22 21:35:41 +08:00
你没见过,不代表没有,当年好多程序功能都是用套 IE 。
nxcdJaNnmyF9O90X
2023-11-22 21:36:41 +08:00
golang 的 wails 不错
thinkm
2023-11-22 21:37:52 +08:00
就程序员觉得 Electron 是电子垃圾,用户不在乎的,页面精美就行
shijingshijing
2023-11-22 21:42:52 +08:00
对程序员来说 Electron 是垃圾,CLI 命令行真香;对用户来说 CLI 命令行是垃圾,Electron 真香。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/994305

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX