多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 第21章.进程对象 > process 对象的扩展 Electron 中的 `process` 对象使用了如下的 APIs 进行扩展: ## 事件 ### Event: 'loaded' 当 Electrn 加载好它内部的初始化脚本,准备载入 web 页面或者 `main` 脚本的时候被发射。 它可以被 preload 脚本使用来在 node 集成被关闭时添加被移除的 Node 全局符号到全局作用域中: ```javascript // preload.js const _setImmediate = setImmediate const _clearImmediate = clearImmediate process.once('loaded', () => { global.setImmediate = _setImmediate global.clearImmediate = _clearImmediate }) ``` ## 属性 ### `process.noAsar` 设置为 `true` 可以禁用 Node 内建模块中对 `asar` 档案的支持。 ### `process.type` 当前进程的类型,可能是 `"browser"` (即主进程) 或 `"renderer"`。 ### `process.versions.electron` Electron 的版本字符串。 ### `process.versions.chrome` Chrome 的版本字符串。 ### `process.resourcesPath` 资源目录路径。 ### `process.mas` 用于 Mac App Store 构建,这个属性为 `true`;对于其它构建,则是 `undefined`。 ### `process.windowsStore` 如果应用运行为一个 Windows Store app (appx),这个属性为 `true`;否则为 `undefined`。 ### `process.defaultApp` 如果应用通过被作为参数传递到默认 app 启动,这个属性在主进程中为 `true`,否则是 `undefined`。 ## 方法 `process` 对象有以下方法: ### `process.crash()` 引发当前进程的主线程崩溃。 ### `process.hang()` 引发当前进程的主线程挂起。 ### `process.setFdLimit(maxDescriptors)` *macOS* *Linux* * `maxDescriptors` Integer 设置文件描述符软限制为 `maxDescriptors` 或者操作系统硬限制,无论是否低于当前进程。 ### `process.getProcessMemoryInfo()` 返回 `Object`: * `workingSetSize` Integer —— 实际物理内存中当前被占用的内存数量 * `peakWorkingSetSize` Integer —— 实际物理内存中曾经被占用的最大的内存数量 to actual physical RAM. * `privateBytes` Integer —— 没有跟其它进程共享的内存数量,比如 JS heap 或 HTML content. * `sharedBytes` Integer —— 和其它进程共享的内存数量,典型的是被 Electron 代码自身消耗的内存。 返回一个对象,表示当前进程的内存使用状态。注意所有的状态都以千字节(KB)报告。 ### `process.getSystemMemoryInfo()` 返回 `Object`: * `total` Integer —— 系统中可用的物理内存总量,以 KB 表示 * `free` Integer —— 没有被应用或者硬盘缓存使用的内存总量 * `swapTotal` Integer —— 系统中可用的交换内存总量,KB表示。 *Windows* *Linux* * `swapFree` Integer —— 系统中可用的交换内存总量,KB表示 *Windows* *Linux* 返回一个对象,表示整个系统的内存使用状态。注意,所有状态都以 KB 的形式报告。