摘要:主進(jìn)程渲染進(jìn)程主進(jìn)程在中,跑里的主腳本的進(jìn)程叫作主進(jìn)程。主進(jìn)程負(fù)責(zé)掌管所有的頁(yè)面和它們相應(yīng)的渲染進(jìn)程。不同頁(yè)面間共享數(shù)據(jù)非常簡(jiǎn)單,使用就能完成。
主進(jìn)程VS渲染進(jìn)程 主進(jìn)程Electron使用了網(wǎng)頁(yè)頁(yè)面作為App的GUI,因此你可以將它看做是一個(gè)由JavaScript控制的一個(gè)小型的Chrome內(nèi)核瀏覽器。
在Electron中,跑package.json里的主腳本的進(jìn)程叫作主進(jìn)程。在主進(jìn)程里跑的腳本可以通過創(chuàng)建web頁(yè)面的窗口來扮演GUI角色。
主進(jìn)程看起來就是一段腳本:
const electron = require("electron"); const app = electron.app; const BrowserWindow = electron.BrowserWindow; var window = null; app.on("ready", function() { window = new BrowserWindow({width: 800, height: 600}); window.loadURL("https://github.com"); });渲染進(jìn)程
正因?yàn)镋lectron使用了chrome內(nèi)核,才使得它多進(jìn)程的結(jié)構(gòu)也可以被我們使用。在Electron里的每個(gè)頁(yè)面都有它自己的進(jìn)程,叫作渲染進(jìn)程。
在普通的瀏覽器里,網(wǎng)頁(yè)頁(yè)面跑在一個(gè)沙盒環(huán)境下,不能接觸到native源碼。而Electron則允許你在頁(yè)面中使用Node.js的API,較低程度上的和操作系統(tǒng)進(jìn)行交互。
渲染進(jìn)程如同傳統(tǒng)的HTML,但它可以直接使用Node模塊:
主進(jìn)程和渲染進(jìn)程的不同
主進(jìn)程通過實(shí)例化BrowserWindow,每個(gè)BrowserWindow實(shí)例都在它自己的渲染進(jìn)程內(nèi)返回一個(gè)web頁(yè)面。當(dāng)BrowserWindow實(shí)例銷毀時(shí),相應(yīng)的渲染進(jìn)程也會(huì)終止。
主進(jìn)程負(fù)責(zé)掌管所有的web頁(yè)面和它們相應(yīng)的渲染進(jìn)程。每個(gè)渲染進(jìn)程都是相互獨(dú)立的,它們只關(guān)心自己所運(yùn)行的web頁(yè)面。
在頁(yè)面(渲染進(jìn)程)中不允許調(diào)用原生GUI相關(guān)的API,那是因?yàn)樵诰W(wǎng)頁(yè)(渲染進(jìn)程)中中掌管原生GUI很危險(xiǎn),易造成內(nèi)存泄露。如果你想在網(wǎng)頁(yè)中進(jìn)行GUI的操作,渲染進(jìn)程必須向主進(jìn)程傳達(dá)請(qǐng)求,然后在主進(jìn)程中完成操作。
在Electron中,我們有幾種連接主進(jìn)程和渲染進(jìn)程的方法,例如用于傳送消息的ipcRenderer和ipcMain模塊,以及用于RPC的remote模塊。
不同頁(yè)面間共享數(shù)據(jù)非常簡(jiǎn)單,使用HTML5 API就能完成。
Storage API,IndexedDB都是很好的選擇。
你還可以使用Electron中提供的IPC系統(tǒng)。它在主進(jìn)程中將一個(gè)對(duì)象儲(chǔ)存為全局變量,然后可以通過remote模塊操作它們:
// 在主進(jìn)程里 global.sharedObject = { someProperty: "default value" };
// In page 1. require("remote").getGlobal("sharedObject").someProperty = "new value"; // In page 2. console.log(require("remote").getGlobal("sharedObject").someProperty);
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/79438.html
摘要:為了能使不同的進(jìn)程互相訪問資源并進(jìn)行協(xié)調(diào)工作,才有了進(jìn)程間通信。此時(shí),就需要與渲染進(jìn)程通信了。發(fā)消息,渲染進(jìn)程收消息內(nèi)部使用來發(fā)消息。 作者:鐘離,酷家樂PC客戶端負(fù)責(zé)人原文地址:https://webfe.kujiale.com/electron-ku-jia-le-ke-hu-duan-kai-fa-shi-jian-fen-xiang-jin-cheng-tong-xin/酷家...
摘要:為了能使不同的進(jìn)程互相訪問資源并進(jìn)行協(xié)調(diào)工作,才有了進(jìn)程間通信。此時(shí),就需要與渲染進(jìn)程通信了。發(fā)消息,渲染進(jìn)程收消息內(nèi)部使用來發(fā)消息。 作者:鐘離,酷家樂PC客戶端負(fù)責(zé)人原文地址:https://webfe.kujiale.com/electron-ku-jia-le-ke-hu-duan-kai-fa-shi-jian-fen-xiang-jin-cheng-tong-xin/酷家...
摘要:為了能使不同的進(jìn)程互相訪問資源并進(jìn)行協(xié)調(diào)工作,才有了進(jìn)程間通信。此時(shí),就需要與渲染進(jìn)程通信了。發(fā)消息,渲染進(jìn)程收消息內(nèi)部使用來發(fā)消息。 作者:鐘離,酷家樂PC客戶端負(fù)責(zé)人原文地址:https://webfe.kujiale.com/electron-ku-jia-le-ke-hu-duan-kai-fa-shi-jian-fen-xiang-jin-cheng-tong-xin/酷家...
摘要:而這里的單元格信息是唯一的,所以直接通過為一個(gè)空對(duì)象賦值即可。和相關(guān)的知識(shí)和技巧高亮的列單元格采用展示。在中,被選中的單元格會(huì)高亮相應(yīng)的行和列,以提醒用戶。 showImg(https://segmentfault.com/img/bVGkdk?w=900&h=500); XCEL 是一個(gè) Excel 數(shù)據(jù)清洗工具,其通過可視化的方式讓用戶輕松地對(duì) Excel 數(shù)據(jù)進(jìn)行篩選。 XCEL...
摘要:目前類似的工具有,等。在渲染進(jìn)程中,直接調(diào)用原生的接口是十分危險(xiǎn)的。這里介紹一種,通過和對(duì)象,以消息的方式進(jìn)行通信。主進(jìn)程獲得消息后,通過返回信息。另外,還提供了一種同步的消息傳遞方式。打包完成功能代碼后,我們需要將代碼打成可運(yùn)行的包。 介紹 目前,使用前端技術(shù)開發(fā)桌面應(yīng)用已經(jīng)越來越成熟,這使得前端同學(xué)也可以參與桌面應(yīng)用的開發(fā)。目前類似的工具有electron,NW.js等。這里我們著...
閱讀 3054·2021-11-22 09:34
閱讀 3646·2021-08-31 09:45
閱讀 3859·2019-08-30 13:57
閱讀 1682·2019-08-29 15:11
閱讀 1687·2019-08-28 18:04
閱讀 3231·2019-08-28 17:59
閱讀 1570·2019-08-26 13:35
閱讀 2195·2019-08-26 10:12