V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
luyinge
V2EX  ›  前端开发

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

  •  1
     
  •   luyinge · 2023-11-22 20:43:11 +08:00 · 17667 次点击
    这是一个创建于 370 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    125 条回复    2023-12-22 06:52:15 +08:00
    1  2  
    AoEiuV020JP
        101
    AoEiuV020JP  
       2023-11-23 14:05:10 +08:00
    @Hug125 #99 我没有使用 Inoreader ,但我在用的 fluent-reader 就有支持 Inoreader ,不知道效果咋样,
    如果很多个支持 Inoreader 的客户端你使用都有问题,会不会是用法不对,
    lizy0329
        102
    lizy0329  
       2023-11-23 14:18:09 +08:00
    散了吧,这个东西连文章标题未写不好,还讨论个啥?最厉害的是还有人正经回答?
    go522000
        103
    go522000  
       2023-11-23 14:47:32 +08:00
    想像一下用户使用场景,nodejs 封装后,只有一个启动与关闭的按钮,剩下的交给本地浏览器。
    简洁,然后交给用户使用。
    刚好,用户是用 360 浏览器,软件用着用着,突然右下角给你弹个“是兄弟就来砍我一刀”?刚好软件右下角是进度提示或状态显示,那体验会不会很差。
    然后我想实现弹出一个小窗口作为客服或聊天窗口,360 直接给你报个不安全(或没有提示,只在地址栏显示已拦截多少弹窗),或者更狠的直接提示让用户下载 360 杀毒?
    想像一下这几个场景,我还是选择 electron ,实在不行 tauri 也比 360 浏览器好。
    360 浏览器只是一个场景,因为你无法控制用户自己的浏览器安装了啥插件,比如去广告插件或皮肤等,某些功能无法点击或错乱了,用户又不知道啥原因,最后只能怪软件开发商。
    Nich0la5
        104
    Nich0la5  
       2023-11-23 14:54:04 +08:00
    @344457769 #73 确实很符合 electron 尽可能为了开发者爽的设计思路
    yukinotech
        105
    yukinotech  
       2023-11-23 15:08:48 +08:00
    举个不恰当的例子,qb 虽然有独立 gui ,但是本身会提供一个 localhost 的 server ,和你说的思路是基本类似的
    mylovesaber
        106
    mylovesaber  
       2023-11-23 15:14:55 +08:00
    @Nich0la5 linux 系统中,内核为系统最底层,在内核之上,有且只有一个程序集合叫 glibc (不考虑其他分支的前提下),剩下能组建出用户可用的 linux 系统的所有程序几乎在运行时都要调用 glibc ,因为所有程序都希望小,依赖细化,即 A 程序依赖于 B 和 C 依赖程序,所以 A 本身不包括 B 和 C 的依赖,只有当你装了 B 和 C 后,A 才被允许安装进系统。结果导致对 glibc 的版本强关联,你可以随便乱升级各种软件的二进制,但你不能随便升级 glibc 二进制,因为如果只升级 glibc ,你系统直接报废,只剩一个内核能运行,所以如果有一个软件不希望缚手缚脚,那么他运行时就需要内置一个 glibc ,间接得,linux 软件包开始推广通用包结构,比如 flatpak (不是说他就内置了 glibc ),deepin 也有了自己的玲珑结构,目的就是要摆脱又臭又长自身又不内嵌的依赖链(树),只要内核允许的最低 glibc 版本低于软件本身依赖,这个软件不能运行,哪怕其他任何一个软件对 glibc 有刚需依赖而 glibc 版本低导致运行不了,都跟自己没一丁点关系,兼容性 max 了
    huangliu
        107
    huangliu  
       2023-11-23 15:56:57 +08:00
    你说的这个方案,不就是我开源项目在用的吗。选 wails 或者 tauri 就可以了。
    就是系统兼容性确实没有 electron 那么好
    finalwave
        108
    finalwave  
       2023-11-23 16:23:18 +08:00
    点开前以为是 tauri ,点开后一看是 webUI 。aria2 的前端 UI 界面都不知道多少种了。
    gamexg
        109
    gamexg  
       2023-11-23 16:26:20 +08:00
    @luyinge rsyncthing 就是这样,一个托盘,启动界面是浏览器。
    zliea
        111
    zliea  
       2023-11-23 16:29:32 +08:00
    现在一体机很多都这么干了。
    nullico
        112
    nullico  
       2023-11-23 17:34:05 +08:00
    @hamsterbase #14 请问下 react native 能源生运行 nodejs 么?包括那些 native module?
    dai269619118
        113
    dai269619118  
       2023-11-23 17:54:59 +08:00
    不会的用的什么东西在他手里都用不好
    现在硬盘这么便宜只有程序员会纠结在 100m
    niceyuri
        114
    niceyuri  
       2023-11-23 17:55:09 +08:00
    强烈安利《 the Object Primer 》,作者 Scott W.Ambler 就是 UML 的发明者。这本书应该能解决你所有疑问
    niceyuri
        115
    niceyuri  
       2023-11-23 17:56:24 +08:00
    @niceyuri 对不起回错了帖- -
    mokevip
        116
    mokevip  
       2023-11-23 18:27:18 +08:00
    额,真的不考虑 electron 有很多调用系统功能的方法是浏览器不支持的?
    nekomoyi
        117
    nekomoyi  
       2023-11-23 19:41:55 +08:00
    我常用 sunshine 来作为远程桌面工具,它就是这样子实现的,运行一个服务作为后端,前端页面通过浏览器打开网页来进行基本的配置等操作。
    hamsterbase
        118
    hamsterbase  
       2023-11-23 20:42:54 +08:00   ❤️ 1
    @nullico


    react native 内置 nodejs 使用的是这个项目。


    https://github.com/nodejs-mobile/nodejs-mobile-react-native


    可以运行 nodejs 与 native module 。

    如果是 native module , 需要自己重新构建一下。 一般需要构建 3 份,分别为 iOS 模拟器,iOS 真机,安卓。

    具体可以看 https://github.com/nodejs-mobile/prebuild-for-nodejs-mobile
    sakura6264
        119
    sakura6264  
       2023-11-24 08:42:15 +08:00
    看到很多说浏览器这个实现不了那个实现不了的,op 这个方案里不是还有 node 吗,又不是只有一个 html ,放到 node 上实现不了吗,写 electron 也是这么干的吧
    pursuer
        120
    pursuer  
       2023-11-24 08:46:40 +08:00
    @mylovesaber 这个我觉得 libc 兼容性是有点锅的。像浏览器,依然保留对古老网页的兼容,虽然 ABI 兼容比 js 麻烦很多。像 windows ,升级了这么多版本依然保持了较好的兼容性,可能也是得益于 COM 机制。
    unco020511
        121
    unco020511  
       2023-11-24 09:24:48 +08:00
    我觉得 Electron 还挺好用的
    cmdOptionKana
        122
    cmdOptionKana  
       2023-11-24 10:32:14 +08:00
    @sakura6264 对,很多人误解很大,可能没接触过类似软件。
    Hozoy
        123
    Hozoy  
       2023-11-24 11:51:12 +08:00
    @luyinge 你说的这样的软件是有的,比较出名的就是 syncthing ,国内对标的是微力同步。
    mylovesaber
        124
    mylovesaber  
       2023-11-25 07:08:49 +08:00
    @pursuer 其实一般人也不会轻易动系统中的 libc ,主要的冲突点就是国内一群人用 centos7 ,然后遇到比如等保验收或者攻防演练时又不能用老版本软件,新版软件又必须要新版本 glibc ,然后一些 sm 环境禁止用 docker ,就每个软件都得内嵌一个 glibc ,相当得蛋疼,比如 redis ,一个软件编译出来就 5m ,自包含所有自有依赖后,体积将近 400m ,虽然打成 rpm 包只有 35m 左右,这情况刚好跟楼主说的那情况差不多了
    Ashes26
        125
    Ashes26  
       341 天前 via Android
    用户:我的上古浏览器也可以吗
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3981 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 10:22 · PVG 18:22 · LAX 02:22 · JFK 05:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.