Electron打包React生成桌面应用方法详解

yizhihongxing

Electron打包React生成桌面应用方法详解

Electron 可以让你使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序。如果你正在使用 React 开发应用程序,并且想要将其转换为桌面应用程序,那么 Electron 是一个很好的选择。

下面是使用 Electron 打包 React 的步骤:

步骤 1:初始化 React 应用程序

首先,你需要使用 create-react-app 初始化 React 应用程序。创建一个新的项目,使用以下命令:

npx create-react-app my-electron-app

步骤 2:安装 Electron

使用以下命令安装 Electron:

npm install --save-dev electron

步骤 3:添加 Electron 启动脚本

在项目的根目录下创建一个名为 main.js 的文件,内容如下:

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

let mainWindow;

function createWindow() {
  mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: true
    }
  });

  mainWindow.loadURL('http://localhost:3000');
  mainWindow.on('closed', function() {
    mainWindow = null;
  });
}

app.on('ready', createWindow);

这个脚本将创建一个 Electron 窗口并打开 React 应用程序的主页。

步骤 4:修改 React 应用程序的启动脚本

package.json 文件中的 scripts 选项中,将 start 命令修改为以下命令:

"start": "react-scripts start & electron ."

这个命令将同时启动 React 应用程序和 Electron 应用程序。

步骤 5:打包 Electron 应用程序

使用以下命令打包 Electron 应用程序:

npm run electron-pack

在项目的根目录下创建一个名为 electron-packager.js 的文件,内容如下:

const packager = require('electron-packager');
const path = require('path');

packager({
  dir: path.join(__dirname, '.'),
  out: path.join(__dirname, '..', 'dist'),   // 将打包好的应用程序放到 dist 目录下
  name: 'MyElectronApp',
  platform: 'win32',   // 打包为 Windows 应用程序
  arch: 'x64',
  icon: path.join(__dirname, 'icon.ico'),   // 应用程序图标
  overwrite: true,
  appVersion: '1.0.0',
  win32metadata: {
    CompanyName: 'MyCompany',
    ProductName: 'MyElectronApp',
    FileDescription: 'My Electron App',
    OriginalFilename: 'MyElectronApp.exe',
  }
})
.then(appPaths => {
  console.log(`Packaged app saved to ${appPaths}`)
})
.catch(err => {
  console.error(err)
})

运行此脚本将会打包你的应用程序,生成一个 MyElectronApp.exe 文件,可以在 Windows 上运行。

示例 1:添加自定义菜单

以下是如何添加自定义菜单到 Electron 应用程序的示例代码:

const template = [
  {
    label: 'File',
    submenu: [
      {
        label: 'Open',
        accelerator: 'CmdOrCtrl+O',   // 快捷键
        click(items, win) {   // 单击事件
          // 打开文件对话框
        }
      },
      {
        label: 'Save',
        accelerator: 'CmdOrCtrl+S',
        click(items, win) {
          // 保存文件
        }
      }
    ]
  },
  {
    label: 'Edit',
    submenu: [
      {
        label: 'Undo',
        accelerator: 'CmdOrCtrl+Z',
        role: 'undo'
      },
      {
        label: 'Redo',
        accelerator: 'Shift+CmdOrCtrl+Z',
        role: 'redo'
      },
      { type: 'separator' },
      {
        label: 'Cut',
        accelerator: 'CmdOrCtrl+X',
        role: 'cut'
      },
      {
        label: 'Copy',
        accelerator: 'CmdOrCtrl+C',
        role: 'copy'
      },
      {
        label: 'Paste',
        accelerator: 'CmdOrCtrl+V',
        role: 'paste'
      },
      {
        label: 'Select All',
        accelerator: 'CmdOrCtrl+A',
        role: 'selectall'
      },
    ]
  }
];

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

上面的代码将添加一个名为 File 和一个名为 Edit 的菜单。在 File 菜单中,我们添加了一个名为 Open 的子菜单,并将快捷键设置为 CmdOrCtrl+O。在单击 Open 菜单项时,将会显示一个文件对话框,用于选择要打开的文件。在 Edit 菜单中,我们添加了几个命令,例如 UndoRedoCutCopy 等等。

示例 2:使用 IPC 通信

以下是如何在 Electron 应用程序中使用 IPC 通信的示例代码:

在 Electron 应用程序的主进程中,添加以下代码:

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

