基于 electron 的桌面端工具箱 rubick 重新设计 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
muwoo
V2EX    分享创造

基于 electron 的桌面端工具箱 rubick 重新设计

  •  
  •   muwoo/a> 2022-01-07 11:02:54 +08:00 2935 次点击
    这是一个创建于 1427 天前的主题,其中的信息可能已经有所发展或是发生改变。

    欢迎前往体验 rubick

    基于 npm 的插件管理模式

    刚开始设计插件管理的方式是将插件打包成 .zip 的压缩包,然后再将压缩包上传到 CDN 上,点击安装再 download 下来进行解压。但是这样有几个弊端

    1. 需要一个数据存储服务器,来存储这些压缩包文件,那么这需要一笔费用,这对于一个开源开发者来说很难维持下去。
    2. 打包机制和解压机制繁琐,对开发者不友好

    直到我看到 PicGo 作者关于 PicGo 插件设计思路的文章,我突然觉得基于 npm 的包管理方式不正是我想要的吗,既轻量有省了一笔服务器存储开销: PicGo 插件设计 但这其实也有另一个问题,因为是基于 npm 的管理模式,所以需要开发者提前安装 node 环境,才可以使用 npm。但这在目前是可以接受的,因为 Rubick 的目前定位也是为开发者服务的开源工具箱。

    当你点安装插件的时候,其实执行的就是 npm install xxx.

    拓展系统插件能力

    Rubick 另一个最大的能力就是支持系统插件,有了系统插件,我们就可以不用受限于必须搜索使用插件了,只要 rubick 在运行,插件就在运行。这对于一些特殊的场景来说是非常有价值的事情,比如我要实现一个定时提醒喝水的插件,如果我退出了插件界面,可能就无法实现。但是要做成了系统插件,即使退出了插件,但rubick依旧会在后台运行插件提供的hooks。这个灵感也是来自于 PicGo 的插件生命周期设计。下面来演示系统插件:

    QQ20211224-164014.gif

    有了系统插件,我们就可以实现 屏幕取色插件定时提醒插件超级面板插件... 另外,由于 rubick 的系统插件是运行在 main 进程的,所以,我们可以通过系统插件做到更多的能力,比如把 rubick 就看出是 electron 的二次封装,不需要任何 electron 的构建打包,基于系统插件,我们可以实现另一个桌面端应用!

    Rebron1900
        1
    Rebron1900  
       2022-01-07 12:14:45 +08:00
    希望尽快完善
    junhao999
        2
    junhao999  
       2022-01-08 11:15:47 +08:00   1
    感觉有点像 utools
    kerinlin
        3
    kerinlin  
       2022-01-11 11:20:51 +08:00
    这不就是 utools 吗,不过 utools 没开源,这个开源了,还是可以的
    muwoo
        4
    muwoo  
    OP
       2022-01-11 19:29:14 +08:00
    @kerinlin 交互设计参考了 utools ,但整体的架构方案完全不一样哦,插件我们是基于 npm 的管理模式,所以自带支持内网部署,只需要将 npm 源改为自由的即可。
    同时支持系统插件,这是 utools 做不到的。所以像超级面板、取色器等等功能都可以抽出插件来
    hansonfang
        5
    hansonfang  
       2022-01-12 10:09:06 +08:00
    正好我们想做个工具箱,感觉搞个插件就能直接用了
    Yenben
        6
    Yenben  
       2022-01-18 11:21:03 +08:00
    给力
    slime7
        7
    slime7  
       2022-02-15 15:28:09 +08:00
    你把 npm 打包进应用里不就不用安装 node 环境就可以装插件了吗,electron 本身就包含了 node ,。看看 poi 的插件安装设计,直接把你执行`npm install xxx`的部分换成`path/to/npm/bin/npm-cli.js install xxx`就行了
    muwoo
        8
    muwoo  
    OP
       2022-02-22 13:23:31 +08:00
    @slime7 这个意见很棒,确实可以实现的,感谢
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2604 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 15:24 PVG 23:24 LAX 07:24 JFK 10: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