Electron 詞匯表

2023-02-16 17:17 更新

這篇文檔解釋了一些經(jīng)常在 Electron 開(kāi)發(fā)中使用的專業(yè)術(shù)語(yǔ)。

ASAR

ASAR 表示 Atom Shell Archive Format。 一個(gè) asar 檔案就是一個(gè)簡(jiǎn)單的 tar 文件 - 比如將那些有關(guān)聯(lián)的文件放至一個(gè)單獨(dú)的文件格式中。 Electron 能夠任意讀取其中的文件并且不需要解壓整個(gè)文件。

ASAR格式是為了在Windows系統(tǒng)讀取大量的小文件時(shí) (比如像從node_modules加載應(yīng)用的JavaScript依賴關(guān)系樹(shù)) 提高性能。

code signing(代碼簽名)?

代碼簽名是一個(gè)過(guò)程,其中應(yīng)用開(kāi)發(fā)人員對(duì)其代碼進(jìn)行數(shù)字簽名以 確保代碼在打包后未被篡改。 Windows 和 macOS 都實(shí)現(xiàn)了自己的代碼簽名版本。 作為桌面應(yīng)用開(kāi)發(fā)人員, 如果您計(jì)劃將代碼分發(fā)給 公眾,則必須對(duì)代碼進(jìn)行簽名。

context isolation(上下文隔離)

上下文隔離是 Electron 中的一項(xiàng)安全措施,可確保 預(yù)加載腳本不會(huì)將擁有優(yōu)先權(quán)的 Electron 或 Node.js API 泄漏到 Web 渲染器進(jìn)程中的內(nèi)容。 啟用上下文隔離后,從預(yù)加載腳本公開(kāi) API 的唯 方法是通過(guò) contextBridge API。

CRT?

C 運(yùn)行時(shí)庫(kù) (CRT) 是包含了 ISO C99 標(biāo)準(zhǔn)庫(kù)的 C++ 標(biāo)準(zhǔn)庫(kù)的一部分。 實(shí)現(xiàn)了 CRT 的 Visual C++ 庫(kù)支持本機(jī)代碼開(kāi)發(fā), 以及混合的本機(jī)和托管代碼, 以及用于 .NET 開(kāi)發(fā)的純托管代碼。

DMG?

是指在 macOS 上使用的蘋果系統(tǒng)的磁盤鏡像打包格式。 DMG 文件通常被用來(lái)分發(fā)應(yīng)用的 "installers"。

IME?

輸入法編輯器. 是一個(gè)允許用戶輸入在鍵盤上找不到的字符和符號(hào)的程序。 例如,使用戶可以用拉丁語(yǔ)鍵盤輸入中文,日文,韓文和印度文字。

IDL?

接口描述語(yǔ)言(Interface Description Language)。 撰寫函數(shù)簽名與數(shù)據(jù)類型的格式語(yǔ)言,可用于生成 Java、C++ 和 JavaScript 等語(yǔ)言中的接口。

IPC?

IPC 代表進(jìn)程間通信。 Electron使用IPC在主進(jìn)程和渲染器進(jìn)程之間發(fā)送 序列化的JSON消息。

main process

主進(jìn)程,通常是指 main.js 文件,是每個(gè) Electron 應(yīng)用的入口文件。 控制著整個(gè)應(yīng)用的生命周期,從打開(kāi)到關(guān)閉。 它也管理著系統(tǒng)原生元素比如菜單,菜單欄,Dock 欄,托盤等。 主進(jìn)程負(fù)責(zé)創(chuàng)建 APP 的每一個(gè)渲染進(jìn)程。 包含了全功能的 Node API。

應(yīng)用的主進(jìn)程定義在 package.json 中的 main 屬性中。 當(dāng)您運(yùn)行 electron . 時(shí) Electron 便會(huì)知道需要運(yùn)行哪個(gè)文件。

在Chromium中,此進(jìn)程被稱為“瀏覽器進(jìn)程”。 Electron 中這樣稱呼是為了不與渲染進(jìn)程混淆。

MAS?

這是蘋果 Mac App Store 的縮寫。

Mojo?

一種用于進(jìn)程內(nèi)部或進(jìn)程間通信的 IPC 系統(tǒng), 這很重要, 因?yàn)?Chrome會(huì)依據(jù)內(nèi)存壓力等來(lái)決定是否將其工作分拆給不同的進(jìn)程。

可參考https://chromium.googlesource.com/chromium/src/+/main/mojo/README.md

MSI?

在 Windows上,Windows 安裝程序 (也稱為Microsoft Installer) 服務(wù)使用MSI軟件包來(lái)安裝和配置 應(yīng)用程序。

更多信息可以在 微軟的文檔 中找到。

native modules?

原生模塊(在 Node.js 中也稱為 addon)是用C/C++寫成的,可以在 Node.js 中加載,或通過(guò) require() 函數(shù)在 Electron 中引入的模塊。這些模塊用起來(lái)與普通的Node.js模塊并無(wú)二致。 它主要用于橋接在 JavaScript 上運(yùn)行 Node.js 和 C/C++ 的庫(kù)。

