刚进入公司接触Electron项目,看到代码的时候发现它和React的项目结构极其的相似。此前,我的leader让我学习electron,但我学习的方式只能通过B站上少有的学习视频以及官方文档,没有使用到Vue以及React框架,后面意识到自己先前学习的只是皮毛,完全没有达到工程项目的要求。为了熟悉项目的工程结构,于是乎,自己开始搭建开发环境,并模拟网易云实现音乐播放器,加快对项目的理解。
非常感谢CSDN上几篇博客给我的灵感。
现在,开始搭建我自己的项目。
确保你的电脑上已经有node环境
npm i create-react-app
npm create-react-app my-app
cd my-app
my-app项目中安装electronnpm config set registry https://registry.npm.taobao.org
cnpm install electron --save-dev
cnpm install electron-is-dev --save-dev
pulic文件夹下新建main.js文件main.js
const { app ,BrowserWindow } = require('electron')
const isDev = require('electron-is-dev')
let mainWindow;
app.on('ready', () => {
mainWindow = new BrowserWindow({
width: 1024,
height: 680,
webPreferences:{
nodeIntegration: true,
}
})
const urlLocation = isDev ? 'http://localhost:3000' : 'dummyurl'
mainWindow.loadURL(urlLocation);
})
concurrently、wait-on、cross-env同时执行多个命令
cnpm install concurrently --save-dev
等待资源加载完成
cnpm install wait-on --save-dev
环境变量
cnpm install cross-env --save-dev
package.jsonmain对应的值是你定义的main.js文件所在的位置
"main":"./public/main.js"
electron原本对应的值是electron .,但想要看到效果,我们必须先npm start开启react项目,再开启另一个终端npm run electron启动electron项目,这样太麻烦了。
所以我们设置修改后的electron对应的值,是为了不用执行npm start就可以使用npm run electron直接启动electron项目看到效果。
"script":{
"electron-dev": "electron . dev",
"electron": "concurrently \" wait-on http://localhost:3000 && electron . \" \" cross-env BROWSER=none npm start \" "
}
完整package.json
{
"name": "my-app",
"version": "0.1.0",
"private": true,
"main": "./public/main.js",
"homepage": ".",
"dependencies": {
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^13.3.0",
"@testing-library/user-event": "^13.5.0",
"react": "^18.2.0",
"react-dom": "^18.2.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",
"electron-dev": "electron . dev",
"electron": "concurrently \" wait-on http://localhost:3000 && electron . \" \" cross-env BROWSER=none npm start \" "
},
"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": {
"concurrently": "^7.3.0",
"cross-env": "^7.0.3",
"electron": "^20.0.1",
"electron-is-dev": "^2.0.0",
"wait-on": "^6.0.1"
}
}
npm run electron

如此,大功告成!!!!