Electron 在主進程內可用的模塊

下面是 Electron 中主進程可用的模塊:git

模塊 描述
app 負責控制應用程序的整個生命週期
autoUpdater 該模塊提供了一個到 Squirrel 自動更新框架的接口
BrowserWindow 能夠用於建立一個新的瀏覽器窗口
contentTracing 用來收集 Chromium 內容模塊產生的跟蹤信息
dialog 用來顯示原生系統對話框,好比打開文件對話框
global-Shortcut 用來註冊和註銷全局的鍵盤快捷方式
ipcMain 該模塊是 EventEmitter 的一個實例對象,在主進程中使用,能夠發送同步或是異步的消息和渲染進程進行交互
Menu 用來建立一個原生的菜單,好比上下文菜單
MenuItem 用來往菜單中添加菜單子項
powerMonitor 用來顯示電池電量變化,只能是在主進程中使用,並且只能是在ready事件已經發出的狀況下
powerSaveBlocker 用來阻止系統進入省電模式,休眠模式
protocol 用來註冊一個定製的協議或是聲明使用一個已經存在的協議
session 用來建立新的 Session 對象,保存本地對象等操做
webContents 這是一個 EventEmitter,負責渲染和控制一個網頁,是一個 BrowserWindow 的屬性
Tray 一個 Tray 表明着一個操做系統通知區域的一個 icon,一般狀況下是和一個上下文菜單綁定的

app模塊

app 模塊是爲了控制整個應用的生命週期設計的。github

示例:

例如在最後一個窗口被關閉時退出應用:web

const app = require('app');

app.on('window-all-closed', function(){
    app.quit();
});

app 對象能夠發出如下事件:chrome

事件 描述
will-finish-launching 當程序完成基本的啓動,相似於 ready 事件
ready Electron 完成初始化時被觸發
window-all-closed 當全部的窗口都已經關閉的時候觸發。僅在當程序將要推退出的時候觸發。若是調用了 app.quit() 則不會觸發
before-quit 當程序開始關閉窗口的時候發出,調用 event.prevertDefault() 將會阻止應用程序的默認的行爲
will-quit 當窗口都已經關閉,程序即將退出的時候發出該事件
quit 當應用程序正在退出時觸發

autoUpdater模塊

autoUpdater 模塊提供了一個到 Squirrel 自動更新框架的接口。api

autoUpdater 對象會觸發如下的事件:瀏覽器

事件 描述
error 當更新發生錯誤的時候觸發
checking-for-update 當開始檢查更新的時候觸發
update-available 當發現一個可用更新的時候觸發,更新包下載會自動開始
update-not-available 當沒有可用更新的時候觸發
update-downloaded 在更新下載完成的時候觸發

BrowserWindow模塊

BrowserWindow 模塊用於建立一個新的瀏覽器窗口。session

示例:
// 在主進程中
const BrowserWindow = require('electron').BrowserWindow;
// 在渲染進程中
const BrowserWindow = require('electron').remote.BrowserWindow;

var win = new BrowserWindow({ width: 800, height: 400, show: false });
win.on('closed', function() {
  win = null;
});

win.loadURL('https://github.com');
win.show();

BrowserWindow 對象可觸發下列事件:app

事件 描述
close 在窗口要關閉的時候觸發,它在 DOMbeforeunloadunload 事件以前觸發,使用 event.preventDefault() 能夠取消這個操做
closed 當窗口已經關閉的時候觸發,當你接收到這個事件的時候,你應當刪除對已經關閉的窗口的引用對象和避免再次使用它
unresponsive 在界面卡死的時候觸發事件
responsive 在界面恢復卡死的時候觸發
blur 在窗口失去焦點的時候觸發
focus 在窗口得到焦點的時候觸發
maximize 在窗口最大化的時候觸發
unmaximize 在窗口退出最大化的時候觸發
minimize 在窗口最小化的時候觸發
restore 在窗口從最小化恢復的時候觸發
resize 在窗口 size 改變的時候觸發
move 在窗口移動的時候觸發,在 OS X 中別名爲 moved

contentTracing模塊

contentTracing 模塊用來收集底層的 Chromium 內容模塊產生的搜索數據,這個模塊不具有 web 接口,因此須要咱們在 chrome 瀏覽器中添加 chrome://tracing/ 來加載生成文件從而查看結果。框架

