1. React์ electron ์ ์ฉํ๊ธฐ

https://2ssue.github.io/programming/electron-react/
#create-react-appํ electron ์ง์ด๋ฃ๊ธฐ
npm init
npm install create-react-app --save
npx create-react-app {project_name}
cd {project_name}
npm install electron --save-dev
๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ
{project_name}
โโโ public # ์ ์ ํ์ผ. react๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ํน๋ณํ ๋ณ๊ฒฝํ ๋ด์ฉ์ ์๋ค.
โโโ src # javascript ํ์ผ. react routing, electron๋ก๋ฉ ๋ฑ์ ์์
์ ์งํ.
โ โโโ App.js
โ โโโ index.js
โ โโโ index.css
โ โโโ ... # ์ด ์ธ ํ์ผ์ ์ญ์ ํด๋ ๋ฌด๋ฐฉ
โโโ package.json
โโโ package-lock.json
electron ์คํ ํ์ผ ์ถ๊ฐ
- /src/electron-starter.js
- electron-quick-start์ main.js ๋ณต์ฌ ๋ถ์ฌ๋ฃ๊ธฐ
// Modules to control application life and create native browser window
const {app, BrowserWindow} = require('electron')
const path = require('path')
function createWindow () {
// Create the browser window.
const mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
preload: path.join(__dirname, 'preload.js')
}
})
// and load the index.html of the app.
mainWindow.loadFile('index.html')
// Open the DevTools.
// mainWindow.webContents.openDevTools()
}
// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.
app.whenReady().then(() => {
createWindow()
app.on('activate', function () {
// On macOS it's common to re-create a window in the app when the
// dock icon is clicked and there are no other windows open.
if (BrowserWindow.getAllWindows().length === 0) createWindow()
})
})
// Quit when all windows are closed, except on macOS. There, it's common
// for applications and their menu bar to stay active until the user quits
// explicitly with Cmd + Q.
app.on('window-all-closed', function () {
if (process.platform !== 'darwin') app.quit()
})
// In this file you can include the rest of your app's specific main process
// code. You can also put them in separate files and require them here.
mainWindow.loadFile()
โmainWindow.loadURL('http://localhost:3000')๋ณ๊ฒฝ
package.json ๋ณ๊ฒฝ ๋ฐ ์ถ๊ฐ
- "main": "src/electron-starter.js"๋ฅผ ์ถ๊ฐ
- script์ "electron": "electron ."์ ์ถ๊ฐ
{
"name": "electron-test",
"version": "0.1.0",
"private": true,
"dependencies": {
"electron": "^7.0.1",
"electron-builder": "^22.1.0",
"react": "^16.11.0",
"react-dom": "^16.11.0",
"react-scripts": "3.2.0",
},
**"main": "src/electron-starter.js",**
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject",
"electron": "electron ." //์ฌ๊ธฐ ์ถ๊ฐ
}
}
react ์๋ฒ ํ์ฑํ
npm start
electron ์ฑ ์คํ
npm run electron
2. Electron์ react ์ ์ฉํ๊ธฐ
https://ohrora-developer.tistory.com/4
electron create app
npx create-electron-app electron-app
cd electron-app
npm ํจํค์ง ์ค์น
npm install
electron ์คํ
npm start
react ํ๋ก์ ํธ๋ฅผ electron์ ์ค์นํ๊ธฐ
npx create-react-app react-electron
electron ํจํค์ง ์ถ๊ฐ
npm add --dev electron
Electron ์คํ ์คํฌ๋ฆฝํธ ์ถ๊ฐํ๊ธฐ
- electron package.json ์ถ๊ฐ
"scripts": {
....,
"electron": "electron ."
},
Electron Entry point ์คํฌ๋ฆฝํธ ์ถ๊ฐํ๊ธฐ
- electron package.json root
"main": "src/main.js",
main.js ์ถ๊ฐ
- src/main.js ํ์ผ์ ์์ฑ
- https://github.com/electron/electron-quick-start/blob/master/main.js ๋ณต์ฌ
- win.loadFile(โindex.htmlโ) ๋ถ๋ถ์ ์๋์ ๊ฐ์ด ๋ณ๊ฒฝ
win.loadURL('http://localhost:3000')
Reference
'Development > Electron' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Electron] ipcRenderer.invoke & ipcMin.handle (0) | 2023.06.15 |
---|---|
[Electron] dialog.showOpenDialog() (0) | 2023.06.15 |
[Electron] electron ์์ด์ฝ ๋ฃ๊ธฐ (0) | 2023.01.25 |
[Electron]Electron-forge (0) | 2023.01.12 |
[Electron]Electron (0) | 2023.01.11 |
๋๊ธ