Electron是一個使用 JavaScript、HTML 和 CSS 構建桌面應用程序的框架。 嵌入 Chromium 和 Node.js 到 二進制的 Electron 允許您保持一個 JavaScript 代碼代碼庫并創建 在Windows上運行的跨平臺應用 macOS和Linux——不需要本地開發 經驗。
- 文件目錄該如何建立,你至少需要如下三個進程:
- main進程
該目錄下面主要用于處理主進程的一些操作,比如操作文件、操作服務、窗口的處理等。 - render進程
該進程主要是ui的一些處理。 - common
有一些公共的函數或者其他的東西在common中定義
- main進程
- 請關閉
nodeIntegration
- 在渲染進程中為了安全起見不要去操作底層,渲染進程只做ui渲染就好,如果你真的需要某些模塊,請使用
preload
。 - 如果你希望你的渲染進程通過微小的改動就可以運行到web端,關閉該選項是個明智的選擇,該選項可能會使你的代碼和主進程嚴重耦合。
- 在渲染進程中為了安全起見不要去操作底層,渲染進程只做ui渲染就好,如果你真的需要某些模塊,請使用
- 如何管理渲染進程的窗口?
- 不要let一堆全局變量,你需要一個Map數據結構去管理你的窗口
- 在生成多個渲染進程窗口后,你會發現你大多數配置項完全類似,加載的流程也幾乎一摸一樣,此時此刻我們需要將窗口的生成方式封裝一下。我在項目中封裝了一個類似vuerouter的可配置的功能,后續會考慮公開,請關注。
- 進程間通信的問題
-
把進程間通信的方式改成api的方式,比如:
ipcRenderer.send('message', message) // 修改為 export funtion sendMessage (message) { ipcRenderer.send('message', message) }
這種方式的好處,如果有一天我們渲染進程的代碼需要運行在其他環境,我只需要實現一個sendMessage的功能即可。
-
通過ts重寫進程通信的類型
- 優點:好處很明顯,比如我們在渲染發送某些事件的時候,我們在渲染進程只能監聽這些事件,一旦我們監聽了不存在的事件就會報錯。
- 缺點:我們需要花費一些時間去重寫ts類型和聲明事件類型。
-
- 狀態管理
考慮一下electron-store - 日志(建議使用electron-log)
首先一個穩定的系統肯定需要一個優秀的錯誤收集系統。- 我們需要可以上報錯誤的接口,當用戶量小的時候我們不需要擔心流量和存儲等問題,當用戶量大的時候可以考慮采樣收集。收集部分用戶。
- 在某些時候,上傳的錯誤并不足以解決用戶問題的時候,我們需要提供用戶可以手動上傳本地日志的功能,本地日志通過electron-log去做。
- 不需要本地開發經驗?
- 我們在很多時候會去操作文件系統,嘗試使用nodejs的
fs
模塊或者fs-extra
- 當遇到nodejs和瀏覽器都無法解決的問題的時候,我們需要c++,通過n-api去開發一些原生模塊
- 我們在很多時候會去操作文件系統,嘗試使用nodejs的