Использование Angular вместе с Electron позволяет создавать кроссплатформенные десктопные приложения с веб-технологиями. Electron предоставляет оболочку для запуска веб-приложения в отдельном процессе с доступом к файловой системе и нативным API.
Типичный проект Angular + Electron содержит два основных процесса:
Main process (главный процесс) Отвечает за
управление окнами, работу с системными ресурсами и обработку нативных
событий. Файл запуска обычно называется main.js или
main.ts.
import { app, BrowserWindow } from 'electron';
let mainWindow: BrowserWindow;
function createWindow() {
mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true,
contextIsolation: false
}
});
mainWindow.loadURL('http://localhost:4200');
}
app.on('ready', createWindow);Renderer process (рендер-процесс) Представляет собой стандартное Angular-приложение, которое работает в браузерной среде Electron. Renderer может обращаться к Main через IPC (Inter-Process Communication) для выполнения задач, требующих нативного доступа.
npm install electron --save-dev
package.json:"scripts": {
"start": "ng serve",
"electron": "ng build --base-href ./ && electron ."
}
// main.ts
import { ipcMain } from 'electron';
ipcMain.on('get-data', (event) => {
event.reply('send-data', { message: 'Данные с main process' });
});
// renderer.ts (Angular service)
import { ipcRenderer } from 'electron';
ipcRenderer.send('get-data');
ipcRenderer.on('send-data', (event, data) => {
console.log(data.message);
});
nodeIntegration: true
упрощает доступ к Node API, но повышает риск выполнения вредоносного
кода. Используются contextIsolation и preload
скрипты для безопасного взаимодействия.angular.json с настройкой outputPath, чтобы
Electron подхватывал только необходимые файлы.electron-builder или
electron-forge упрощает создание установочных пакетов для
Windows, macOS и Linux.