快速开启react+electron应用,搭建启动问题

news2025/1/11 9:04:14

注意:

  • React 本地启动在 3000端口
  • Electron 在创建 BrowserWindow 的时候,可以读取本地的文件或者是 url
  • 开发环境 读取localhost: 3000
  • 生产环境 需要加载本地成型以后的本地文件,打包的时候再考虑

一 react 脚手架 create-react-app 快速搭建 react

npx create-react-app  my-app-name
cd my-app-name
npm start

二 electron 的开发环境搭建

npm install electron --save-dev

三 环境配置

  • 新建main.js 文件(在package.json 同等目录下)
  • 打开package.json文件需要添加main.js作为入口文件
  • 在package.json中添加执行脚本
    在这里插入图片描述
  • electron-is-dev 用于判断 electron 的开发环境
    npm install electron-is-dev --save-dev

在这里插入图片描述

注:大概就是创建了一个 1024 * 680 的窗口,在开发环境下,将 http://localhost:3000
下的内容加载到electron窗口中。

三 开启 react+electron

在 package.json 文件中可以看到,要启动 react 和 electron 得执行以下两个脚本命令

在这里插入图片描述

npm start //可以看到在浏览器新打开一个监听 3000 端口的一个 tab
npm run ele // 弹出 electron 窗口

缺点:

  1. 需要跑两个命令
  2. 关掉 electron 窗口后,端口仍被占有的情况
  3. 需要 3000 端口跑起来了再刷新一下 electron 才会有内容
  4. 浏览器会打开一个 3000 端口的 tab 页, electron 会弹出加载了3000端口内容的窗口,理想状态下只需要保留 electron 中的窗口就好了

优化一:安装Concurrently
解决问题:解决以上 1和2 的问题,一次可以运行多个命令
安装:npm install concurrently --save-dev
配置:在 package.json 中的 scripts 添加一个 dev

"dev": "concurrently \" electron .\" \" npm start\""

优化二:安装 wait-on 插件
解决问题:解决 问题3 等3000端口执行完毕 再打开electron,为了不看到electron 白屏问题
安装:npm install wait-on
配置dev:

`"dev": "concurrently \"wait-on http://localhost:3000 && electron .\" \"npm start\""`

优化三:安装cross-env
解决问题:解决跨平台设置环境变量的问题。但是这次我们使用它是为了利用它的 BROWSER=none 来解决上面提到的第四个问题,不打开浏览器中的 tab 页。
安装:npm install cross-env --save-dev
配置dev:

"dev": "concurrently \"wait-on http://localhost:3000 && electron .\" \"cross-env BROWSER=none npm start\""

四 运行项目

npm run dev 直接打开electron 窗口 没有白屏 不需要打开浏览器tab 页面。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1959863.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

iTerm2使用手册

iTerm2字体 参考文章:iTerm2 安装 SF Mono 字体 iTerm2默认的字体不太好看,感觉Mac自带的终端的字体看起来很舒服,于是让iTerm2和Mac自带终端保持一致 找到Terminal.app下面的字体 执行 cp *.otf ~/Library/Fonts/ 然后在iTerm2中设置字…

ElementUI,el-input输入框max、min限制最大最小值失效

<el-input type"number" v-model"loadNodesNum" :min"1" :max"5" style"width: 240px;overflow: hidden;"><el-button slot"append" click"handleMaxLoadNum(1)">负载最多的节点TOP</el…

记一次JS到WAF绕过上传

一、前言 某渗透项目中和队友配合挖到一个通用系统漏洞&#xff0c;主要对JS接口进行分析&#xff0c;经历一波绕waf的曲折最终getshell&#xff0c;文笔粗劣&#xff0c;大佬勿喷。 二、JS分析 在看到某系统仅仅一个登陆框&#xff0c;一波弱口令尝试和目录扫描&#xff0c…

PHP教务排课系统小程序源码

教务排课系统&#xff1a;智慧教育的新篇章 &#x1f4da; 开篇&#xff1a;告别手动排课的繁琐时代 在这个信息爆炸的时代&#xff0c;教育领域的每一个细节都在向智能化迈进。你是否还记得&#xff0c;曾经老师们为了编排一张完美的课程表&#xff0c;需要花费多少时间和精…

JMeter接口测试-5.JMeter高级使用

JMeter高级使用 案例&#xff1a; 用户登录后-选择商品-添加购物车-创建订单-验证结果 问题&#xff1a; JMeter测试中&#xff0c;验证结果使用断言&#xff0c;但断言都是固定的内容假如要判断的内容(预期内容)是在变化的, 有时候还是不确定的, 那该怎么办呢? 解决&…

【MySQL】访问mysqld的方式{命令行客户端/vscode-c-api客户端/图形化界面:mysql/navicat}

文章目录 1.访问数据库2.vscode-c-api客户端方法一&#xff1a;重新安装相关数据方法二&#xff1a;直接使用之间安装mysql的附加数据查看mysql文档方式使用c-mysql-api库访问mysqld代码理解mysql_res 3.图形化界面 1.访问数据库 命令行式客户端向mysqld下达指令 网页版 图形化…

ViVim编辑器

文章目录 基本介绍常用的三种模式1. 正常模式2. 插入模式3. 命令行模式 常用快捷键环境参数配置光标移动查找与替换删除复制粘贴模式切换 基本介绍 Linux 系统会内置 vi 文本编辑器 Vi是最早的文本编辑器之一&#xff0c;主要用于Linux和Unix操作系统中的文本编辑。它是一个纯…

