跳转到主内容

简介

如何使用 Node.js 和 Electron APIs

Node.js 的所有内置模块 在 Electron 可用,同时第三方 node 模块也完全支持 (包括 本地 native 模块))。

Electron 还为开发原生桌面应用程序提供了一些额外的内置模块。 某些模块仅在主进程中可用, 有些仅在渲染进程 (web 页) 中可用, 而有些在这两个进程中都可以使用。

基本规则是: 如果一个模块是 GUI 或底层系统相关的, 那么它应该只在主进程中可用。 你需要熟悉主进程脚本与渲染进程脚本的概念,才能使用这些模块。

主进程脚本就像一个普通的Node.js脚本:

const { app, BrowserWindow } = require('electron')
let win = null

app.whenReady().then(() => {
win = new BrowserWindow({ width: 800, height: 600 })
win.loadURL('https://github.com')
})

如果 nodeIntegration 被启用,那么渲染进程除了额外能够使用node模块的能力外,与普通网页没有什么区别

<!DOCTYPE html>
<html>
<body>
<script>
const fs = require('fs')
console.log(fs.readFileSync(__filename, 'utf8'))
</script>
</body>
</html>

解构赋值

从0.37开始,可以使用 destructuring assignment (es6解构赋值)来使内置模块更容易使用。

const { app, BrowserWindow } = require('electron')

let win

app.whenReady().then(() => {
win = new BrowserWindow()
win.loadURL('https://github.com')
})

如果您需要整个 electron 模块, 则可以require它, 然后使用解构(destructuring)从 <0> electron <0> 访问各个模块。

const electron = require('electron')
const { app, BrowserWindow } = electron

let win

app.whenReady().then(() => {
win = new BrowserWindow()
win.loadURL('https://github.com')
})

这等效于以下代码:

const electron = require('electron')
const app = electron.app
const BrowserWindow = electron.BrowserWindow
let win

app.whenReady().then(() => {
win = new BrowserWindow()
win.loadURL('https://github.com')
})