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

2020-04-09 16:29:11 +08:00
 TomeWong

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

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

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

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

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/660847

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX