參考文章:https://blog.csdn.net/qq_25881261/article/details/81559794html
https://blog.csdn.net/easyClub_hanjixin/article/details/81178627react
1.打開react項目,安裝npm i electron --Sweb
2.在react項目根目錄建立main.js(與package.json同級)npm
const { app, BrowserWindow } = require('electron') const url = require('url') const path = require('path') let win function createWindow() { // 建立瀏覽器窗口。 win = new BrowserWindow({ width: 800, height: 600 }) // 加載應用----react 打包 生產環境 win.loadURL(url.format({ pathname: path.join(__dirname, './build/index.html'), protocol: 'file:', slashes: true })) // 而後加載應用的 index.html。 url 及本地文件形式 // win.loadURL('http://localhost:3000') // 開發環境 // win.loadFile('public/index.html') //若是想要讓electron加載本地打包好的React文件的build文件下的內容是這樣子的:(這個問題困擾我好久,解決了。分享下2019-4-29添加) // win.loadURL(`file://${path.join(__dirname, '../build/index.html')}`) // 打開開發者工具 win.webContents.openDevTools() // 當 window 被關閉,這個事件會被觸發。 win.on('closed', () => { // 取消引用 window 對象,若是你的應用支持多窗口的話, // 一般會把多個 window 對象存放在一個數組裏面, // 與此同時,你應該刪除相應的元素。 win = null }) } // Electron 會在初始化後並準備 // 建立瀏覽器窗口時,調用這個函數。 // 部分 API 在 ready 事件觸發後才能使用。 app.on('ready', createWindow) // 當所有窗口關閉時退出。 app.on('window-all-closed', () => { // 在 macOS 上,除非用戶用 Cmd + Q 肯定地退出, // 不然絕大部分應用及其菜單欄會保持激活。 if (process.platform !== 'darwin') { app.quit() } }) app.on('activate', () => { // 在macOS上,當單擊dock圖標而且沒有其餘窗口打開時, // 一般在應用程序中從新建立一個窗口。 if (win === null) { createWindow() } }) // 在這個文件中,你能夠續寫應用剩下主進程代碼。 // 也能夠拆分紅幾個文件,而後用 require 導入。
3.在package.json中添加json
"scripts": {
"electron-start": "electron .",
}
"main": "main.js",
"homepage":".",
4.啓動Electron
npm start :啓動react項目
npm run electron-start:啓動electron