乐趣区

关于electron: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 自动更新框架的接口。

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')); // 输入 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/

退出移动版