示例:
const contentTracing = require('contentTracing').;

const options = {
  categoryFilter: '*',
  traceOptions: 'record-until-full,enable-sampling'
}

contentTracing.startRecording(options, function() {
  console.log('Tracing started');

  setTimeout(function() {
    contentTracing.stopRecording('', function(path) {
      console.log('Tracing data recorded to ' + path);
    });
  }, 3000);
});

content-tracing 模塊的方法以下:異步

方法 描述
getCategories 得到一組分類組,分類組能夠更改成新的代碼路徑
startRecording 開始向全部進程進行記錄,一旦收到能夠開始記錄的請求,記錄將會立馬啓動而且在子進程是異步記錄的
stopRecording 中止對全部子進程的記錄
startMonitoring 開始向全部進程進行監聽
stopMonitoring 中止對全部子進程的監聽
captureMonitoringSnapshot 獲取當前監聽的查找數據
getTraceBufferUsag 經過查找 buffer 進程來獲取百分比最大使用量
setWatchEvent 任意時刻在任何進程上指定事件發生時將調用 callback
cancelWatchEvent 取消 watch 事件,若是啓動查找,這或許會形成 watch 事件的回調函數 出錯

dialog模塊

dialog 模塊提供了api 來展現原生的系統對話框,例如打開文件框或 alert 框。因此 web 應用能夠給用戶帶來跟系統應用相同的體驗。

示例:

對話框例子,展現了選擇文件和目錄:

var win = ...;  // 顯示對話框的瀏覽器窗口
const dialog = require('electron').dialog;
console.log(dialog.showOpenDialog({ properties: [ 'openFile', 'openDirectory', 'multiSelections' ]}));

global-shortcut模塊

global-shortcut 模塊用於設置各類自定義操做的快捷鍵。注意使用此模塊註冊的快捷鍵是系統全局的,不要在應用模塊響應 ready 消息前使用此模塊。

示例:
var app = require('app');
var globalShortcut = require('electron').globalShortcut;

app.on('ready', function() {
  // 註冊一個'ctrl+x'快捷方式
  var ret = globalShortcut.register('ctrl+x', function() {
    console.log('ctrl+x is pressed');
  })
  if (!ret) {
    console.log('registration failed');
  }
  // 檢查是否註冊了'ctrl+x'快捷方式
  console.log(globalShortcut.isRegistered('ctrl+x'));
});

app.on('will-quit', function() {
  // 註銷'ctrl+x'快捷方式
  globalShortcut.unregister('ctrl+x');

  // 註銷全部快捷方式
  globalShortcut.unregisterAll();
});

ipcMain模塊

ipcMain 模塊是類 EventEmitter 的實例,當在主進程中使用它的時候,它控制着由渲染進程發送過來的異步或同步消息,從渲染進程發送過來的消息將觸發事件。

示例:

下面是一個在主進程和渲染進程之間發送和處理消息的實例。

主進程:

const ipcMain = require('electron').ipcMain;
ipcMain.on('asynchronous-message', function(event, arg) {
  console.log(arg);  // 輸出ping
  event.sender.send('asynchronous-reply', 'pong');
});

ipcMain.on('synchronous-message', function(event, arg) {
  console.log(arg);  //  輸出ping
  event.returnValue = 'pong';
});

渲染進程:

const ipcRenderer = require('electron').ipcRenderer;
console.log(ipcRenderer.sendSync('synchronous-message', 'ping')); // 輸出pong

ipcRenderer.on('asynchronous-reply', function(event, arg) {
  console.log(arg); // 輸出pong
});
ipcRenderer.send('asynchronous-message', 'ping');

menu模塊

menu 模塊能夠用來建立原生菜單,它可用做應用菜單和內容菜單。

示例:

建立一個新菜單的語法:

var menu = new Menu();

MenuItem模塊

MenuItem 模塊用來往菜單中添加菜單子項。

示例:

建立一個新的 MenuItem 的語法:

var menuItem = new MenuItem(options)

options 的選項以下所示:

  • click
  • role
  • type
  • label
  • sublabel
  • accelerator
  • icon
  • enabled
  • visible
  • checked
  • submenu
  • id
  • position

powerMonitor模塊

powerMonitor 模塊是用來監聽能源區改變的,只能在主進程中使用。在 app 模塊的 ready 事件觸發以後就不能使用這個模塊了。

