Electron集成React和Vue流程方法講解
集成React
1. 熱調(diào)試
在React項(xiàng)目目錄下安裝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" ] } }
打開(kāi)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, //不想要控制臺(tái)直接把這段刪除 } }); 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/")
打開(kāi)兩個(gè)終端,一個(gè)運(yùn)行React
npm start
另一個(gè)執(zhí)行
npm run electron-start
程序運(yùn)行正常
2. 打包
默認(rèn)情況下,homepage 是 http://localhost:3000,build 后,所有資源文件路徑都是 /static,而 Electron 調(diào)用的入口是 file :協(xié)議,/static 就會(huì)定位到根目錄去,所以找不到靜態(tài)文件。在 package.json 文件中添加 homepage 字段并設(shè)置為"."后,靜態(tài)文件的路徑就變成了相對(duì)路徑,就能正確地找到了添加如下配置:
"homepage":".",
隨后運(yùn)行build構(gòu)建項(xiàng)目,構(gòu)建完成后可以在build文件夾下執(zhí)行index.html看看網(wǎng)站是否可以正確運(yùn)行。
npm run build
如果可以。在main.js中將代碼
win.loadURL("http://localhost:3000/")
更改為,即載入靜態(tài)文件,載入U(xiǎn)RL可以作為熱調(diào)試,打包時(shí)修改為靜態(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, //不想要控制臺(tái)直接把這段刪除 } }); 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)為
之后的打包和平時(shí)的打包一樣即可。
集成Vue
原理和集成React類似
到此這篇關(guān)于Electron集成React和Vue流程方法講解的文章就介紹到這了,更多相關(guān)Electron集成React和Vue內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Electron+React進(jìn)行通信的方法
- Vue和React中快速使用Electron的簡(jiǎn)單教程
- Electron整合React使用搭建開(kāi)發(fā)環(huán)境的步驟詳解
- 詳解使用webpack+electron+reactJs開(kāi)發(fā)windows桌面應(yīng)用
- 使用Electron構(gòu)建React+Webpack桌面應(yīng)用的方法
- vue?+?electron應(yīng)用文件讀寫操作
- 用electron打包vue項(xiàng)目中的報(bào)錯(cuò)問(wèn)題及解決
- 如何用electron把vue項(xiàng)目打包為桌面應(yīng)用exe文件
相關(guān)文章
基于VuePress 輕量級(jí)靜態(tài)網(wǎng)站生成器的實(shí)現(xiàn)方法
VuePress是一個(gè)基于Vue的輕量級(jí)靜態(tài)網(wǎng)站生成器以及為編寫技術(shù)文檔而優(yōu)化的默認(rèn)主題。這么文章給大家詳細(xì)介紹了vuepress 靜態(tài)網(wǎng)站生成器的方法,需要的朋友參考下吧2018-04-04vue+axios全局添加請(qǐng)求頭和參數(shù)操作
這篇文章主要介紹了vue+axios全局添加請(qǐng)求頭和參數(shù)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07vue實(shí)現(xiàn)滑動(dòng)切換效果(僅在手機(jī)模式下可用)
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)滑動(dòng)切換效果,僅在手機(jī)模式下可用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07在Vue項(xiàng)目中,防止頁(yè)面被縮放和放大示例
今天小編就為大家分享一篇在Vue項(xiàng)目中,防止頁(yè)面被縮放和放大示例,具有很好的參考 價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10vue el-tree 默認(rèn)展開(kāi)第一個(gè)節(jié)點(diǎn)的實(shí)現(xiàn)代碼
這篇文章主要介紹了vue el-tree 默認(rèn)展開(kāi)第一個(gè)節(jié)點(diǎn)的實(shí)現(xiàn)代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05vue使用showdown并實(shí)現(xiàn)代碼區(qū)域高亮的示例代碼
這篇文章主要介紹了vue使用showdown并實(shí)現(xiàn)代碼區(qū)域高亮的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10vue-treeselect及el-tree點(diǎn)擊節(jié)點(diǎn)獲取上級(jí)節(jié)點(diǎn)的數(shù)據(jù)方式
這篇文章主要介紹了vue-treeselect及el-tree點(diǎn)擊節(jié)點(diǎn)獲取上級(jí)節(jié)點(diǎn)的數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07vue中使用unity3D如何實(shí)現(xiàn)webGL將要呈現(xiàn)的效果
這篇文章主要介紹了vue中使用unity3D如何實(shí)現(xiàn)webGL將要呈現(xiàn)的效果,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07