上面是 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 事件 |
ready | 当 Electron 实现初始化时被触发 |
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 | 在窗口要敞开的时候触发,它在 DOM 的 beforeunload 和 unload 事件之前触发,应用 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 | 当 tab 的 spinner 开始 spinning 的时候 |
did-stop-loading | 当 tab 的 spinner 完结 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/