
最近尝试很多方法,来解决 electron 渲染进程上传大量文件的问题,也调研了一些。如下:
1 、手写 addon,使用 node-gyp 编译,奈何 c++不会啊,放弃
2 、将上传大量文件的处理逻辑移至主进程,但主进程进行大量的计算也需要阻塞,主进程阻塞会导致渲染进程交互 卡顿,甚至系统崩溃,也只好放弃。
3 、采用 web woker 来处理,electron 对应 web worker 没有集成远程的 node.js api,读取本地文件会有问题,这个需要如何处理,还在思考中。。。
4 、新建一个 hiden renderer 来处理,实际上就是新建一个隐藏的 Broswerwindow,这个可以如理读取本地文件,但设计到通信问题,也在搜索中?
各位大佬,如有思路,还请指点迷津,谢谢!!!
if you’re using a hidden renderer you can use the NodeJS fs module to access local files. This doesn’t work with web workers as they don’t support NodeJS integration.
这个是在medium上看到的一个大佬的回复 参考
1 Virace 2020-04-21 16:42:12 +08:00 via Android 难道是要所有文件一上传? |
3 Jirajine 2020-04-21 16:48:39 +08:00 via Android 用 go 单独写一个服务跟随主进程一起启动,通过 IPC 交互,逻辑都用 go 实现。 |
6 xcstream 2020-04-21 18:06:08 +08:00 Electron 有 node 进程 |
7 whypool 2020-04-21 18:13:51 +08:00 首先,上传走的异步,除非 dom 爆了,也不至于卡 ui 其次,看你描述应该是 js 内存爆了导致 如果上传文件没啥限制直接用 formdata 文件读写 node 有 stream,同步卡线程可以用异步流 |
8 tojonozomi 2020-04-21 19:03:09 +08:00 可以考虑 wasm,可以用很多语言,性能应该有原生的一半 |
9 charten 2020-04-21 19:55:00 +08:00 上传大量文件?是大文件还是大量文件?渲染进程 node 可以读流写流啊,这是 web 环境不具备的。基本上每个进程限制死 1g 内存的读写操作没啥问题的。electron 多进程,开多个窗口就是多进程了,可以嵌几个 iframe 进去 |
10 maichael 2020-04-21 20:03:13 +08:00 node 开个子进程去跑不就好了吗。 |
14 TomeWong OP @tojonozomi 暂时没有技术积累啊 |
15 axeprpr1 2020-04-22 23:33:20 +08:00 electron 可以用 node.js => let win = new BrowserWindow({ webPreferences: { nodeIntegrationInWorker: true } }) 或者用 webview 来处理,也不会卡 ui |
17 agoodob 2020-09-26 22:49:10 +08:00 请问最后怎么解决的呢? |