99re热视频这里只精品,久久久天堂国产精品女人,国产av一区二区三区,久久久精品成人免费看片,99久久精品免费看国产一区二区三区

Electron 和 NW.js (原名 node-webkit) 在技術(shù)上的差異

2018-10-08 18:05 更新

備注:Electron 的原名是 Atom Shell。

與 NW.js 相似,Electron 提供了一個(gè)能通過(guò) JavaScript 和 HTML 創(chuàng)建桌面應(yīng)用的平臺(tái),同時(shí)集成 Node 來(lái)授予網(wǎng)頁(yè)訪問(wèn)底層系統(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è)頁(yè)面。你在 package.json 中指定一個(gè)主頁(yè)面,它會(huì)作為應(yīng)用的主窗口被打開。

在 Electron 中,入口是一個(gè) JavaScript 腳本。不同于直接提供一個(gè)URL,你需要手動(dòng)創(chuàng)建一個(gè)瀏覽器窗口,然后通過(guò) API 加載 HTML 文件。你還可以監(jiān)聽窗口事件,決定何時(shí)讓應(yīng)用退出。

Electron 的工作方式更像 Node.js 運(yùn)行時(shí)。 Electron 的 APIs 更加底層,因此你可以用它替代 PhantomJS 做瀏覽器測(cè)試。

2. 構(gòu)建系統(tǒng)

為了避免構(gòu)建整個(gè) Chromium 帶來(lái)的復(fù)雜度,Electron 通過(guò) libchromiumcontent 來(lái)訪問(wèn) Chromium 的 Content API。libchromiumcontent 是一個(gè)獨(dú)立的、引入了 Chromium Content 模塊及其所有依賴的共享庫(kù)。用戶不需要一個(gè)強(qiáng)勁的機(jī)器來(lái)構(gòu)建 Electron。

3. Node 集成

在 NW.js,網(wǎng)頁(yè)中的 Node 集成需要通過(guò)給 Chromium 打補(bǔ)丁來(lái)實(shí)現(xiàn)。但在 Electron 中,我們選擇了另一種方式:通過(guò)各個(gè)平臺(tái)的消息循環(huán)與 libuv 的循環(huán)集成,避免了直接在 Chromium 上做改動(dòng)。你可以看 node_bindings 來(lái)了解這是如何完成的。

4. 多上下文

如果你是有經(jīng)驗(yàn)的 NW.js 用戶,你應(yīng)該會(huì)熟悉 Node 上下文和 web 上下文的概念。這些概念的產(chǎn)生源于 NW.js 的實(shí)現(xiàn)方式。

通過(guò)使用 Node 的多上下文特性,Electron不需要在網(wǎng)頁(yè)中引入新的 JavaScript 上下文。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)