Electron 支持原生的 Node 模塊,但是 Electron 非常可能使用了和你系統(tǒng)中安裝的Node所不一樣的 V8 版本,所以在構(gòu)建原生模塊的時(shí)候你需要手動(dòng)指定 Electron 所使用的頭文件的位置。

notarization(公證化)?

公證是一個(gè)特定于 macOS 的過(guò)程,開(kāi)發(fā)人員可以在其中將經(jīng)過(guò)代碼簽名的應(yīng)用發(fā)送到 Apple 服務(wù)器,以便通過(guò)自動(dòng)化服務(wù)查驗(yàn)惡意組件。

OSR?

OSR(離屏渲染) 可以讓您在后臺(tái)渲染大型頁(yè)面,之后再將其顯示到屏幕上(這種方式更快)。 這使您不必將頁(yè)面顯示到屏幕上也可以渲染它。

preload script(預(yù)加載腳本)?

預(yù)加載腳本包含在渲染器進(jìn)程中, 里面的代碼在其網(wǎng)頁(yè)內(nèi)容加載之前執(zhí)行。 這些腳本雖運(yùn)行于渲染器的環(huán)境中,卻因能訪問(wèn) Node.js API 而擁有了更多的權(quán)限。

process?

一個(gè)進(jìn)程是計(jì)算機(jī)程序執(zhí)行中的一個(gè)實(shí)例。 Electron 應(yīng)用同時(shí)使用了 main 進(jìn)程和一個(gè)或者多個(gè) renderer 進(jìn)程來(lái)運(yùn)行多個(gè)程序。

在 Node.js 和 Electron 里面,每個(gè)運(yùn)行的進(jìn)程包含一個(gè) ?process? 對(duì)象。 這個(gè)對(duì)象作為一個(gè)全局的提供當(dāng)前進(jìn)程的相關(guān)信息和操作方法。 作為一個(gè)全局變量,它在應(yīng)用內(nèi)能夠不用 require() 來(lái)隨時(shí)取到。

renderer process?

渲染進(jìn)程是應(yīng)用中的瀏覽器窗口。 與主進(jìn)程不同,渲染進(jìn)程可能同時(shí)存在多個(gè),同時(shí),每一個(gè)渲染進(jìn)程都運(yùn)行與獨(dú)立的進(jìn)程中。 渲染進(jìn)程也可以隱藏。

sandbox?

沙盒是一個(gè)從Chromium繼承下來(lái)的安全功能,它將你的渲染過(guò)程限制在一組有限的權(quán)限。

Squirrel?

Squirrel 是一個(gè)開(kāi)源框架, 能夠讓 Electron 應(yīng)用程序自動(dòng)更新到最新發(fā)布的版本。

userland?

"userland" 或者 "userspace" 術(shù)語(yǔ)起源于 Unix 社區(qū),當(dāng)程序運(yùn)行在操作系統(tǒng)內(nèi)核之外。 最近這個(gè)術(shù)語(yǔ)被推廣到 Node 和 npm 社區(qū),用于區(qū)分 "Node 內(nèi)核"功能與在 npm 上注冊(cè)的"用戶" 們所發(fā)布的包的功能。

就像 Node ,Electron 致力于使用較小的API集來(lái)支持開(kāi)發(fā)跨平臺(tái)應(yīng)用所必需的原語(yǔ)。 這個(gè)設(shè)計(jì)理念讓 Electron 能夠保持靈活而不被過(guò)多的規(guī)定有關(guān)于如何應(yīng)該被使用。 Userland 讓用戶能夠創(chuàng)造和分享一些工具來(lái)提額外的功能在這個(gè)能夠使用的 "core(核心)"之上。

utility process?

實(shí)用程序進(jìn)程是主進(jìn)程的子進(jìn)程,它允許運(yùn)行任何不能在主進(jìn)程中運(yùn)行的不受信任的服務(wù)。 Chromium 使用此進(jìn)程執(zhí)行網(wǎng)絡(luò) I/O、音頻/視頻處理、設(shè)備輸入等。在 Electron 中,您可以使用 UtilityProcess API 創(chuàng)建此進(jìn)程。

V8?

V8 是谷歌開(kāi)源的 JavaScript 引擎。 它是用 C++ 編寫的,用于谷歌的 Chrome 瀏覽器。 V8 可以單獨(dú)運(yùn)行,也可以嵌入任何 C++ 應(yīng)用程序。

Electron將 V8 作為Chromium的一個(gè)部分進(jìn)行構(gòu)建,然后在構(gòu)建Node時(shí)也指向那個(gè) V8

V8 的版本號(hào)與谷歌 Chrome 的版本號(hào)對(duì)應(yīng)。 Chrome 59 的 V8 版本是 5.9,Chrome 58 的V8 版本是 5.8,以此類推。

webview

webview 標(biāo)簽頁(yè)用于在您的 Electron 應(yīng)用中嵌入“訪客”內(nèi)容(例如外部網(wǎng)頁(yè))。 其功能與 iframe 類似,但 webview 運(yùn)行于獨(dú)立的進(jìn)程中。 作為頁(yè)面它擁有不一樣的權(quán)限并且所有的嵌入的內(nèi)容和你應(yīng)用之間的交互都將是異步的。 這將保證你的應(yīng)用對(duì)于嵌入的內(nèi)容的安全性。


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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)