Electron 主進程和渲染進程中的模塊 javascript
Electron remote 模塊
html
remote 模塊提供了一種在渲染進程(網頁)和主進程之間進行進程間通信(IPC)的簡便途java
徑。 web
Electron 中, 與 GUI 相關的模塊(如 dialog, menu 等)只存在於主進程,而不在渲染進程中 。 爲了能從渲染進程中使用它們,須要用ipc模塊來給主進程發送進程間消息。使用 remote 模 塊,能夠調用主進程對象的方法,而無需顯式地發送進程間消息,這相似於 Java 的 RMI。 數組
Electron 渲染進程中經過 remote 模塊調用主進程中的 BrowserWindow 打開新窗口瀏覽器
主進程代碼:app
const electron = require('electron'); // 控制應用生命週期的模塊 const {app} = electron; // 建立本地瀏覽器窗口的模塊 const {BrowserWindow} = electron; // 指向窗口對象的一個全局引用,若是沒有這個引用,那麼當該 javascript 對象被垃圾回收 的 // 時候該窗口將會自動關閉 let win; function createWindow() { // 建立一個新的瀏覽器窗口 win = new BrowserWindow({width: 1104, height: 620});//570+50 // 而且裝載應用的 index.html 頁面 win.loadURL(`file://${__dirname}/html/index.html`); // // 打開開發工具頁面 win.webContents.openDevTools(); // win.on('closed', () => { 當窗口關閉時調用的方法 // 解除窗口對象的引用,一般而言若是應用支持多個窗口的話,你會在一個數組裏 // 存放窗口對象,在窗口關閉的時候應當刪除相應的元素。 win = null; }); } // 當 Electron 完成初始化而且已經建立了瀏覽器窗口,則該方法將會被調用。 // 有些 API 只能在該事件發生後才能被使用。 app.on('ready', createWindow); // 當全部的窗口被關閉後退出應用 app.on('window-all-closed', () => { // 對於 OS X 系統,應用和相應的菜單欄會一直激活直到用戶經過 Cmd + Q 顯式退出 if (process.platform !== 'darwin') { app.quit(); } }); app.on('activate', () => { // 對於 OS X 系統,當 dock 圖標被點擊後會從新建立一個 app 窗口,而且不會有其餘 // 窗口打開 if (win === null) { createWindow(); } }); // 在這個文件後面你能夠直接包含你應用特定的由主進程運行的代碼。 // 也能夠把這些代碼放在另外一個文件中而後在這裏導入。
渲染進程代碼 electron
var btn=document.querySelector('#btn'); //渲染進程無法直接調用主進程中的模塊,可是咱們能夠經過 electron中的remote模塊間接的調用主進程中的模塊 var path=require('path'); var BrowserWindow=require('electron').remote.BrowserWindow; var win=null; btn.onclick=function(){ // alert('點擊了'); //調用 BrowserWindow打開新窗口 win=new BrowserWindow({ width:400, height:300, // frame:false, // fullscreen:true }) win.loadURL(path.join('file:',__dirname,'news.html')); win.on('closed',()=>{ win=null; }) }