上面是 Electron 中主过程可用的模块:

模块形容
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 模块是为了管制整个利用的生命周期设计的。

示例:

例如在最初一个窗口被敞开时退出利用:

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

app 对象能够收回以下事件:

事件形容
will-finish-launching当程序实现根本的启动,相似于 ready 事件
readyElectron 实现初始化时被触发
window-all-closed当所有的窗口都曾经敞开的时候触发。仅在当程序将要推退出的时候触发。如果调用了 app.quit() 则不会触发
before-quit当程序开始敞开窗口的时候收回,调用 event.prevertDefault() 将会阻止应用程序的默认的行为
will-quit当窗口都曾经敞开,程序行将退出的时候收回该事件
quit当应用程序正在退出时触发

autoUpdater模块

autoUpdater 模块提供了一个到 Squirrel 自动更新框架的接口。

autoUpdater 对象会触发以下的事件:

事件形容
error当更新产生谬误的时候触发
checking-for-update当开始查看更新的时候触发
update-available当发现一个可用更新的时候触发,更新包下载会主动开始
update-not-available当没有可用更新的时候触发
update-downloaded在更新下载实现的时候触发

BrowserWindow模块

BrowserWindow 模块用于创立一个新的浏览器窗口。

示例:
// 在主过程中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 对象可触发下列事件:

事件形容
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')); // 输入pongipcRenderer.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-loadingtabspinner 开始 spinning 的时候
did-stop-loadingtabspinner 完结 spinning 的时候
did-get-response-details当无关申请资源的详细信息可用的时候收回事件
did-get-redirect-request当指定 frame 中的 文档加载实现的时候收回事件
page-favicon-updatedpage 收到图标 url 的时候收回事件
new-windowpage 申请关上指定 url 窗口的时候收回事件
will-navigate当用户或 page 想要开始导航的时候收回事件
did-navigate当一个导航完结时候收回事件
did-navigate-in-page当页内导航产生的时候收回事件
crashed当渲染过程解体的时候收回事件
plugin-crashed当插件过程解体时候收回事件
destroyedwebContents 被删除的时候收回事件
devtools-opened当开发者工具栏关上的时候收回事件
devtools-closed当开发者工具栏敞开时候收回事件
devtools-focused当开发者工具栏取得焦点或关上的时候收回事件
certificate-error当验证证书或 url 失败的时候收回事件
select-client-certificate当申请客户端证书的时候收回事件
loginwebContents 想做根本验证的时候收回事件
found-in-page当应用 webContents.findInPage 进行页内查找并且找到可用值得时候收回事件
media-started-playing当媒体开始播放的时候收回事件
media-paused当媒体进行播放的时候收回事件
did-change-theme-colorpage 的主题色时候收回事件,这通常因为引入了一个 meta 标签
cursor-changed当鼠标的类型产生扭转的时候收回事件

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