综述
electron 提供了一些内置的模块用于桌面应用的开发。有些模块仅能主进程使用,有些仅能渲染进程使用,有些二者均可。
详细内容
process
electron 的 process 从 node.js 扩展而来。添加了如下事件,属性以及方法:
sandbox - sandbox 中的 renderer,其可供使用的 API 受限。
crash();hang();getCreationTime();getHeapStatistics();getBlinkMemoryInfo(); getProcessMemoryInfo();getSystemMemoryInfo();getSystemVersion(); getCPUUsage();getIOCounters();argv;execPath;env;pid;arch;platform; sandboxed;type;version;versions;mas;windowsStore;
events
// preload.js const _setImmediate = setImmediate const _clearImmediate = clearImmediate process.once('loaded', () => { global.setImmediate = _setImmediate global.clearImmediate = _clearImmediate })
properties
process.defaultApp; process.isMainFrame; process.mas; process.noAsar; process.noDeprecation; process.resourcesPath; process.sandboxed; process.throwDeprecation; process.traceDeprecation; process.traceProcessWarnings; process.type; // browser renderer worker process.versions.chrome; process.versions.electron; process.windowsStore;
methods
process.crash(); // 引发当前进程的主线程 crash process.getCreationTime(); process.getCPUUsage(); process.getIOCounters(); //就是读写计数 process.getHeapStatistics(); // 获取v8堆数据情况,所有单位为 kilobytes process.getBlinkMemoryInfo(); // 不理解 process.getProcessMemoryInfo(); // 获取当前进程的内存信息 process.getSystemMemoryInfo(); // 获取系统内存信息 process.getSystemVersion(); process.takeHeapSnampShot(filepath); //堆快照 process.hang(); // 进程挂起 process.setFFdLimit(maxDescriptors);// mac linux 设置文件描述符的软限制
支持的命令行切换
const { app } = require('electron') app.commandLine.appendSwitch('remote-debugging-port', '8315') app.commandLine.appendSwitch('host-rules', 'MAP * 127.0.0.1') app.whenReady().then(() => { // Your code here })
命令行参数flag如下
--auth-server-whitelist='*example.com, *foobar.com, *baz' // --auth-negotiate-delegate-whitelist=url // --disable-ntlm-v2 // --disable-http-cache // --disable-http2 // --disable-renderer-backgrounding // --disk-cache-size=size // --enable-api-filtering-logging // --enable-logging // --host-rules=rules // --host-resolver-rules=rules // --ignore-certificate-errors // --ignore-connections-limit=domains // electron --js-flags="--harmony_proxies --harmony_collections" your-app // --lang // --log-net-log=path // --no-proxy-server // --no-sandbox // --proxy-bypass-list=hosts const { app } = require('electron') app.commandLine.appendSwitch('proxy-bypass-list', '<local>;*.google.com;*foo.com;1.2.3.4:5678') // --proxy-pac-url=url // --proxy-server=address:port // --remote-debugging-port=port // --ppapi-flash-path=path // --ppapi-flash-version=version // --v=log_level // --vmodule=pattern // --force_high_performance_gpu 强制使用多个gpu提升性能 // --force_low_power_gpu
node.js 的 flag 如下
// --inspect-brk[=[host:]port] // --inspect-port=[host:]port // --inspect[=[host:]port] // --inspect-publish-uid=stderr,http
环境变量
electron 某些行为受环境变量约束
NODE_OPTIONS // 不支持如下参数 //--use-bundled-ca //--force-fips //--enable-fips //--openssl-config //--use-openssl-ca GOOGLE_API_KEY process.env.GOOGLE_API_KEY = 'YOUR_KEY_HERE' ELECTRON_NO_ASAR ELECTRON_RUN_AS_NODE ELECTRON_NO_ATTACH_CONSOLE ELECTRON_FORCE_WINDOW_MENU_BAR - linux 强制不使用全局 menu bar ELECTRON_TRASH
chrome 扩展支持
electron 支持 chrome extension api 中的一部分接口。
载入扩展,仅支持未压缩的
const { session } = require('electron') session.loadExtension('path/to/unpacked/extension').then(({ id }) => { // ... })
支持的扩展 API
chrome.devtools.inspectedWindow chrome.devtools.network chrome.devtools.panels chrome.extension chrome.runtime chrome.storage chrome.tabs chrome.management
Comments | 1 条评论
--force_high_performance_gpu
这个意思是“Force using discrete GPU when there are multiple GPUs available.”