示例:
app.on('ready', function() {
  require('electron').powerMonitor.on('suspend', function() {
    console.log('系統將進入休眠狀態');
  });
});

powerMonitor 對象會觸發如下的事件:

事件 描述
suspend 在系統掛起的時候觸發
resume 在系統恢復繼續工做的時候觸發
on-ac 在系統使用交流電的時候觸發
on-battery 在系統使用電池電源的時候觸發

powerSaveBlocker模塊

powerSaveBlocker 模塊是用來阻止應用系統進入睡眠模式的,所以這容許應用保持系統和屏幕繼續工做。

示例:
const powerSaveBlocker = require('electron').powerSaveBlocker;

var id = powerSaveBlocker.start('prevent-display-sleep');
console.log(powerSaveBlocker.isStarted(id));

powerSaveBlocker.stop(id);

powerMonitor 模塊有以下方法:

方法 描述
start 開始阻止系統進入睡眠模式
stop 讓指定 blocker 中止活躍
isStarted 返回 boolean, 是否對應的 powerSaveBlocker 已經啓動

protocol模塊

protocol 模塊能夠註冊一個自定義協議,或者使用一個已經存在的協議。這個模塊只有在 app 模塊的 ready 事件觸發以後纔可以使用。

示例:

使用一個與 file:// 功能類似的協議 :

const electron = require('electron');
const app = electron.app;
const path = require('path');

app.on('ready', function() {
    var protocol = electron.protocol;
    protocol.registerFileProtocol('atom', function(request, callback) {
      var url = request.url.substr(7);
      callback({path: path.normalize(__dirname + '/' + url)});
    }, function (error) {
      if (error)
        console.error('註冊協議失敗')
    });
});

session模塊

session 模塊能夠用來建立一個新的 Session 對象。

示例:
const BrowserWindow = require('electron').BrowserWindow;

var win = new BrowserWindow({ width: 800, height: 600 });
win.loadURL("http://github.com");

var ses = win.webContents.session;

webContents模塊

webContents 是一個 EventEmitter,負責渲染和控制一個網頁,是一個 BrowserWindow 對象的屬性。

示例:
const BrowserWindow = require('electron').BrowserWindow;

var win = new BrowserWindow({width: 800, height: 1500});
win.loadURL("https://www.9xkd.com/");

var webContents = win.webContents;

webContents 對象可發出下列事件:

事件 描述
did-finish-load 當導航完成時發出事件,onload 事件也完成
did-fail-load 這個事件相似 did-finish-load ,可是是在加載失敗或取消加載時發出
did-frame-finish-load 當一個 frame 導航完成的時候發出事件
did-start-loading tabspinner 開始 spinning 的時候
did-stop-loading tabspinner 結束 spinning 的時候
did-get-response-details 當有關請求資源的詳細信息可用的時候發出事件
did-get-redirect-request 當指定 frame 中的 文檔加載完成的時候發出事件
page-favicon-updated page 收到圖標 url 的時候發出事件
new-window page 請求打開指定 url 窗口的時候發出事件
will-navigate 當用戶或 page 想要開始導航的時候發出事件
did-navigate 當一個導航結束時候發出事件
did-navigate-in-page 當頁內導航發生的時候發出事件
crashed 當渲染進程崩潰的時候發出事件
plugin-crashed 當插件進程崩潰時候發出事件
destroyed webContents 被刪除的時候發出事件
devtools-opened 當開發者工具欄打開的時候發出事件
devtools-closed 當開發者工具欄關閉時候發出事件
devtools-focused 當開發者工具欄得到焦點或打開的時候發出事件
certificate-error 當驗證證書或 url 失敗的時候發出事件
select-client-certificate 當請求客戶端證書的時候發出事件
login webContents 想作基本驗證的時候發出事件
found-in-page 當使用 webContents.findInPage 進行頁內查找而且找到可用值得時候發出事件
media-started-playing 當媒體開始播放的時候發出事件
media-paused 當媒體中止播放的時候發出事件
did-change-theme-color page 的主題色時候發出事件,這一般因爲引入了一個 meta 標籤
cursor-changed 當鼠標的類型發生改變的時候發出事件

連接:https://www.9xkd.com/

相關文章
相關標籤/搜索