W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
備注:Electron 的原名是 Atom Shell。
與 NW.js 相似,Electron 提供了一個(gè)能通過 JavaScript 和 HTML 創(chuàng)建桌面應(yīng)用的平臺(tái),同時(shí)集成 Node 來授予網(wǎng)頁訪問底層系統(tǒng)的權(quán)限。
但是這兩個(gè)項(xiàng)目也有本質(zhì)上的區(qū)別,使得 Electron 和 NW.js 成為兩個(gè)相互獨(dú)立的產(chǎn)品。
1. 應(yīng)用的入口
在 NW.js 中,一個(gè)應(yīng)用的主入口是一個(gè)頁面。你在 package.json
中指定一個(gè)主頁面,它會(huì)作為應(yīng)用的主窗口被打開。
在 Electron 中,入口是一個(gè) JavaScript 腳本。不同于直接提供一個(gè)URL,你需要手動(dòng)創(chuàng)建一個(gè)瀏覽器窗口,然后通過 API 加載 HTML 文件。你還可以監(jiān)聽窗口事件,決定何時(shí)讓應(yīng)用退出。
Electron 的工作方式更像 Node.js 運(yùn)行時(shí)。 Electron 的 APIs 更加底層,因此你可以用它替代 PhantomJS 做瀏覽器測試。
2. 構(gòu)建系統(tǒng)
為了避免構(gòu)建整個(gè) Chromium 帶來的復(fù)雜度,Electron 通過 libchromiumcontent
來訪問 Chromium 的 Content API。libchromiumcontent
是一個(gè)獨(dú)立的、引入了 Chromium Content 模塊及其所有依賴的共享庫。用戶不需要一個(gè)強(qiáng)勁的機(jī)器來構(gòu)建 Electron。
3. Node 集成
在 NW.js,網(wǎng)頁中的 Node 集成需要通過給 Chromium 打補(bǔ)丁來實(shí)現(xiàn)。但在 Electron 中,我們選擇了另一種方式:通過各個(gè)平臺(tái)的消息循環(huán)與 libuv 的循環(huán)集成,避免了直接在 Chromium 上做改動(dòng)。你可以看 node_bindings
來了解這是如何完成的。
4. 多上下文
如果你是有經(jīng)驗(yàn)的 NW.js 用戶,你應(yīng)該會(huì)熟悉 Node 上下文和 web 上下文的概念。這些概念的產(chǎn)生源于 NW.js 的實(shí)現(xiàn)方式。
通過使用 Node 的多上下文特性,Electron不需要在網(wǎng)頁中引入新的 JavaScript 上下文。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: