Login
Sign Up For Free
English
中文 (繁體)
中文 (香港)
中文 (简体)
日本語
Filipino
Bahasa Indonesia
Bahasa Melayu
Pусский
Português (Brasil)
Magyar
Français
Español
Deutsch
Čeština
العربية
Català
Dansk
Ελληνικά
فارسی
Suomi
Gaeilge
Hindi
עברית
Hrvatski
Italiano
Norsk bokmål
Nederlands
한국어
Polski
Română
Slovenský
Svenska
Türkçe
українська
беларуская
ไทย
Standard view
Lastor
1 weeks ago
[Coding] 好聰明喔,在研究 vite-plugin-electron 是怎麼 handle Electron 程序的生命週期
Responses
disabled
for others than plurk poster
latest #12
Lastor
1 weeks ago
看到他會把 spwan 出來的 electron child_process 給存到 global 的 process 上面
Lastor
1 weeks ago
我就很納悶,他又沒在其他地方用到他,為什麼要存在 global?
Lastor
1 weeks ago
研究了一下發現算是個針對 vite 的 hack
立即下載
Lastor
1 weeks ago
因為這是在 vite serve 啟動時,執行 vite.config 的程序,在裡面去 spwan 子程序
Lastor
1 weeks ago
而 vite.config 本身是有做熱更新的,如果在啟動的狀態下去改 vite.config,那 plugin 會整個重跑
Lastor
1 weeks ago
與 src 的檔案 onChange 熱更新不一樣,正常改專案的檔案去熱更新,是不會觸發 vite.config 重跑的
Lastor
1 weeks ago
由於是整個 vite.config 被重新執行,所以正常用 let + 閉包手法去存的 electron process 會直接掉了,導致 if 判斷無法知道已經有一個 electron 被開起來
Lastor
1 weeks ago
然而 vite.config 的 reload 本身,只是重新加載執行 config,vite 起的 node 進程並沒有 restart
Lastor
1 weeks ago
所以存在 process 裡面的東西還會存在!!
Lastor
1 weeks ago
套件作者就是用這樣有點 hack 的方式,把 electron child 存到 global process 上,這樣 vite config 重跑的時候,他就可以偵測到上一個 electron 是否存在
Lastor
1 weeks ago
如果是用正規手段,應該是要去監聽 vite dev server 的 onClose 事件,可是這會讓起動 Electron 這件事被限制住,他就很難暴露出去讓 user 自定義
Lastor
1 weeks ago
乾脆存到 global process 上面,直接解決了許多的問題
back to top
delete
reply
edit
cancel
cancel