我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

一、Electron简介

Electron是一个能让你使用JavaScript,HTML和CSS来创建桌面应用程序的框架。这些应用程序可以打包后在 macOS、Windows 和 Linux 上直接运行。

在目前浏览器和移动端盛行的互联网环境下,跨平台的桌面应用开发,也为前端提供了一个新分支方向。

二、搭建准备

1、检查git和node是否安装完成

git --version
node -v
npm -v

2、搭建React

安装create-react-app

npm install -g create-react-app

创建my-electron-app项目

create-react-app my-electron-app

启动项目

cd my-electron-app && npm start

3、安装electron包

npm i --save-dev electron

三、创建基本应用程序

首先需要了解下Electron,用Electron开发应用程序就像构建一个带有网页界面的Node.js应用程序。同样使用package.json文件作为主入口,主脚本指定了运行主进程的 Electron应用程序的入口,这里是main.js 文件。

1、创建main.js文件

// 导入app、BrowserWindow模块
// app 控制应用程序的事件生命周期。事件调用app.on('eventName', callback),方法调用app.functionName(arg)
// BrowserWindow 创建和控制浏览器窗口。new BrowserWindow([options]) 事件和方法调用同app
// Electron参考文档 https://www.electronjs.org/docs
const { app, BrowserWindow, nativeImage } = require('electron');
   const url = require('url');
   const path = require('path');
function createWindow () {
  let mainWindow = new BrowserWindow({
    width: 800, // 窗口宽度
    height: 600, // 窗口高度
    title: "Electron", // 窗口标题,如果由loadURL()加载的HTML文件中含有标签<title>,该属性可忽略
    icon: nativeImage.createFromPath('class="lazy" data-src/public/favicon.ico'), // "string" || nativeImage.createFromPath('class="lazy" data-src/image/icons/256x256.ico')从位于 path 的文件创建新的 NativeImage 实例
    webPreferences: { // 网页功能设置
      nodeIntegration: true, // 是否启用node集成 渲染进程的内容有访问node的能力
      webviewTag: true, // 是否使用<webview>标签 在一个独立的 frame 和进程里显示外部 web 内容
      webSecurity: false, // 禁用同源策略
      nodeIntegrationInSubFrames: true // 是否允许在子页面(iframe)或子窗口(child window)中集成Node.js
    }
  });
  // 加载应用 --打包react应用后,__dirname为当前文件路径
  // mainWindow.loadURL(url.format({
  //   pathname: path.join(__dirname, './build/index.html'),
  //   protocol: 'file:',
  //   slashes: true
  // }));
  // 加载应用 --开发阶段  需要运行 npm run start
  mainWindow.loadURL('http://localhost:3000/');
  // 解决应用启动白屏问题
  mainWindow.on('ready-to-show', () => {
    mainWindow.show();
    mainWindow.focus();
  });
  // 当窗口关闭时发出。在你收到这个事件后,你应该删除对窗口的引用,并避免再使用它。
  mainWindow.on('closed', () => {
    mainWindow = null;
  });
}
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、修改package.json文件

主进程文件创建好了,修改package.json文件。

(1)配置启动文件,添加main字段,我们这里也就是main.js文件。如果没有添加,Electron 将尝试加载包含在package.json文件目录中的index.js文件。

(2)配置运行命令,使用"electron-start": "electron ." 。

{
  "name": "my-electron-app",
  "version": "0.1.0",
  "private": true,
  "main": "main.js",  // 配置启动文件
  "homepage":".", // 设置应用打包的根路径 更多了解参考:https://segmentfault.com/a/1190000021875558
  "dependencies": {
    "@testing-library/jest-dom": "^5.11.4",
    "@testing-library/react": "^11.1.0",
    "@testing-library/user-event": "^12.1.10",
    "react": "^17.0.1",
    "react-dom": "^17.0.1",
    "react-scripts": "4.0.1",
    "web-vitals": "^0.2.4"
  },
  "scripts": {
    "start": "react-scripts start",  // react 启动命令
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject",
    "electron-start": "electron ."  // electron 启动命令
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "devDependencies": {
    "electron": "^11.1.1"
  }
}

3、启动Electron

准备工作就完成了,进行启动

main.js文件中如果设置的mainWindow.loadURL('http://localhost:3000/'); 则需要启动react项目

启动react项目

npm start

启动electron

npm run electron-start

四、打包项目

1、打包react项目

npm run build

将main文件中注释的mainWindow.loadURL适用于react打包的方法释放开。

2、打包 electron使用electron-packager依赖

npm install electron-packager --save-dev

3、package.json配置打包命令

"package": "electron-packager . my-electron-app --platform=win32 --arch=x64 --overwrite --electron-version=11.1.1"

4、 配置解释

electron-packager <应用目录> <应用名称> <打包平台> <架构x86 还是 x64> <架构> <electron版本> overwrite 如果输出目录已经存在,替换它

5、 运行打包命令

npm run package

到此这篇关于Electron打包React生成桌面应用方法详解的文章就介绍到这了,更多相关Electron React桌面应用内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

这篇文章主要介绍了React+Electron快速创建并打包成桌面应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
2022-12-21

Vue使用electron生成桌面应用过程详解

这篇文章主要介绍了Vue使用electron生成桌面应用过程,很想使用electron制作一个桌面应用,但是真的上手使用的时候才发现electron的坑实在是太多了,先将遇到的坑记录在这里,遇到一个记录一个
2023-05-16

Vue使用electron转换项目成桌面应用方法介绍

Electron也可以快速地将你的网站打包成一个原生应用发布,下面这篇文章主要给大家介绍了关于Vue和React中快速使用Electron的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
2022-11-13

Android应用第一次安装成功点击“打开”后Home键切出应用后再点击桌面图标返回导致应用重启问题的解决方法

if((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0){ finish(); return; } 应用程序入口Activity的onCreate方
2022-06-06

编程热搜

目录