Electron+React에서 Hello world
다음 단계로 만들어 갑니다.
구그하면 localhost:3000에서 시작한 React 앱을 로드하는 예가 많습니다만, 여기서는 빌드한 것을 로드하기로 합니다.
※환경: Windows 10 Home, Node.js v14.17.4, Electron v15.1.1
React 앱 만들기
먼저 create-react-app로 React 앱을 만듭니다.
앱명은 적당히 erhello로 합니다만 무엇이든 OK입니다.
> npx create-react-app erhello
일단 Hello world이므로 App.js
로 Hello, world!라고 표시하도록 변경합니다만, 그대로도 괜찮습니다.
App.jsimport logo from './logo.svg';
import './App.css';
function App() {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<p>
Hello, world!
</p>
</header>
</div>
);
}
export default App;
React 앱을 Electron에 표시
Electron을 추가로 설치합니다.
> cd erhello
> npm i -D electron
그런 다음 package.json을 편집합니다.
항상 엔트리 포인트의 파일 이름을 변경합니다.
또한 React 출력이 상대 경로에서 작동하도록homepage
지정합니다.
package.json ...
"main" : "main.js",
"homepage" : "./",
...
main.js는 지난번의 Electron 단독 Hello, world로 만든 것을 사용합니다.
이번 변경 사항은 읽을 index.html의 경로를 React의 빌드 대상에 맞추는 것입니다.
main.jsconst { app, BrowserWindow } = require('electron');
function createWindow () {
// ウインドウ作成
const mainWindow = new BrowserWindow({
width: 800,
height: 600,
});
// index.htmlの内容でウィンドウ表示
mainWindow.loadFile('./build/index.html'); // パス変更
}
// Electronの初期化完了時に呼ばれる
app.whenReady().then(() => {
createWindow();
// Mac用処理
app.on('activate', function () {
if (BrowserWindow.getAllWindows().length === 0) createWindow();
})
});
// (Mac以外は)ウインドウが全部閉じられたら終了
app.on('window-all-closed', function () {
if (process.platform !== 'darwin') app.quit();
});
빌드를 실행하고 Electron 앱을 실행해 봅니다.
> npm run build
> npx electron .
다음과 같이 Hello world 화면이 표시되면 성공합니다.
다음 번에는 Electron의 메인 프로세스와 통신을 시도하고 싶습니다.
Reference
이 문제에 관하여(Electron+React에서 Hello world), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/fumi-410/items/ad14ec72ea0bf73ea273
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
> npx create-react-app erhello
import logo from './logo.svg';
import './App.css';
function App() {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<p>
Hello, world!
</p>
</header>
</div>
);
}
export default App;
Electron을 추가로 설치합니다.
> cd erhello
> npm i -D electron
그런 다음 package.json을 편집합니다.
항상 엔트리 포인트의 파일 이름을 변경합니다.
또한 React 출력이 상대 경로에서 작동하도록
homepage
지정합니다.package.json
...
"main" : "main.js",
"homepage" : "./",
...
main.js는 지난번의 Electron 단독 Hello, world로 만든 것을 사용합니다.
이번 변경 사항은 읽을 index.html의 경로를 React의 빌드 대상에 맞추는 것입니다.
main.js
const { app, BrowserWindow } = require('electron');
function createWindow () {
// ウインドウ作成
const mainWindow = new BrowserWindow({
width: 800,
height: 600,
});
// index.htmlの内容でウィンドウ表示
mainWindow.loadFile('./build/index.html'); // パス変更
}
// Electronの初期化完了時に呼ばれる
app.whenReady().then(() => {
createWindow();
// Mac用処理
app.on('activate', function () {
if (BrowserWindow.getAllWindows().length === 0) createWindow();
})
});
// (Mac以外は)ウインドウが全部閉じられたら終了
app.on('window-all-closed', function () {
if (process.platform !== 'darwin') app.quit();
});
빌드를 실행하고 Electron 앱을 실행해 봅니다.
> npm run build
> npx electron .
다음과 같이 Hello world 화면이 표시되면 성공합니다.
다음 번에는 Electron의 메인 프로세스와 통신을 시도하고 싶습니다.
Reference
이 문제에 관하여(Electron+React에서 Hello world), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/fumi-410/items/ad14ec72ea0bf73ea273텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)