ipcMain.on('message', (event, arg) => {
  console.log(arg);
  // 发送消息到渲染进程
  event.sender.send('reply', 'This is a reply from main process');
});

在 React 应用程序的渲染进程中,添加以下代码:

const {ipcRenderer} = window.require('electron');

ipcRenderer.send('message', 'This is a message from renderer process');

ipcRenderer.on('reply', (event, arg) => {
  console.log(arg);
});

上面的代码将打印出从主进程发送过来的消息和回复。

总结

使用 Electron 打包 React 应用程序是一个相对简单的过程。只需要遵循上述步骤,就可以生成一个可以在桌面上运行的应用程序。此外,你还可以使用示例代码来自定义 Electron 应用程序。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Electron打包React生成桌面应用方法详解 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • Vite + React从零开始搭建一个开源组件库

    下面是详细讲解“Vite + React从零开始搭建一个开源组件库”的完整攻略。 一、前置知识 在学习“Vite + React从零开始搭建一个开源组件库”之前,需要具备以下知识: 基础的HTML、CSS、JavaScript的知识 熟悉React框架及其生态圈 熟悉ES6语法以及模块化编程思想 熟悉npm包管理工具 熟悉Git版本控制工具 二、搭建项目 1…

    node js 2023年6月9日
    00
  • JS实现可控制的进度条

    JS实现可控制的进度条,可以使用CSS和JS相结合的方法来实现。下面是一些基本的步骤和代码示例,让我们一起来学习吧! 步骤 HTML结构:首先需要在HTML中创建进度条的基本结构,可以使用div元素来表示进度条,设置一个进度条容器。如下所示: <div id="progress-container"> <div id=&…

    node js 2023年6月8日
    00
  • Nodejs实现批量下载妹纸图

    下面是“Nodejs实现批量下载妹纸图”的完整攻略: 1. 准备工作 首先需要安装 Node.js 和 NPM(Node Package Manager),可以在官网下载安装程序。 然后在命令行窗口中使用以下命令安装必要的模块: npm install request cheerio mkdirp –save request:用于发送 HTTP/HTTPS…

    node js 2023年6月8日
    00
  • Node.js 中如何收集和解析命令行参数

    收集和解析命令行参数是 Node.js 进程中一个常见且重要的任务。Node.js 提供了内置的 process 对象,该对象包含了一个 argv 属性,用于获取用户在命令行中传递的参数列表。本篇攻略将详细介绍 Node.js 中如何收集和解析命令行参数。 获取命令行参数 Node.js 中可以使用 process.argv 属性获取命令行的参数。proce…

    node js 2023年6月8日
    00
  • Node后端Express框架安装及应用

    安装Express框架: 1.首先需要安装Node.js,可以前往Node.js官网下载相应版本的安装包并完成安装。 2.打开命令行工具,输入以下命令安装Express框架: npm install express –save 其中,–save选项将安装的内容添加进package.json文件中,方便后续依赖管理。 3.在项目目录下创建app.js文件,…

    node js 2023年6月8日
    00
  • node.js文件的复制、创建文件夹等相关操作

    下面是node.js文件的复制、创建文件夹等相关操作的完整攻略: 文件复制 在Node.js中,文件复制可以使用fs模块的copyFile()方法。其基本语法如下: fs.copyFile(srcPath, destPath, (err) => { if (err) throw err; console.log(‘File was copied’); …

    node js 2023年6月8日
    00
  • 在Linux服务器上部署vue项目

    部署vue项目到Linux服务器上主要需要完成以下几个步骤: 在本地使用npm等工具完成vue项目构建 将构建好的项目文件上传至Linux服务器 在Linux服务器上安装Nginx等Web服务器,并配置Web服务器 将上传的项目文件部署到Web服务器上 启动Web服务器,访问部署在服务器上的vue项目 下面,我将详细讲解每个步骤的具体操作流程: 1. 在本地…

    node js 2023年6月8日
    00
  • Centos7 中 Node.js安装简单方法

    下面是详细的“Centos7 中 Node.js安装简单方法”的完整攻略: 简介 Node.js是一种基于Chrome JavaScript Runtime建立的一个平台,用于方便地构建快速、可扩展的网络应用程序。本文旨在介绍Centos7上安装Node.js的简单方法。 步骤一:下载Node.js二进制包 打开终端,输入以下命令下载Node.js最新版本的…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部