创建子进程处理计算和读文件流,以及上传的逻辑,而不是放在渲染进程中。
创建子进程,子进程的程序怎么执行,放在什么位置,放在主进程中?
如果放在主进程中,渲染进程的数据如何传递到子进程,而且上传的逻辑是实时处理,这部分数据如何进行同步和更新
有一部分数据是放在 vuex 中,计算 MD5 值需要从 vuex 获取数据,子进程可以获取 vuex 中的数据么?
1
TomeWong OP 尝试了 node 的 child_process,放在了渲染进程,代码没有执行,但放在主进程数据如何同步和更新
|
2
tojonozomi 2020-04-09 16:46:03 +08:00
或者用 service worker ?反正数据拿到 worker 要走消息,拿到 child_process 的话要走 ipc
|
3
TomeWong OP @tojonozomi ipcRender 可以实时更新和同步数据么?
|
4
rabbbit 2020-04-09 16:53:05 +08:00
可以用 child_process.fork 配合 send 和 on("message")
|
6
vagary 2020-04-09 17:11:24 +08:00
印象里面,render 和 main 通信有 api 。先扔给 main,有需要的话,mian 和 child 继续通信。
是我的话,vuex 中没必要处理了,render 在得到相关的全部数据之后,一次扔给 main 算了。减轻管理 render 和 main 通信复杂度,同时还要兼顾 render 自己的逻辑。最多加个 vuex 里加个状态等着 main 是否处理完。 |
7
ArrayBuffer 2020-04-09 17:33:13 +08:00
感觉没必要创建子进程,在主进程处理就好了, 或者直接放到渲染进程 ...
|
8
TomeWong OP @ArrayBuffer 现在的处理是放在渲染进程中,但上传的的文件过多时,页面会出现卡顿,不响应,这个过程需要计算文件的 MD5 值,读文件流和上传
|
9
jason94 2020-04-09 18:40:27 +08:00
开个隐藏的 renderer 进程去做处理,vuex 中的数据走 ipc 或者 localStorage 都可以
|
10
duan602728596 2020-04-09 19:51:38 +08:00 via iPhone
上传文件,一定要用 fs 吗?如果用 File 对象上传的话,其实计算什么的反而可以放到 WebWorker 里来处理
|
11
vampuke 2020-04-10 10:24:06 +08:00
主进程用 mainWindow.webContents.send()发送给子进程
|
12
TomeWong OP @duan602728596 在 webworker 里不能使用 require
|