当前位置: 首页 > news >正文

React使用Electron开发桌面端

React是一个流行的JavaScript库,用于构建Web应用程序。结合Electron框架,可以轻松地将React应用程序打包为桌面应用程序。以下是使用React和Electron开发桌面应用程序的步骤:

1. 安装Electron

首先,你需要安装Electron。在终端中运行以下命令:

npm install electron --save-dev

2. 创建Electron应用程序

使用Electron提供的CLI工具,你可以创建一个Electron应用程序。在终端中运行以下命令:

npx electron-forge init my-app

这将创建一个名为my-app的Electron应用程序,并生成一些默认文件和目录。

3. 安装React和相关依赖

在Electron应用程序目录中,你需要安装React。在终端中运行以下命令:

npm install react react-dom --save
npm install -D @babel/preset-react

其中,@babel/preset-react是用于将JSX语法转换为普通的JavaScript代码的Babel预设。

4. 创建React组件

在src目录下,创建一个名为App.js的React组件。在组件中,你可以使用React提供的组件和库构建Web界面。例如,你可以使用Material-UI库来构建一个简单的界面:

import React from 'react';
import { makeStyles } from '@material-ui/core/styles';
import Button from '@material-ui/core/Button';const useStyles = makeStyles({root: {display: 'flex',justifyContent: 'center',alignItems: 'center',height: '100vh',},button: {backgroundColor: '#3f51b5',color: 'white',fontWeight: 'bold',fontSize: '1.5rem',padding: '1rem 2rem',},
});function App() {const classes = useStyles();return (<div className={classes.root}><Button className={classes.button} variant="contained">Hello World</Button></div>);
}export default App;

5. 添加Webpack配置

为了能够打包React应用程序,你需要添加Webpack配置。在Electron应用程序的根目录下,创建一个名为webpack.config.js的文件,输入以下代码:

const path = require('path');module.exports = {entry: './src/index.js',output: {filename: 'bundle.js',path: path.join(__dirname, 'dist'),},module: {rules: [{test: /\.jsx?$/,exclude: /node_modules/,use: {loader: 'babel-loader',options: {presets: ['@babel/preset-env', '@babel/preset-react'],},},},],},
};

在这段代码中,entry指定了应用程序的入口文件,output指定了打包后的文件名和路径,module.rules指定了Babel的转换规则。

6. 修改启动脚本

为了启动React应用程序,你需要修改Electron应用程序的启动脚本。在package.json文件中,将启动脚本修改为以下代码:

"start": "webpack --mode development --watch & electron ."

这将使用Webpack将React应用程序打包为bundle.js,并使用Electron启动应用程序。

7. 渲染React组件

在Electron应用程序的主进程中,你需要使用Electron提供的API来渲染React组件。在main.js文件中,使用以下代码:

const { app, BrowserWindow } = require('electron');
const path = require('path');function createWindow() {const win = new BrowserWindow({width: 800,height: 600,webPreferences: {nodeIntegration: true,preload: path.join(__dirname, 'preload.js'),},});win.loadFile('index.html');
}app.whenReady().then(() => {createWindow();app.on('activate', () => {if (BrowserWindow.getAllWindows().length === 0) {createWindow();}});
});app.on('window-all-closed', () => {if (process.platform !== 'darwin')    app.quit();}
});

在这段代码中,createWindow函数会创建一个Electron窗口,并加载index.html文件。你还需要在preload.js文件中注入React和ReactDOM库:

window.React = require('react');
window.ReactDOM = require('react-dom');

8. 创建HTML文件

在Electron应用程序的根目录下,创建一个名为index.html的文件,输入以下代码:

<!DOCTYPE html>
<html><head><meta charset="UTF-8" /><title>Hello Electron</title></head><body><div id="root"></div><script src="./bundle.js"></script></body>
</html>

在这个文件中,你需要将React组件渲染到id为root的div元素中。

9.运行应用程序

在终端中,使用以下命令启动React应用程序的开发服务器:

npm start

在另一个终端中,使用以下命令启动Electron应用程序:

npm run electron

这样,你就可以在Electron窗口中看到React组件了。

10. 打包和发布应用程序

