Electron 在主进程内可用的模块

下面是 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 自动更新框架的接口。
【Electron 在主进程内可用的模块】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 = 'https://www.it610.com/article/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-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/

    推荐阅读