Kafka动态授权认证:利用SASL/SCRAM机制提升安全性

摘要 Apache Kafka是一个流行的分布式流处理平台&#xff0c;其安全性对于保护数据传输至关重要。SASL/SCRAM&#xff08;Simple Authentication and Security Layer/Salted Challenge Response Authentication Mechanism&#xff09;是一种认证机制&#xff0c;可以为Kafka集…

Spring-原理篇-DispatcherServlet 初始化 怎么和IOC进行了打通?

委托模式的体现&#xff0c;在初始化醒目的时候Spring MVC为我们提供了一个DispatcherServlet&#xff0c;映射了所有的路径&#xff0c;所有的请求都会先到达这里然后被转发到具体的Controller 进行处理&#xff0c;此文来探索一下&#xff0c;DispatcherServlet 初始化的时候…

强化学习学习(四)Model-Based Reinforcement Learning 从原理到改进分析

文章目录 Model-Based RLBasics of Model-based reinforcement learningUncertainty of Model-based RLUse uncertainty in Model-based RLState space (latent space) models Model-Based RL Basics of Model-based reinforcement learning Model-based reinforcement learn…

当视频遇上AI:SAM 2 打破想象的界限!

当视频遇上AI&#xff1a;SAM 2 打破想象的界限&#xff01; Segment Anything Model 2 Meta公司推出 Llama 3.1 没多久&#xff0c;又在今天推出了Segment Anything Model 2&#xff08;SAM 2&#xff09;&#xff0c;以其强大的实时、可提示对象分割能力&#xff0c;引领了视…

【网络安全】破解邀请码实现未经授权的访问和账户接管

未经许可&#xff0c;不得转载。 文章目录 前言1、邀请用户2、低级账户访问3、提取用户 ID 和 OTP4、准备字典5、攻击6、账户接管 前言 ExampleSpark&#xff08;化名&#xff09;是一个专为团队管理和项目协作而设计的强大平台。它提供了用于管理用户、项目和权限的综合工具。…

Hutool——发送http请求案例

文章目录 前言依赖环境Hutool 请求验证准备第三方接口编写接口调用上述定义接口 自测验证get 请求post 非常规 application/x-www-form-urlencodedpost 常规 application/json 前言 在实际开发过程中&#xff0c;微服务环境下往往采取openfeign实现服务与服务之间的请求调用。…

createObjectURL的部分使用讲解

URL.createObjcetURL的部分详解 文章目录 URL.createObjcetURL的部分详解1. 为什么要使用createObjectURL2. createObjectURL的基本用法3. 转换后的文件进行展示或下载展示下载 首先&#xff0c;想记录一下这点是因为之前关于pdf文件的下载和预览&#xff0c;后端返回工作流时的…

燃爆你的创作欲!3款剪辑小助手让你爱不释手

视频剪辑&#xff0c;既是门艺术&#xff0c;也是门手艺。现在&#xff0c;因为社交媒体和视频网站的流行&#xff0c;越来越多的人开始自己尝试做视频。不管你是想娱乐大家&#xff0c;还是教点东西&#xff0c;或者搞点商业宣传&#xff0c;一款好的剪辑软件都能帮你提高效率…

遇到“NavigableString“object has no attribute “text“的解决方法(全)

在 Python 的 Beautiful Soup 库中&#xff0c;NavigableString 对象用于表示解析树中的文本内容。 有时候在获取json格式&#xff0c;解析BeautifulSoup的时候&#xff0c;可能会遇到这个问题。 那可能是在 NavigableString 对象上调用 .text 属性&#xff0c;因此就会出现 …

21款美规奔驰GLS450更换中规高配主机系统,您带来更贴合国内使用习惯和更丰富功能的体验

简单一句中文的“您好&#xff0c;奔驰”&#xff0c;抑或是轻轻触碰屏幕&#xff0c;就能与同级最先进的智能人机交互系统来场深度沟通&#xff0c;实现你的各种需求 创造情感纽带&#xff0c;将车辆打造为您的专属座驾。功能扩展后的 MBUX 智能人机交互系统能满足您多方位的…

AutoMQ 开源可观测性方案:夜莺 Flashcat

01 引言 在现代企业中&#xff0c;随着数据处理需求的不断增长&#xff0c;AutoMQ [1] 作为一种高效、低成本的流处理系统&#xff0c;逐渐成为企业实时数据处理的关键组件。然而&#xff0c;随着集群规模的扩大和业务复杂性的增加&#xff0c;确保 AutoMQ 集群的稳定性、高可…

Python学习-字符串

目录 ord() 与 chr() 力扣题目-转换成小写字母 count()函数 ord() 与 chr() ord() 和 chr() 用于字符和字符编码&#xff08;通常是ASCII等&#xff09;之间的转换。 1. ord() ord() 函数用于获取一个字符&#xff08;通常是一个单字符字符串&#xff09;的编码值。在ASC…

服务器怎么开启远程桌面连接权限?开启远程桌面连接权限的详细操作步骤

服务器怎么开启远程桌面连接权限? 服务器开启远程桌面连接权限的步骤通常依赖于服务器的操作系统。以下是基于Windows服务器和Linux服务器的详细操作步骤&#xff1a; Windows服务器 1.打开服务器管理器&#xff1a; -登录到Windows服务器。 -点击“开始”菜单&…