Skip to content

1.1 Overview of Electron

1. Introduction

Electron is a framework that enables developers to build cross-platform desktop applications using web technologies such as HTML, CSS, and JavaScript. It combines the Chromium rendering engine and the Node.js runtime, allowing developers to create applications that can run on Windows, macOS, and Linux with a single codebase. Some key features of Electron include:

  • Cross-Platform: Write once, run anywhere on major desktop platforms.
  • Rich APIs: Access native features like file system access, notifications, and menus through JavaScript APIs.
  • Web Technologies: Utilize popular front-end frameworks (e.g., React, Angular, Vue.js) to create user interfaces.
  • Large Ecosystem: Benefit from a vast range of Node.js libraries and npm packages.

2.8 Similar Frameworks

Here are some frameworks similar to Electron for building desktop applications:

  1. NW.js (Node-Webkit):

    • Like Electron, NW.js allows developers to build desktop applications using web technologies.
    • It integrates Node.js with a web browser engine, supporting direct interaction between Node.js and the browser.
  2. Tauri:

    • Tauri is a lightweight alternative to Electron, focusing on performance and security.
    • It allows developers to use Rust for the backend and any front-end framework for the UI.
    • Tauri applications are smaller in size compared to Electron apps.
  3. Flutter:

    • Originally designed for mobile apps, Flutter can also target desktop platforms.
    • It uses the Dart programming language and provides a rich set of pre-designed widgets for UI development.
  4. JavaFX:

    • A framework for building desktop applications in Java.
    • It supports modern UI features and is suitable for applications that require a rich client experience.
  5. Qt:

    • A powerful C++ framework for cross-platform application development.
    • It provides extensive libraries for UI design and supports multiple languages, including Python through PyQt or PySide.
  6. Avalonia:

    • A cross-platform UI framework for .NET, similar to WPF.
    • It allows developers to create applications using XAML and C# and targets Windows, macOS, and Linux.
  7. React Native for Desktop:

    • An extension of React Native that allows building desktop applications.
    • It shares components and APIs with React Native for mobile development.

Each of these frameworks has its strengths and use cases, depending on the specific requirements of the application you want to develop.

2. Getting Started

Here’s a simple tutorial to get you started with Electron. This guide will walk you through setting up a basic Electron application step by step.

2.1 Prerequisites

Make sure you have the following installed:

  • Node.js (which includes npm) - You can download it from nodejs.org.
  • A code editor (like Visual Studio Code).

2.2 Step 1: Set Up Your Project

  1. Create a new directory for your project:

    Terminal window
    mkdir my-electron-app
    cd my-electron-app
  2. Initialize a new Node.js project:

    Terminal window
    npm init -y
  3. Install Electron:

    Terminal window
    npm install electron --save-dev

2.3 Step 2: Create Main Application Files

  1. Create the main JavaScript file: Create a file named main.js in your project directory with the following content:

    const { app, BrowserWindow } = require('electron');
    function createWindow() {
    const win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
    nodeIntegration: true, // Allows Node.js integration in your app
    },
    });
    win.loadFile('index.html'); // Load the HTML file
    }
    app.whenReady().then(createWindow);
    app.on('window-all-closed', () => {
    if (process.platform !== 'darwin') {
    app.quit();
    }
    });
    app.on('activate', () => {
    if (BrowserWindow.getAllWindows().length === 0) {
    createWindow();
    }
    });
  2. Create an HTML file: Create a file named index.html in your project directory with the following content:

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>My Electron App</title>
    </head>
    <body>
    <h1>Hello, Electron!</h1>
    <p>This is a simple Electron application.</p>
    </body>
    </html>

2.4 Step 3: Modify Package.json

Open your package.json file and add the following main entry and start script:

{
"name": "my-electron-app",
"version": "1.0.0",
"main": "main.js", // Add this line
"scripts": {
"start": "electron ."
},
"devDependencies": {
"electron": "^VERSION" // This will be the installed version
}
}

2.5 Step 4: Run Your Application

To start your Electron application, run the following command in your terminal:

Terminal window
npm start

2.6 Step 5: Package Your Application (Optional)

If you want to package your Electron app for distribution, you can use tools like electron-builder or electron-packager. Here’s how to use electron-builder:

  1. Install electron-builder:

    Terminal window
    npm install --save-dev electron-builder
  2. Add a build script to your package.json:

    "scripts": {
    "build": "electron-builder"
    },
    "build": {
    "appId": "com.example.myapp", // Replace with your app ID
    "files": [
    "main.js",
    "index.html"
    ]
    }
  3. Run the build command:

    Terminal window
    npm run build

This will create a distributable version of your application.

2.7 Conclusion

You now have a basic Electron application! You can customize the UI, add more functionality, and explore the extensive Electron API to build more complex applications. For more detailed information and advanced features, check out the Electron documentation.