完成开发后,你需要将应用程序打包并发布。你可以使用Electron提供的打包工具,例如electron-packager和electron-builder,将应用程序打包为可执行文件。你可以将可执行文件发布到应用商店或网站上,以便用户下载和安装。

总之,使用React和Electron一起开发桌面应用程序可以帮助你快速构建跨平台的应用程序,并提供许多强大的功能。通过使用React构建Web界面,你可以使用熟悉的工具和技术来构建应用程序。如果你想构建一个桌面应用程序,React和Electron可能是一个不错的选择。

相关文章:

React使用Electron开发桌面端

React是一个流行的JavaScript库&#xff0c;用于构建Web应用程序。结合Electron框架&#xff0c;可以轻松地将React应用程序打包为桌面应用程序。以下是使用React和Electron开发桌面应用程序的步骤&#xff1a; 1. 安装Electron 首先&#xff0c;你需要安装Electron。在终端中…...

springboot+vue餐厅点餐系统在线点餐系统(含源码+数据库)

1.系统分析 系统用例图如下所示。 从用户、餐厅等方面进行需求分析如下。 1.用户需求&#xff1a;系统应该提供简单易用的用户界面&#xff0c;用户可以浏览餐厅菜单&#xff0c;选择菜品&#xff0c;下订单。此外&#xff0c;应该允许用户管理个人信息和查看历史订单。 2.餐…...

Vue.js 中的 TypeScript 支持是什么?如何使用 TypeScript?

Vue.js 中的 TypeScript 支持 Vue.js 是一款流行的前端框架&#xff0c;它提供了一种简单、灵活的方式来构建用户界面。随着 TypeScript 的普及&#xff0c;Vue.js 也开始支持 TypeScript&#xff0c;使得开发者可以使用类型检查等 TypeScript 特性来提高代码质量和可维护性。…...

测试者必知—如何做Web测试?常见测试点总结

目录 前言&#xff1a; 一、Web应用程序 二、功能测试 三、易用性测试&#xff08;界面测试&#xff09; 四、兼容性测试 五、安全性测试 六、性能测试 前言&#xff1a; Web测试是指对基于Web技术的应用程序进行测试&#xff0c;以测试其功能、性能、安全和稳定性等方面的表…...

怎么转换英文音频成文字?英文音频转文字app分享

两位朋友正在讨论如何将一段英文讲座的音频转换成文字&#xff0c;以便于学习和理解。 Sophia&#xff1a;嗨&#xff0c;我最近听了一段非常精彩的英文讲座&#xff0c;但是对于我来说&#xff0c;理解听到的内容有些困难。你知道有什么方法可以将英文音频转换成文字吗&#…...

esp32-cam拍照上传,app inventor 制作安卓app实时显示

1、ESP32-cam开发环境配置 本例程 是利用arduino IDE开发,关于arduino IDE 的esp32环境配置可参考:环境配置: 点击跳转 安装好esp32 环境,开发板选择esp32 wrover module开发板,其他默认即可。 2 、程序下载 示例程序下载:点击下载 需要修改的信息有WIF名称,WIFI密码,…...

基于jsp+mysql+Spring+mybatis+Springboot的Springboot实现的就业信息管理平台

运行环境: 最好是java jdk 1.8&#xff0c;我在这个平台上运行的。其他版本理论上也可以。 IDE环境&#xff1a; Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以&#xff0c;如果编译器的版本太低&#xff0c;需要升级下编译器&#xff0c;不要弄太低的版本 tomcat服务器环…...

阿里巴巴内部10w字Java面试小抄火了,完整版开放下载

Java 面试 “金九银十”这个字眼对于程序员应该是再熟悉不过的了&#xff0c;每年的金九银十都会有很多程序员找工作、跳槽等一系列的安排。说实话&#xff0c;面试中 7 分靠能力&#xff0c;3 分靠技能&#xff1b;在刚开始的时候介绍项目都是技能中的重中之重&#xff0c;它…...

Logback自定义DBAppender保存系统日志到数据库

在系统中采用了spring boot logback&#xff0b;slf4j的日志框架&#xff0c;将系统日志记录到数据库。 相关参考来源&#xff1a; 官方文档-DBAppender Logback输出日志到自定义MySQL数据库&#xff08;重写DBAppender&#xff09; logback日志框架中filter的使用 1. 添加依…...

