为什么没有精简 WebKit? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
powersee
V2EX    浏览器

为什么没有精简 WebKit?

  •  
  •   powersee 2 天前 3949 次点击

    libcef 非常大,webview2 又有跨平台兼容问题,为什么没有人精简 WebKit 呢?

    WebKit 编译时提供了非常多的开关,例如:--no-video 、--no-webgl


    如果有人基于 WebKit 做一个精简的 Web 运行时,并且把 JavascriptCore 替换成 QuickJS 我觉得应该很受欢迎。

    WebKit 的三个模块:WebKit2 、WebCore 、JavascriptCore

    WebCore:可以去掉不需要的:Canvas 、音视频解码器、PDF 、WebGL 、拼音检查等等 JavascriptCore:可以换成 QuickJS

    (虽然 QuickJS 没有 JIT ,但是核心模块可以用 C++、C#、Rust 等语言代替

    我觉得整个下来,使用 7z 压缩后,应该可以控制在 10-15M 甚至更小

    46 条回复    2025-11-05 14:45:03 +08:00
    zhizunzz
        1
    zhizunzz  
       2 天前 via Android
    哥,首先我对你说的这些东西只有个概念,但是我觉得你说的是个实在的需求,没人做的话不正好趁机赚他一个亿么,不需要纠结为什么
    powersee
        2
    powersee  
    OP
       2 天前 via iPhone
    @zhizunzz #1 我没有这个技术,只是突发奇想
    hefish
        3
    hefish  
       2 天前
    是啊,为什么这么好的需求没人做呢,别人肯定都是没想到,而我也和 op 一样想到了。
    wwwcomcn
        4
    wwwcomcn  
       2 天前   1
    早有大佬做过这块了。
    https://github.com/weolar/miniblink49
    gucheen
        5
    gucheen  
       2 天前
    因为不用好
    你应该庆幸 Google 选择 fork webkit 研发了 blink ,以至于现在 Chromium 系能有这么出色的表现
    我不明白你怎么会觉得你这一套设计会很好用?都不说你为什么会觉得 JavascriptCore 替换成 QuickJS 会很受欢迎。
    Apple 又不是没做过 windows 版的 Safari ,估计只有真果粉能用得下去
    codehz
        6
    codehz  
       2 天前
    游戏领域已经有了啊,比如 Ultralight 就是裁剪的 webkit
    Isuxiz
        7
    Isuxiz  
       2 天前   1
    @龙泉寺扫地僧
    wangtian2020
        8
    wangtian2020  
       2 天前
    没人在意大不大,反正我不在意,又不是我在意
    jeesk
        9
    jeesk  
       2 天前
    我觉得很有前途,这个需要很大, 建议楼主上手亲自操刀.
    lambdaq
        10
    lambdaq  
       2 天前
    有人做。然后被黑产疯狂利用。
    lisongeee
        11
    lisongeee  
       2 天前
    你的收益貌似只有降低文件大小,但绝大多数普通用户根本不关心这点
    Lockroach
        12
    Lockroach  
       2 天前
    你可以试着做做,说不定呢
    powersee
        13
    powersee  
    OP
       2 天前
    @wwwcomcn #4 这个好像也不小了,现在要 40-50MB 了,看作者说 Chromium 耦合性太大了

    @gucheen #5 精简 WebKit 目的应该是为了解决渲染问题而不是性能问题,因为 JavascriptCore 替换成 QuickJS 后,JS 的性能会非常低,所以核心逻辑全都要使用编译型语言写。

    @Lockroach #12 如果是 Java ,我还可以试试。C++ 就难了
    miniliuke
        14
    miniliuke  
       2 天前
    @lambdaq 话说黑产用这个干啥?减少安装包体积节省成本?
    shunia
        15
    shunia  
       2 天前
    听起来很复杂?收益抵得上这么复杂的实现流程吗?而且搞了半天最后还是依赖 Webkit ,后面维护起来也坑吧。

    所以现在时兴从头开始写浏览器
    Vogan
        16
    Vogan  
       2 天前
    想想就很费钱。吃力不讨好的事,谁愿意干谁去干。
    unixipc
        17
    unixipc  
       2 天前
    这个 codebase 非常难搞,精简太难了
    qrobot
        18
    qrobot  
       1 天前
    @powersee 投入和收入不成正比。 并且 QuickJS 和 v8 比,QuickJS 慢了不少,QuickJS 所谓快是阉割功能导致。
    qrobot
        19
    qrobot  
       1 天前
    @powersee 你自己看看性能报告, 目前基本没人能超过 v8, 其次 QuickJS 比 v8 差的不是一点点,是非常非常多
    IDAEngine
        20
    IDAEngine  
       1 天前
    @powersee 把 ffmpeg 音视频库删掉就小了
    szdubinbin
        21
    szdubinbin  
       1 天前
    目前国内有意愿和能力去做,并且已经非常成功的给开发者/用户喂 shit 的只有 qq 浏览器的 x5 一家,也就是上面提到的扫地僧的老东家。大佬在知乎算是比较分享干货的,有很多文章介绍这块的原理可以参考,其中一篇: https://www.zhihu.com/question/290767285/answer/1200063036?utm_campaign=rss&utm_medium=rss&utm_source=rss&utm_cOntent=title
    ysc3839
        22
    ysc3839  
       1 天前 via Android
    WebKit 跨平台的潜在隐患更多吧?
    苹果目前除了自家平台,应该只在 Windows iTunes 中使用 WebKit ,用户量极少。相比 Chrome 有大量用户踩坑,WebKit 很有可能存在许多未被发现的问题或隐患,性能优化可能也不如 Chrome 。
    imicksoft
        23
    imicksoft  
       1 天前
    @miniliuke 模拟网页操作,读取和写入 cookie 换账号很方便,账号批量操作发帖
    MindMindMax
        24
    MindMindMax  
       1 天前
    https://sciter.com/ 几十年历史的老牌子了。
    14
        25
    14  
       1 天前
    总有人需要一小部份功能,比如你这里举的例子 Canvas 和 PDF 我都需要,那我是不是用不了这个了?
    powersee
        26
    powersee  
    OP
       1 天前 via iPhone
    @qrobot #18 要的是 WebKit 跨平台和 HTML5+CSS3 的特性,JS 部分可以用原生代码编译,例如 C++、C# 等


    @szdubinbin #21 毕竟公司是追求利润和商业化的


    @14 #25 大多数 GUI 是用不到这些的
    flynaj
        27
    flynaj  
       1 天前 via Android
    大小小了,功能就少了,我的网页在其它浏览器上都正常,在你浏览器上就不正常,这个问题怎么解决?
    powersee
        28
    powersee  
    OP
       1 天前 via iPhone
    @flynaj #27 我觉得精简 WebKit 的目的是创造一个更好的 GUI 框架,开发者应该知道哪些特性可以用,哪些不能用。


    @MindMindMax #24 有点子东西啊,好像是自己实现的渲染引擎
    faywong8888
        29
    faywong8888  
       1 天前
    浏览器是一个 all in one 架构,换一个螺丝得把发动机里里外外全部改一遍,持续维护迭代成本极高,你说的这些轮子体积小了,但性能/功能并不全面,对完整 w3c 特性是有折损的,这个权衡取舍后的都是分散的场景化小需求。其次纯浏览器引擎、精简优化没有商业模式,没有经济收益可言。所以你说的这件事并没有持续地发生过。
    powersee
        30
    powersee  
    OP
       1 天前 via iPhone
    @faywong8888 #29 没有良好的商业模式的确很难让人有动力搞这个
    qrobot
        31
    qrobot  
       1 天前
    @powersee v8 就是这样做的啊, 部分麻烦的地方用 js 来替代, 否则你写 C++ 搞死你, 至于 C# ? 除非脑子有水才会用这个。 这个和 Java 一样有个垃圾回收, 而且性能还差.

    而且你说的这些又不是没有 https://github.com/litehtml/litehtml
    powersee
        32
    powersee  
    OP
       1 天前
    @qrobot #31 v8 大啊,而且有些应用根本不需要高性能的脚本执行能力 + 渲染能力。

    譬如:Postman: 就是一个管理 API 管理程序,用不到 Chromium 这么强大的东西吧?其中的 Script 功能用 QuickJS 代替应该也是可以的
    qrobot
        33
    qrobot  
       1 天前
    @powersee #31 所以性能差啊, 你觉得 chromium 团队会放弃高性能的 v8, 转而投向低性能的 QuickJS 吗? 除非脑袋被驴踢了。


    功能大,自然体积就大, 功能少自然体积就少。 你看看商业化的 sciter 都不知道阉割了多少功能了。


    你要是希望把体积做小。 那么就用 wxwidget.


    既要有要还想要, 这是不可能的
    qrobot
        34
    qrobot  
       1 天前
    @powersee 说难听一点 vc++ runtime 还有 6mb, 然后又要解决 vc++ 不同 runtime 的依赖问题。 然后在打包 vc++ 检查用户有没有, 如果没有就自动安装对吧? 你看看 steam 的发展史就知道了。 安装软件体积从来不是问题。 软件质量才是
    powersee
        35
    powersee  
    OP
       1 天前
    @qrobot #33 你没明白我意思,我的意思是有些程序不需要那么高的性能。如果只是做一个日历程序完全用不到 v8 吧?
    rarpainting
        36
    rarpainting  
       23 小时 3 分钟前
    其实我不太理解为什么要做一个精简的 Web 运行时,用 web 框架不就是图它 all in one 嘛?如果是精简系统,跨平台框架不缺吧,需求不明
    powersee
        37
    powersee  
    OP
       22 小时 24 分钟前
    @rarpainting #36 cef 和 chromium 太大了,打出来的包差不多 100Mb ,精简之后只需要 HTML5+CSS3 排版,音视频、WebGL 、Canvas 等都可以去掉
    KinBob
        38
    KinBob  
       20 小时 20 分钟前
    op 如果能做出来,按开发结果精确裁剪的工具,那还是超级厉害的
    a4390509
        39
    a4390509  
       17 小时 37 分钟前
    可以去知乎关注下#7 兄弟 @的大佬,最新好像在做这部分内容
    qrobot
        40
    qrobot  
       5 小时 22 分钟前
    @powersee 这不是有精简的吗? https://github.com/litehtml/litehtml 发给给你了, 你又不愿意用
    powersee
        41
    powersee  
    OP
       5 小时 19 分钟前 via iPhone
    @qrobot #40 我不需要这种东西,我目前也不需要精简的 webkit ,我只是突发奇想所以问问大家。
    powersee
        42
    powersee  
    OP
       5 小时 13 分钟前 via iPhone
    @qrobot #40 这个 litehtml 比 WebKit 渲染效果差远了吧?(指的是对 H5 、CSS3 的兼容性,排版等等
    qrobot
        43
    qrobot  
       2 小时 16 分钟前
    @powersee #42 你说了, 又要效果好, 又要体积小, 你觉得可能吗?

    你看一下 webkit 的依赖就知道了。 编译下来不可能小的。
    qrobot
        44
    qrobot  
       2 小时 14 分钟前
    @powersee 你自己看看 tauri 打包出来的大小难道能小吗?

    大小 1.8MB + 167.7 MB (webview2 runtime)
    qrobot
        45
    qrobot  
       2 小时 9 分钟前
    @powersee 你自己去看看 vc++ 的 runtime 大小就知道了。 任何程序除非是脚本去调用已存在的,否则就不可能小。

    我跟你解释一下 vc++ runtime 指的是 是一套用于支持用 C++ 编写的应用程序在 Windows 操作系统上运行的必需库文件。

    你要是真的搞过客户端开发就知道了。 哪怕是你用汇编开发, 该大的还是会大。 除非你是脚本小子, 上来就 `Invoke-WebRequest` 那当我没说
    powersee
        46
    powersee  
    OP
       39 分钟前
    @qrobot #43 真搞不懂你和我杠什么
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5360 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 07:24 PVG 15:24 LAX 23:24 JFK 02:24
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86