Electron.js: Детальний огляд

🔹 Що таке Electron.js?

Electron.js — це фреймворк для створення десктопних застосунків під Windows, macOS і Linux за допомогою HTML, CSS і JavaScript. Він дозволяє розробникам використовувати веб-технології для створення нативних застосунків без необхідності писати код на C++ або Objective-C.

Electron поєднує:

  • Chromium (для рендерингу інтерфейсу)
  • Node.js (для доступу до файлової системи та інших нативних API)
  • Власне середовище Electron API (для інтеграції з ОС)

Таким чином, ви можете писати один код і запускати його на всіх платформах, що робить Electron популярним серед веброзробників, які хочуть створювати десктопні програми.


🔹 Головні особливості Electron.js

Кросплатформність

  • Один код працює на Windows, macOS і Linux.
  • Просте створення .exe, .dmg або .AppImage.

Використання веб-технологій

  • Інтерфейс застосунку створюється через HTML, CSS, JavaScript.
  • Можна використовувати React, Vue, Angular або чистий JS.

Доступ до нативних API

  • Electron надає повний доступ до файлової системи, процесів, сповіщень тощо.
  • Підтримує роботу з системним трейом, контекстним меню, гарячими клавішами.

Вбудований Chromium

  • Використовує Chromium для рендерингу інтерфейсу.
  • Застосунок виглядає та працює як звичайний вебзастосунок.

Використання Node.js

  • Можна використовувати будь-які NPM-бібліотеки.
  • Доступ до fs, path, child_process та інших системних API.

🔹 Як працює Electron.js?

Electron працює за принципом двох процесів:

  1. Головний процес (Main Process)
    • Запускає вікно застосунку.
    • Керує взаємодією із системою (файли, меню, нотифікації).
    • Використовує Node.js API.
  2. Рендер-процес (Renderer Process)
    • Відповідає за інтерфейс застосунку.
    • Використовує HTML, CSS, JavaScript та фреймворки (React, Vue).
    • Працює в середовищі Chromium.

📌 Зв’язок між процесами здійснюється через IPC (Inter-Process Communication).


🔹 Основи роботи з Electron.js

📌 Встановлення Electron

Перед початком встановлюємо Node.js, а потім Electron:

npm install -g electron

Створюємо новий проєкт:

mkdir my-electron-app && cd my-electron-app
npm init -y
npm install electron --save-dev

📌 Базова структура проєкту

/my-electron-app
 ├── package.json  # Налаштування проєкту
 ├── main.js  # Головний процес
 ├── index.html  # Інтерфейс застосунку
 ├── renderer.js  # Код для рендер-процесу

📌 1. Створення головного процесу (main.js)

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

let mainWindow;

app.whenReady().then(() => {
  mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: true
    }
  });

  mainWindow.loadFile('index.html');
});

📌 Що тут відбувається?

  • Створюється головне вікно BrowserWindow.
  • Завантажується index.html (інтерфейс застосунку).
  • app.whenReady() запускає застосунок, коли Electron готовий.

📌 2. Створення інтерфейсу (index.html)

<!DOCTYPE html>
<html lang="uk">
<head>
  <meta charset="UTF-8">
  <title>Electron App</title>
</head>
<body>
  <h1>Привіт, Electron!</h1>
  <button id="clickButton">Натисни мене</button>

  <script src="renderer.js"></script>
</body>
</html>

📌 3. Додавання логіки рендер-процесу (renderer.js)

document.getElementById('clickButton').addEventListener('click', () => {
  alert('Ви натиснули кнопку!');
});

📌 Що тут відбувається?

  • Додаємо подію кліку на кнопку.
  • Використовуємо вбудовані браузерні API (без Node.js).

📌 Запуск застосунку

npx electron .

📌 Результат: Відкриється вікно застосунку з кнопкою “Натисни мене”. 🎉


🔹 Доступ до нативних API

📌 Читання файлів через Electron

const { dialog } = require('electron').remote;
const fs = require('fs');

document.getElementById('openFile').addEventListener('click', () => {
  dialog.showOpenDialog({ properties: ['openFile'] })
    .then(result => {
      if (!result.canceled) {
        fs.readFile(result.filePaths[0], 'utf-8', (err, data) => {
          if (err) console.error(err);
          console.log("Файл прочитано:", data);
        });
      }
    });
});

📌 Що тут відбувається?

  • Відкривається діалог вибору файлів.
  • Читаємо файл за допомогою fs.readFile().

🔹 Створення меню в Electron

📌 Додаємо кастомне меню

const { Menu } = require('electron');

const menuTemplate = [
  {
    label: 'Файл',
    submenu: [
      { role: 'quit', label: 'Вийти' }
    ]
  },
  {
    label: 'Допомога',
    submenu: [
      { label: 'Про програму', click: () => console.log('Про програму') }
    ]
  }
];

const menu = Menu.buildFromTemplate(menuTemplate);
Menu.setApplicationMenu(menu);

📌 Що тут відбувається?

  • Додається меню “Файл” та “Допомога”.
  • Обробляємо натискання меню.

🔹 Переваги Electron.js

Кросплатформність – один код для Windows, macOS, Linux.
Використання веб-технологій – HTML, CSS, JS.
Повний доступ до нативних API – файлові системи, меню, нотифікації.
Велика спільнота – багато готових бібліотек.
Простий у навчанні – ідеально для веброзробників.


🔹 Недоліки Electron.js

Великий розмір застосунків – базовий .exe може важити 100+ MB.
Високе споживання RAM – через Chromium.
Не така висока продуктивність, як у C++ – бо працює через JS.


🔹 Для кого підходить Electron.js?

Для веброзробників, які хочуть створювати десктопні застосунки.
Для створення інструментів, що потребують нативного доступу (редактори, менеджери файлів).
Для компаній, які хочуть один код для всіх ОС.


🔹 Висновок

Electron.js – це потужний фреймворк для створення кросплатформних десктопних застосунків, який використовує веб-технології.
Він підходить для інструментів, редакторів, месенджерів (наприклад, VS Code, Slack, Discord).

Якщо вам потрібен десктопний застосунок на основі веб-технологій, Electron – чудовий вибір! 🚀

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *