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

关于 Electron 有个想法

  •  
  •   tozp · 2022-03-22 09:09:21 +08:00 via iPhone · 8161 次点击
    这是一个创建于 982 天前的主题,其中的信息可能已经有所发展或是发生改变。
    能不能开发个类似 bridge 的适配包,装上那个之后只要电脑上有 chrome 浏览器,所有 electron 应用就不必要每个都自带一整套 chrome 代码,以后应用程序的 size 会非常小?.net 框架貌似就是这样,只要电脑上装了运行时环境,应用程序不复杂的话只有几十几百 k 就能实现很多完整的功能。我没做过 electron ,所以以上也许是个可行的想法,欢迎交流。
    第 1 条附言  ·  2022-03-22 11:35:24 +08:00
    感谢所有 v 友的评论,让我学到不少东西。
    48 条回复    2022-04-18 19:07:41 +08:00
    dragonszy
        1
    dragonszy  
       2022-03-22 09:17:06 +08:00
    https://github.com/sudhakar3697/electron-alternatives
    每种语言类似的有很多,比如 Rust 的 Tauri
    villivateur
        2
    villivateur  
       2022-03-22 09:17:21 +08:00 via Android
    那么问题来了,有的应用只支持 Chrome 98 ,但你升级到了 99 ,就会导致这个应用不能用
    thetbw
        3
    thetbw  
       2022-03-22 09:17:51 +08:00
    win11 自带了 edge 的
    C603H6r18Q1mSP9N
        4
    C603H6r18Q1mSP9N  
       2022-03-22 09:18:58 +08:00
    Rust 的 Tauri ,研究过 自带 FF
    ysc3839
        5
    ysc3839  
       2022-03-22 09:21:41 +08:00 via Android
    不能直接调用 Chrome ,但有类似方案,可以调用系统提供的 WebView 。不过主要问题是不同系统的 WebView 提供的接口以及支持的特性不一致,可能会受到许多限制。
    Kimen
        6
    Kimen  
       2022-03-22 09:22:54 +08:00
    类似的我也有一个疑问,为什么每个 node 前端项目都有一个独立的 node_modules 文件夹,为什么不能像 maven 一样将相同的依赖包放在一起只留一份
    BingoXuan
        7
    BingoXuan  
       2022-03-22 09:33:30 +08:00
    最好的例子就是 pywebview ,但很蛋痛的一点就是,只能拦截 js 不能拦截请求。也就是注定要启动一个服务器来处理静态资源。
    VirgilMing
        8
    VirgilMing  
       2022-03-22 09:33:48 +08:00 via iPhone
    @Kimen 那樣又很容易就回到依賴地獄了
    但其實說白了還是這年頭硬盤內存都不是很貴⋯⋯
    ChefIsAwesome
        9
    ChefIsAwesome  
       2022-03-22 09:34:14 +08:00
    这问题 electron 做出来就有人讨论过了。它不只是自带 chrome ,还自带了一个 node 环境。问题就是版本一变,软件直接就可能不能用了。现在的做法也是取舍的结果。
    wunonglin
        10
    wunonglin  
       2022-03-22 09:34:32 +08:00
    好。你重走了 ie 的模式
    murmur
        11
    murmur  
       2022-03-22 09:41:35 +08:00
    为啥不用 edge
    DTCPSS
        12
    DTCPSS  
       2022-03-22 09:42:13 +08:00
    Tauri 这类框架感觉如果要做一些超出浏览器范围的事比较麻烦,比如在 Rust 里处理个本地大文件什么的。
    pkwenda
        13
    pkwenda  
       2022-03-22 09:51:19 +08:00
    @DTCPSS #12 是的,写多 demo ,比如 sqlite 必须用 tauri 提供的,还依赖本地浏览器,升级 mac 系统 dev tools 崩溃等等问题

    https://github.com/pkwenda/tauri-vue3-vuetify3-template
    maichael
        14
    maichael  
       2022-03-22 09:52:17 +08:00
    这玩意不是技术实现的问题,而是生态的问题,涉及到应用、浏览器、系统等生态,Electron 压根没有这个能力整合,不是没有过这种想法,而是压根推不起来。
    zhaozhao
        15
    zhaozhao  
       2022-03-22 09:54:28 +08:00   ❤️ 1
    @Kimen pnpm 就是这么做的
    yolee599
        16
    yolee599  
       2022-03-22 10:01:08 +08:00
    都用 Electron 了还考虑那么多干嘛?如果考虑资源问题,就不会使用 Electron ,大把其他方案 🐕
    0o0o0o0
        17
    0o0o0o0  
       2022-03-22 10:03:25 +08:00
    参考 webview2
    binux
        18
    binux  
       2022-03-22 10:04:59 +08:00 via Android
    Tink
        19
    Tink  
       2022-03-22 10:06:05 +08:00
    主要是版本,如果版本兼容能解决的话肯定都会这么做
    otakustay
        20
    otakustay  
       2022-03-22 10:24:27 +08:00
    我用 Electron 就可以毫无顾虑地使用 Webkit 和 V8 最新特性,如果只用客户端有的 Chrome ,又要回到 Web 这样到处考虑兼容性时代了
    sutaking
        21
    sutaking  
       2022-03-22 10:39:17 +08:00
    题主的思路 Google 已经采纳了,2018 年开发者大会就弄了个 pwa 出来
    我还为此在知乎上做过一回标题党,哈哈,[一首凉凉送给 Electron( https://zhuanlan.zhihu.com/p/40648909)
    3dwelcome
        22
    3dwelcome  
       2022-03-22 10:39:48 +08:00
    @yolee599 哪有什么其他方案。

    目前对 JS 支持最好的,版本更新最勤快的,也只有 electron 了。
    DTCPSS
        23
    DTCPSS  
       2022-03-22 10:40:52 +08:00
    之前试着用 .NET 的 Photino (类似 Tauri 的跨平台本地 web app 框架)给一个用 Mac 的同事做了个工具(我用 Windows ),结果为了在 C# 侧获取一个用户选择的本地大文件不得不起了个服务器…
    fregie
        24
    fregie  
       2022-03-22 10:53:16 +08:00
    微软已经在 windows 上出了 webview2 ,大概就是这个意思,把 chrome 内核掏出来做了 runtime 装在系统里
    我记得 teams 就要基于这个来做
    aptupdate
        25
    aptupdate  
       2022-03-22 11:01:14 +08:00
    Electron 开发者又何尝不希望这样呢,只是迫不得已。
    Kimen
        26
    Kimen  
       2022-03-22 11:12:49 +08:00
    @zhaozhao #15 感谢,学习了
    Arguments
        27
    Arguments  
       2022-03-22 11:13:40 +08:00 via iPhone
    @Kimen 可以试试 pnpm
    lqzhgood
        28
    lqzhgood  
       2022-03-22 11:15:46 +08:00
    说回来现在硬盘内存又不贵~
    vevy
        29
    vevy  
       2022-03-22 11:17:57 +08:00
    这不就是 pwa 吗
    cweijan
        30
    cweijan  
       2022-03-22 11:26:03 +08:00
    @sutaking pwa 有限制的, google 限制你啥你就只能用啥
    pengtdyd
        31
    pengtdyd  
       2022-03-22 13:23:04 +08:00
    现在的软件开发越来越不需要考虑包的大小了,因为现在的电脑也好手机也会容量够大,现在开发要考虑的是如何快速实现业务而不是考虑性能
    hazardous
        32
    hazardous  
       2022-03-22 13:44:13 +08:00
    直接写个 localhost 的本地服务就行了,nodejs 开撸。
    icyalala
        33
    icyalala  
       2022-03-22 13:52:56 +08:00
    kennir
        34
    kennir  
       2022-03-22 14:14:08 +08:00
    现在的设备 100 多 M 根本不是事啊,相对于去引用其他的模块(还是最核心的模块)带来的麻烦,肯定是现在这种方式更好

    不过我很讨厌 electron 的应用....和 os 之间的联系太弱了,在 macOS 上的分享,shortcuts 很难打通
    ruxuan1306
        35
    ruxuan1306  
       2022-03-22 14:48:25 +08:00
    自带全套依赖对运行环境没假设,就像直接拉容器镜像用起来方便,不然配个环境就得小半天。
    learningman
        36
    learningman  
       2022-03-22 14:51:33 +08:00
    @Kimen #6 pnpm 就是这么干的,全局维护唯一存储,剩下的用 hardlink 解决
    jfdnet
        37
    jfdnet  
       2022-03-22 16:02:38 +08:00
    其实不能跟 java 一样,出个 runtime 么?
    zhangneww
        38
    zhangneww  
       2022-03-22 16:21:49 +08:00
    如果 chrome 插件 API 扩展一下呢?每个 Electron 都变成一个浏览器插件岂不是更小?
    Rrrrrr
        39
    Rrrrrr  
       2022-03-22 16:22:06 +08:00
    @jfdnet eletron 就是把 runtime 打包一起了啊
    ziseyinzi
        40
    ziseyinzi  
       2022-03-22 16:28:36 +08:00
    electron 为什么不能共享也算是 V2 月经贴了
    Huelse
        41
    Huelse  
       2022-03-22 16:46:38 +08:00
    之前就遇到个应用调用的系统的 Chromium 内核和 Gecko 内核

    https://docs.shuax.com/MouseInc/#/
    Asyncway
        42
    Asyncway  
       2022-03-22 19:10:48 +08:00
    rust 有类似的东西
    jfdnet
        43
    jfdnet  
       2022-03-22 19:21:42 +08:00
    @Rrrrrr 所以不要打包在一起啊,出个 runtime 让有需要的用户可以单独安装,就不用每个项目都那么大文件了。所以说像 java 的方式为什么不可行?
    robinlovemaggie
        44
    robinlovemaggie  
       2022-03-22 19:42:56 +08:00
    @zhaozhao #15 pnpm does not work with electron
    lmoon
        45
    lmoon  
       2022-03-22 19:52:29 +08:00 via Android
    @robinlovemaggie 可以一起用啊,你自己没配好吧
    robinlovemaggie
        46
    robinlovemaggie  
       2022-03-22 20:08:26 +08:00
    dcsuibian
        47
    dcsuibian  
       2022-03-22 20:37:42 +08:00
    @Kimen 之前看到过一个评论:语言本身缺陷,node 基础库设计缺陷,早期社区核心开发者技术能力缺陷 => 大量语言扩展包泛滥 => 核心包依赖爆炸 => 版本问题,安全问题,性能问题 => 各种稀奇古怪的解决方案 => 更多问题

    我个人比较同意。Java 自带 package 这种模块化机制,自然而然地影响了 Maven 。
    而 js 一开始都不自带模块化语法,搞出来一堆 AMD 、CMD 、UMD 、IIFE 、CommonJS 这种,又追求简单。
    ychost
        48
    ychost  
       2022-04-18 19:07:41 +08:00
    大部分情况 PWA 就够了吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3395 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 11:46 · PVG 19:46 · LAX 03:46 · JFK 06:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.