Web/Node.JS

Electron 첫 번째 앱 구축

이영훈닷컴 2025. 2. 5. 10:58
728x90

필수 개념

  • Electron은 웹 기술(HTML, CSS, JavaScript)로 데스크톱 애플리케이션을 만들 수 있는 프레임워크이다.
  • Electron 앱은 두 개의 주요 프로세스로 나뉜다:
    • 메인 프로세스 (Main Process): Node.js 환경에서 실행되며 애플리케이션 수명 주기를 관리하고, OS와 상호작용한다.
    • 렌더러 프로세스 (Renderer Process): 각 창에서 실행되며 웹 기술을 사용하여 UI를 렌더링 한다.

 

프로젝트 설정

 

폴더 생성 및 npm 초기화

mkdir my-electron-app && cd my-electron-app
npm init -y

 

Electron 설치 (개발 의존성)

npm install electron --save-dev

 

.gitignore 추가
node_modules/를 포함하여 불필요한 파일을 Git에서 제외해야 한다.

 

Electron 앱 실행

 

main.js 생성 및 기본 코드 작성

console.log('Hello from Electron 👋')


package.json 수정 (scripts 추가)

"scripts": {
  "start": "electron ."
}

 

실행

npm run start

 

BrowserWindow로 UI 추가

 

index.html 생성

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Hello from Electron</title>
  </head>
  <body>
    <h1>Hello from Electron renderer!</h1>
  </body>
</html>


main.js 수정

const { app, BrowserWindow } = require('electron')

const createWindow = () => {
  const win = new BrowserWindow({
    width: 800,
    height: 600
  })
  win.loadFile('index.html')
}

app.whenReady().then(() => {
  createWindow()
})

 

▶ 실행 후 결과
실행하면 index.html이 Electron 창에 표시된다.

 

운영 체제별 창 관리

 

모든 창이 닫히면 앱 종료 (Windows & Linux)

app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') app.quit()
})

 

macOS에서 창이 닫혀도 앱 실행 유지

app.on('activate', () => {
  if (BrowserWindow.getAllWindows().length === 0) {
    createWindow()
  }
})

 

배운 점 정리

  • Electron 프로젝트는 npm init으로 설정하고, electron을 devDependency로 설치한다.
  • 메인 프로세스(main.js)에서 BrowserWindow를 생성하여 HTML 파일을 로드한다.
  • OS별 창 관리 방법을 구현해야 한다. (Windows/Linux vs macOS)
  • 다음 학습 목표: Renderer 프로세스 보강 & 프로세스 간 통신 (IPC) 배우기 🚀
728x90