Краткий обзор
Как использовать API Node.js и Electron.
All of Node.js's built-in modules are available in Electron and third-party node modules also fully supported as well (including the native modules).
Кроме того, Electron предоставляет дополнительные встроенные модули для разработки нативных дестопных приложений. Некоторые модули доступны только в главном процессе, некоторые доступны только в процессе отрисовки (веб-страницы), а некоторые могут быть использованы в обоих процессах.
Основное правило: если модуль связан с GUI или системой низкого уровня, то должно быть доступно только в основном процессе. You need to be familiar with the concept of main process vs. renderer process scripts to be able to use those modules.
Скрипт основного процесса похож на обычный скрипт 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')
})
Процесс отрисовки ничем не отличается от обычной веб-страницы, за исключением дополнительной возможности использования модулей node, если параметр nodeIntegration
имеет значение "Включён":
<!DOCTYPE html>
<html>
<body>
<script>
const fs = require('fs')
console.log(fs.readFileSync(__filename, 'utf8'))
</script>
</body>
</html>
Деструктирующее присваивание
Начиная с версии 0.37 можно использовать деструктирующее присваивание, для того чтобы упростить использование встроенных модулей.
const { app, BrowserWindow } = require('electron')
let win
app.whenReady().then(() => {
win = new BrowserWindow()
win.loadURL('https://github.com')
})
If you need the entire electron
module, you can require it and then using destructuring to access the individual modules from electron
.
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')
})