Electron和React配合使用
创建时间:2025-05-09 15:17
长度:2444
浏览:0
评论:0
先创建react项目
npx create-react-app@latest markdown-doc再安装Electron
npm install --save-dev electron@latest再安装一个库,用来判断是是开发环境还是生产环境
npm install electron-is-dev --save-devmarkdown-doc项目根目录中创建一个main.js文件, 并编写以下代码
const { app, BrowserWindow } = require('electron');
const isDev = require('electron-is-dev');
let mainWindow = null;
app.on('ready', () => {
    mainWindow = new BrowserWindow({
        width: 1024,
        height: 680,
        webPreferences: {
            nodeIntegration: true,
        }
    })
    // 连接react项目链接
    const loadURL = isDev ? 'http://localhost:3000' : '暂时还不定义'
    mainWindow.loadURL(loadURL)
})修改package.json文件(增加一个main,和一个 dev命令)
{
  "name": "markdown-doc",
  "version": "0.1.0",
  "private": true,
  "main": "main.js",
  "dependencies": {
    "@testing-library/dom": "^10.4.0",
    "@testing-library/jest-dom": "^6.6.3",
    "@testing-library/react": "^16.3.0",
    "@testing-library/user-event": "^13.5.0",
    "react": "^19.1.0",
    "react-dom": "^19.1.0",
    "react-scripts": "5.0.1",
    "web-vitals": "^2.1.4"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject",
    "dev": "electron ."
  },
  // ....
}
然后终端启动前端项目、再启动Electron 就可以了
yarn start 
yarn dev再修改一下,我们现在要先启动好前端项目,再启动Electron,比较繁琐
安装一个库
 npm install concurrently --save再次修改package.json的dev命令
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject",
    "dev": "concurrently \"electron .\" \"npm start \" "
  },然后就用一个命令就可以了,但是启动有一会的白屏,还要等一会刷新程序才行。。。
为了解决这个问题,我们再安装一个库
npm install wait-on --save-dev再次修改package.json的dev命令
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject",
    "dev": "concurrently \"wait-on http://localhost:3000 && electron .\" \"npm start\" "
  },用wait-on这个库的意思大概就是说,等我们的前端项目localhost:3000启动完成后,再打开electron,这样就不会有白屏的现象了
到这里就差不多了,但是发现每次启动还是会启动一个浏览器标签页,我们也把这个关掉了
再安装一个库
npm install cross-env --save-dev再次修改package.json的dev命令
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject",
    "dev": "concurrently \"wait-on http://localhost:3000 && electron .\" \"cross-env BROWSER=none npm start\" "
  },其他项目不重要的配置
使用sass
https://create-react-app.dev/docs/adding-a-sass-stylesheet/
yarn add sass