Electron 创建子进程处理 上传文件的 MD5 计算和上传逻辑 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
TomeWong
V2EX    程序员

Electron 创建子进程处理 上传文件的 MD5 计算和上传逻辑

  •  
  •   TomeWong 2020-04-09 16:29:11 +08:00 2859 次点击
    这是一个创建于 2023 天前的主题,其中的信息可能已经有所发展或是发生改变。

    创建子进程处理计算和读文件流,以及上传的逻辑,而不是放在渲染进程中。

    创建子进程,子进程的程序怎么执行,放在什么位置,放在主进程中?

    如果放在主进程中,渲染进程的数据如何传递到子进程,而且上传的逻辑是实时处理,这部分数据如何进行同步和更新

    有一部分数据是放在 vuex 中,计算 MD5 值需要从 vuex 获取数据,子进程可以获取 vuex 中的数据么?

    12 条回复    2020-04-10 12:03:28 +08:00
    TomeWong
        1
    TomeWong  
    OP
       2020-04-09 16:35:06 +08:00
    尝试了 node 的 child_process,放在了渲染进程,代码没有执行,但放在主进程数据如何同步和更新
    tojonozomi
        2
    tojonozomi  
       2020-04-09 16:46:03 +08:00
    或者用 service worker ?反正数据拿到 worker 要走消息,拿到 child_process 的话要走 ipc
    TomeWong
        3
    TomeWong  
    OP
       2020-04-09 16:49:32 +08:00
    @tojonozomi ipcRender 可以实时更新和同步数据么?
    rabbbit
        4
    rabbbit  
       2020-04-09 16:53:05 +08:00
    可以用 child_process.fork 配合 send 和 on("message")
    TomeWong
        5
    TomeWong  
    OP
       2020-04-09 17:01:57 +08:00
    @rabbbit 我试了,放在 render 进程没有执行,这部分是不是要放在 main 进程中
    vagary
        6
    vagary  
       2020-04-09 17:11:24 +08:00
    印象里面,render 和 main 通信有 api 。先扔给 main,有需要的话,mian 和 child 继续通信。
    是我的话,vuex 中没必要处理了,render 在得到相关的全部数据之后,一次扔给 main 算了。减轻管理 render 和 main 通信复杂度,同时还要兼顾 render 自己的逻辑。最多加个 vuex 里加个状态等着 main 是否处理完。
    ArrayBuffer
        7
    ArrayBuffer  
       2020-04-09 17:33:13 +08:00
    感觉没必要创建子进程,在主进程处理就好了, 或者直接放到渲染进程 ...
    TomeWong
        8
    TomeWong  
    OP
       2020-04-09 17:40:47 +08:00
    @ArrayBuffer 现在的处理是放在渲染进程中,但上传的的文件过多时,页面会出现卡顿,不响应,这个过程需要计算文件的 MD5 值,读文件流和上传
    jason94
        9
    jason94  
       2020-04-09 18:40:27 +08:00
    开个隐藏的 renderer 进程去做处理,vuex 中的数据走 ipc 或者 localStorage 都可以
    duan602728596
        10
    duan602728596  
       2020-04-09 19:51:38 +08:00 via iPhone
    上传文件,一定要用 fs 吗?如果用 File 对象上传的话,其实计算什么的反而可以放到 WebWorker 里来处理
    vampuke
        11
    vampuke  
       2020-04-10 10:24:06 +08:00
    主进程用 mainWindow.webContents.send()发送给子进程
    TomeWong
        12
    TomeWong  
    OP
       2020-04-10 12:03:28 +08:00
    @duan602728596 在 webworker 里不能使用 require
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5425 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 03:21 PVG 11:21 LAX 20:21 JFK 23:21
    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