Electron集成React和Vue流程方法講解
集成React
1. 熱調(diào)試
在React項目目錄下安裝Electron
npm install electron
修改package.json文件,增加或?qū)⒁延械膍ain屬性值修改為main.js,在scriptes中添加"electron-start": "electron .",最終配置文件如下:
{
"name": "electron-react",
"version": "0.1.0",
"main": "main.js",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^13.3.0",
"@testing-library/user-event": "^13.5.0",
"electron": "^20.0.3",
"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-start": "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"
]
}
}打開main.js,將
const { app, BrowserWindow, globalShortcut } = require("electron");
const path = require("path");
function createWindow() {
const win = new BrowserWindow({
width: 800,
height: 600,
webContents: {
openDevTools: true, //不想要控制臺直接把這段刪除
}
});
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();
}
});中的
win.loadFile("index.html");修改為
win.loadURL("http://localhost:3000/")打開兩個終端,一個運行React
npm start
另一個執(zhí)行
npm run electron-start
程序運行正常

2. 打包
默認情況下,homepage 是 http://localhost:3000,build 后,所有資源文件路徑都是 /static,而 Electron 調(diào)用的入口是 file :協(xié)議,/static 就會定位到根目錄去,所以找不到靜態(tài)文件。在 package.json 文件中添加 homepage 字段并設(shè)置為"."后,靜態(tài)文件的路徑就變成了相對路徑,就能正確地找到了添加如下配置:
"homepage":".",
隨后運行build構(gòu)建項目,構(gòu)建完成后可以在build文件夾下執(zhí)行index.html看看網(wǎng)站是否可以正確運行。
npm run build
如果可以。在main.js中將代碼
win.loadURL("http://localhost:3000/")更改為,即載入靜態(tài)文件,載入URL可以作為熱調(diào)試,打包時修改為靜態(tài)文件。
win.loadFile("./build/index.html");最終的文件
main.js為:
const { app, BrowserWindow, globalShortcut } = require("electron");
const path = require("path");
function createWindow() {
const win = new BrowserWindow({
width: 800,
height: 600,
webContents: {
openDevTools: true, //不想要控制臺直接把這段刪除
}
});
win.loadFile("./build/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();
}
});package.json為:
{
"name": "electron-react",
"version": "0.1.0",
"main": "main.js",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^13.3.0",
"@testing-library/user-event": "^13.5.0",
"electron": "^20.0.3",
"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-start": "electron ."
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"homepage":".",
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}目錄結(jié)構(gòu)為

之后的打包和平時的打包一樣即可。
集成Vue
原理和集成React類似
到此這篇關(guān)于Electron集成React和Vue流程方法講解的文章就介紹到這了,更多相關(guān)Electron集成React和Vue內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue結(jié)合openlayers按照經(jīng)緯度坐標實現(xiàn)錨地標記及繪制多邊形區(qū)域
OpenLayers是一個用于開發(fā)WebGIS客戶端的JavaScript包,最初基于BSD許可發(fā)行。OpenLayers是一個開源的項目,其設(shè)計之意是為互聯(lián)網(wǎng)客戶端提供強大的地圖展示功能,包括地圖數(shù)據(jù)顯示與相關(guān)操作,并具有靈活的擴展機制2022-09-09
vue element-ui實現(xiàn)動態(tài)面包屑導(dǎo)航
這篇文章主要為大家詳細介紹了vue element-ui實現(xiàn)動態(tài)面包屑導(dǎo)航,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-12-12
vue?中使用?this?更新數(shù)據(jù)的一次問題記錄
這篇文章主要介紹了vue?中使用?this?更新數(shù)據(jù)的一次大坑?,我在 vue 實例中聲明了一個數(shù)組屬性如?books: [],在異步請求的回調(diào)函數(shù)中使用?this.books = res.data.data;?進行數(shù)據(jù)更新,感興趣的朋友跟隨小編一起看看吧2022-11-11
vue實現(xiàn)的網(wǎng)易云音樂在線播放和下載功能案例
這篇文章主要介紹了vue實現(xiàn)的網(wǎng)易云音樂在線播放和下載功能,結(jié)合具體實例形式分析了網(wǎng)易云音樂相關(guān)接口調(diào)用與操作技巧,需要的朋友可以參考下2019-02-02