云原生之使用Docker部署LimeSurvey在线调查工具

云原生之使用Docker部署LimeSurvey在线调查工具 一、LimeSurvey介绍1.1 LimeSurvey简介1.2 LimeSurvey特点1.3 LimeSurvey使用场景1.4 LimeSurvey支持版本二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.检查doc…...

sdbusplus:添加ObjectManager interface

ObjectManager接口可以一次性拿到对象及子对象的所有property,在交互中经常会用到。 sdbusplus提供了add_manager完成该接口的添加: //server_obj.cpp #include <sdbusplus/asio/connection.hpp> #include <sdbusplus/asio/object_server.hpp> #include <sd…...

“RAID0 vs RAID1 vs RAID5 vs RAID6 vs RAID10:哪种RAID级别最适合你的需求?“

概要&#xff1a; RAID&#xff08;Redundant Array of Independent Disks&#xff09;是一种数据存储技术&#xff0c;可以将多个硬盘组合起来以提高性能、可靠性和容错能力。下面是几种常见的RAID级别&#xff0c;以及它们的用途和特点。 目录 RAID 0RAID 1RAID 5RAID 6RAID…...

【MySQL】Mycat

文章目录 什么是Mycat为什么要用Mycatmycat能干什么各数据库中间件对比Mycat原理数据库中间件逻辑库逻辑表分片表分片规则全局表ER表非分片表分片节点节点主机mycat安装mycat核心配置schema.xmlserver.xmlrule.xml加密明文密码&#xff08;可选&#xff09; MyCat读写分离垂直拆…...

Netty中ServerBootstrap类介绍

一、Netty基本介绍 Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具&#xff0c;用以快速开发高性能、高可靠性的网络服务器和客户端程序。Netty 在保证易于开发的同时还保证了其应用的性能&#xff0c;稳定性和伸缩性。 Netty 是一…...

数字图像处理实验报告

目录 实验二、图像在空间域上的处理方法 实验三、图像在频率域上的处理方法 实验二、图像在空间域上的处理方法 一、实验目的 了解图像亮&#xff08;灰&#xff09;度变换与空间滤波的意义和手段&#xff1b;熟悉图像亮&#xff08;灰&#xff09;度变换与空间滤波的MATLA…...

【C51】10-基础51单片机的小车项目(51完结)

10.1小车的安装 10.2电机模块的开发&#xff08;L9110S&#xff09; 接通 VCC &#xff0c; GND 模块电源指示灯亮&#xff0c; 以下资料来源官方&#xff0c;但是不对&#xff0c;根据下节课实际调试 IA1 输入高电平&#xff0c; IA1 输入低电平&#xff0c;【 OA1 OB1 】电…...

进程、线程、锁阶段总结汇总

目录 进程 线程 锁 由于进程线程和锁的方面比较陌生&#xff0c;并且繁杂&#xff0c;所以简单总结一下学习到的函数API 进程 子进程创建 fork(); 进程结束 exit(); 进程回收 wait(); 进程回收 waitpad(); //函数可以指定进程组中的任意子进程&#xff0c;可以设置特殊…...

Filters.jar图片转素描

链接&#xff1a;https://pan.baidu.com/s/1ATlC2l1I83TPYFomHiWuFg?pwd2vm5 提取码&#xff1a;2vm5...

将MSYS2 MinGW集成到Windows终端

微软开发了一款Windows终端的开源软件&#xff0c;非常好用。安装后在Win7及以上系统会在右键菜单中添加一条“在终端中打开”的命令&#xff0c;非常方便。它默认配置了Windows命令行以及PowerShell&#xff0c;如果安装了Visual Studio 2022还会配置Visual Studio 2022的命令…...

SpringBoot项目使用slf4j的MDC日志打点功能

SpringBoot项目使用slf4j的MDC日志打点功能 物料准备&#xff1a; 1.自定义1个线程MDC打点工具类 2.配置logback打印MDC打点的traceId 3.配置webMVC使用MDC打点 4.配置ThreadPoolTaskExecutor使用MDC打点 5.配置HttpClient使用MDC打点 6.测试MDC日志打点效果 线程mdc打…...

