Electron是一個(gè)使用 JavaScript、HTML 和 CSS 構(gòu)建桌面應(yīng)用程序的框架磕秤。 嵌入 Chromium 和 Node.js 到 二進(jìn)制的 Electron 允許您保持一個(gè) JavaScript 代碼代碼庫(kù)并創(chuàng)建 在Windows上運(yùn)行的跨平臺(tái)應(yīng)用 macOS和Linux——不需要本地開(kāi)發(fā) 經(jīng)驗(yàn)脐湾。
- 文件目錄該如何建立臭笆,你至少需要如下三個(gè)進(jìn)程:
- main進(jìn)程
該目錄下面主要用于處理主進(jìn)程的一些操作,比如操作文件秤掌、操作服務(wù)愁铺、窗口的處理等。 - render進(jìn)程
該進(jìn)程主要是ui的一些處理闻鉴。 - common
有一些公共的函數(shù)或者其他的東西在common中定義
- main進(jìn)程
- 請(qǐng)關(guān)閉
nodeIntegration
- 在渲染進(jìn)程中為了安全起見(jiàn)不要去操作底層茵乱,渲染進(jìn)程只做ui渲染就好,如果你真的需要某些模塊孟岛,請(qǐng)使用
preload
瓶竭。 - 如果你希望你的渲染進(jìn)程通過(guò)微小的改動(dòng)就可以運(yùn)行到web端,關(guān)閉該選項(xiàng)是個(gè)明智的選擇渠羞,該選項(xiàng)可能會(huì)使你的代碼和主進(jìn)程嚴(yán)重耦合斤贰。
- 在渲染進(jìn)程中為了安全起見(jiàn)不要去操作底層茵乱,渲染進(jìn)程只做ui渲染就好,如果你真的需要某些模塊孟岛,請(qǐng)使用
- 如何管理渲染進(jìn)程的窗口?
- 不要let一堆全局變量次询,你需要一個(gè)Map數(shù)據(jù)結(jié)構(gòu)去管理你的窗口
- 在生成多個(gè)渲染進(jìn)程窗口后腋舌,你會(huì)發(fā)現(xiàn)你大多數(shù)配置項(xiàng)完全類(lèi)似,加載的流程也幾乎一摸一樣渗蟹,此時(shí)此刻我們需要將窗口的生成方式封裝一下块饺。我在項(xiàng)目中封裝了一個(gè)類(lèi)似vuerouter的可配置的功能,后續(xù)會(huì)考慮公開(kāi)雌芽,請(qǐng)關(guān)注授艰。
- 進(jìn)程間通信的問(wèn)題
-
把進(jìn)程間通信的方式改成api的方式,比如:
ipcRenderer.send('message', message) // 修改為 export funtion sendMessage (message) { ipcRenderer.send('message', message) }
這種方式的好處世落,如果有一天我們渲染進(jìn)程的代碼需要運(yùn)行在其他環(huán)境淮腾,我只需要實(shí)現(xiàn)一個(gè)sendMessage的功能即可。
-
通過(guò)ts重寫(xiě)進(jìn)程通信的類(lèi)型
- 優(yōu)點(diǎn):好處很明顯,比如我們?cè)阡秩景l(fā)送某些事件的時(shí)候谷朝,我們?cè)阡秩具M(jìn)程只能監(jiān)聽(tīng)這些事件洲押,一旦我們監(jiān)聽(tīng)了不存在的事件就會(huì)報(bào)錯(cuò)。
- 缺點(diǎn):我們需要花費(fèi)一些時(shí)間去重寫(xiě)ts類(lèi)型和聲明事件類(lèi)型圆凰。
-
- 狀態(tài)管理
考慮一下electron-store - 日志(建議使用electron-log)
首先一個(gè)穩(wěn)定的系統(tǒng)肯定需要一個(gè)優(yōu)秀的錯(cuò)誤收集系統(tǒng)杈帐。- 我們需要可以上報(bào)錯(cuò)誤的接口,當(dāng)用戶量小的時(shí)候我們不需要擔(dān)心流量和存儲(chǔ)等問(wèn)題专钉,當(dāng)用戶量大的時(shí)候可以考慮采樣收集挑童。收集部分用戶。
- 在某些時(shí)候跃须,上傳的錯(cuò)誤并不足以解決用戶問(wèn)題的時(shí)候站叼,我們需要提供用戶可以手動(dòng)上傳本地日志的功能,本地日志通過(guò)electron-log去做菇民。
- 不需要本地開(kāi)發(fā)經(jīng)驗(yàn)尽楔?
- 我們?cè)诤芏鄷r(shí)候會(huì)去操作文件系統(tǒng),嘗試使用nodejs的
fs
模塊或者fs-extra
- 當(dāng)遇到nodejs和瀏覽器都無(wú)法解決的問(wèn)題的時(shí)候第练,我們需要c++翔试,通過(guò)n-api去開(kāi)發(fā)一些原生模塊
- 我們?cè)诤芏鄷r(shí)候會(huì)去操作文件系統(tǒng),嘗試使用nodejs的