본문 바로가기

FrontEnd

Electron

Chromium과 Node.js를 사용하여 윈도우 또는 Mac, 리눅스에서 직접 설치하여 사용할 수 있는 데스크탑 애플리케이션을 개발

크로스플랫폼 지원한다 따라서 Electron만 익혀서 어느 운영체제에서든 동작하는 설치형 애플리케이션을 프로그래밍할 수 있다

Chromium :

오픈소스 프로젝트에서 만든 브라우저

크로미움 기반 브라우저: 크롬, 엣지, 오페라, 네이버웨일, 삼성인터넷 등

이걸 기반으로 여러가지 기능 및 요소를 추가하여 탄생한 것이 크롬이다

IPC :

프로세스 간 통신

Electron은 IPC를 사용하여 Main 프로세스와 Renderer 프로세스 간에 직렬화된 JSON 메시지를 동기적 또는 비동기적으로 통신한다.

on을 통해 메시지 또는 이벤트를 수신

ipcMain.on('CHANNEL_NAME', (evt, payload) => { })

send를 통해 메시지 또는 이벤트를 송신

ipcRenderer.send('CHANNEL_NAME', 'message')

Main Processor:

main.js라고 볼 수 있다 Electron 앱의 진입점이기도 하며, 앱의 Life Cycle을 관리한다

Renderer Processor:

Electron 앱의 Chromium 기반의 브라우저 창을 관리하는 모듈이다 Main과 달리 여러 개가 존재할 수 있다

ipcMain:

Renderer 프로세스(웹 페이지)가 보내는 메시지 또는 이벤트를 동기적 혹은 비동기적으로 처리한다 즉 웹페이지를 처리하는 프로세스인 Renderer 프로세스가 보내는 메시지를 Main 프로세스는 수신하여 처리한다

ipcMain에서 on을 통한 이벤트 수신

const { ipcMain } = require('electron')

ipcMain.on('CHANNEL_NAME', (evt, payload) => {
	console.log(payload)

	//reply를 통해 수신 후 다시 응답 
	evt.reply('IPC_RENDERER_CHANNEL_NAME', 'message')
})

ipcMain은 ipcRenderer처럼 send 메서드를 가지고 있지 않아서 메시지를 보낼때 webContents.send()를 사용해야한다

webContents.send를 이용한 send 방식

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

app.whenReady().then(() => {
	const win = new BrowserWindow({
		//options
})

win.webContents.send('IPC_RENDERER_CHANNEL_NAME', 'message')
})

ipcRenderer:

Main 프로세스로 동기 또는 비동기 메시지를 보낼 수 있고 Main 프로세스에서 webContents.send()로 메시지를 보내면 수신도 가능하다

ipcRenderer에서 send를 통한 이벤트 송신

const { ipcRenderer } = require('electron')

const payload = 'message'

ipcRenderer.send('CHANNEL_NAME', payload)

수신의 경우 on을 사용하여 받을 수 있다

'FrontEnd' 카테고리의 다른 글

React JS  (1) 2023.11.12
Vanila.js (2)  (0) 2023.11.12
Vanila.js (1)  (0) 2023.11.12
WebStorage  (1) 2023.11.12
HTML 태그 정리  (0) 2023.11.12