DLSS Swapper完全指南:5步实现游戏性能自由切换

DLSS Swapper完全指南&#xff1a;5步实现游戏性能自由切换 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 你是否曾因游戏更新后DLSS版本不兼容导致帧率下降而烦恼&#xff1f;是否想要尝试新版本DLSS功能却发现手动替…...

Plumbum部署指南:生产环境配置、安全与监控完整方案

Plumbum部署指南&#xff1a;生产环境配置、安全与监控完整方案 【免费下载链接】plumbum Plumbum: Shell Combinators 项目地址: https://gitcode.com/gh_mirrors/pl/plumbum Plumbum作为Python Shell Combinators库&#xff0c;为生产环境提供了强大的命令行执行和远程…...

从防御者视角复盘:当你的Win11突然断网,如何快速排查是不是遭遇了ARP欺骗?

从防御者视角复盘&#xff1a;当你的Win11突然断网&#xff0c;如何快速排查是不是遭遇了ARP欺骗&#xff1f; 办公室里突然有人喊"网络断了"&#xff0c;你的Win11电脑明明显示Wi-Fi已连接&#xff0c;却打不开任何网页。这种情况可能不只是简单的路由器故障——ARP…...

SpringAI实践(07) - 本地向量嵌入模型集成指南

SpringAI实践&#xff08;07&#xff09; - 本地向量嵌入模型集成指南 1.概述 本文档详细说明如何在 SpringBoot 应用中集成本地部署的 ONNX 格式向量嵌入模型&#xff08;如 bge-small-zh&#xff09;&#xff0c;通过 spring-ai-starter-model-transformers 模块调用 ONNX …...

救命!2026爆款PPT一键制作工具实测,新手也能5分钟出片,告别熬夜手搓无标题

作为常年和PPT打交道的AI博主&#xff0c;每天都能收到粉丝私信轰炸&#xff1a;“做PPT有没有捷径&#xff1f;”“AI能不能帮我快速出稿&#xff1f;”“新手零基础&#xff0c;半天排不出一页像样的版面”……懂的都懂&#xff01;谁没为了一份PPT熬到凌晨&#xff1f;找模板…...

Multisim新手必看:用差分放大电路课设,手把手教你搞定仿真与波形分析

Multisim新手必看&#xff1a;用差分放大电路课设&#xff0c;手把手教你搞定仿真与波形分析 第一次打开Multisim时&#xff0c;满屏的元器件和复杂的参数设置确实容易让人望而生畏。记得我大三做模电课设时&#xff0c;光是找齐差分放大电路需要的元件就花了半小时&#xff0c…...

Legacy-iOS-Kit:让旧设备重获新生的开源解决方案

Legacy-iOS-Kit&#xff1a;让旧设备重获新生的开源解决方案 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to restore/downgrade, save SHSH blobs, jailbreak legacy iOS devices, and more 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iOS-Kit 当你的…...

上海计算机学会2026年2月月赛C++丙组T1 乘积的秘密

乘积的秘密 题目描述 给定两个整数 A 与 B&#xff0c;保证 A ≤ B。请求出从 A 一直乘到 B 的符号&#xff1a; 如果乘积大于 0&#xff0c;输出 Positive&#xff1b;如果乘积小于 0&#xff0c;输出 Negative&#xff1b;如果乘积等于 0&#xff0c;输出 Zero。 输入格式 两…...

C/C++ 调用约定与 Windows GDI 位图操作实用解析

stdcall调用约定   stdcall很多时候被称为pascal调用约定&#xff0c;因为pascal是早期很常见的一种教学用计算机程序设计语言&#xff0c;其语法严谨&#xff0c;使用的函数调用约定就是stdcall。在Microsoft C系列的C/C编译器中&#xff0c;常常用PASCAL宏来声明这个调用约…...

扩散模型技术演进三部曲:从理论奠基到产业落地的核心突破

1. 扩散模型&#xff1a;一场关于"破坏与重建"的技术革命 想象你正在教一个孩子画画&#xff0c;但用的是一种特别的方式&#xff1a;先给他看一张完整的画作&#xff0c;然后你不断地在上面涂抹修改&#xff0c;直到画作变成一团杂乱无章的线条。接着&#xff0c;你…...