Table of contents

electron ๊ณต์‹ํ™ˆํŽ˜์ด์ง€๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์ž‘์„ฑํ•œ ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค.

Electron Introduction

1. what is electron?

web_application27.png

Electron์€ JavaScript, HTML, CSS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์Šคํฌํƒ‘ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ.
๋ณ„๋„์˜ ๋„ค์ดํ‹ฐ๋ธŒ ๊ฐœ๋ฐœ ๊ฒฝํ—˜์—†์ด Chromium(Frontend)๊ณผ Node.js(Backend)๋ฅผ ์ด์ง„ํŒŒ์ผ์— ํฌํ•จ์‹œ์ผœ(ํ•˜๋‚˜์˜ ๋Ÿฐํƒ€์ž„์œผ๋กœ ํ†ตํ•ฉํ•˜์—ฌ ๊ตฌ์„ฑ)
Electron์€ ํ•˜๋‚˜์˜ JavaScript ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ Windows, macOS, Linux์—์„œ ์ž‘๋™ํ•˜๋Š” ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

2.process model

chromium์˜ ๋‹ค์ค‘ ์•„ํ‚คํ…์ณ๋ฅผ ๋ฌผ๋ ค๋ฐ›์•„ main process์™€ render process ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์˜ ํ”„๋กœ์„ธ์Šค ์ œ๊ณต

web_application28.png

main process
Node.js ๊ธฐ๋ฐ˜์œผ๋กœ Node.js์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“  ๋ชจ๋“ˆ(all of Node.js APIs) ์‚ฌ์šฉ ๊ฐ€๋Šฅ, back-end์˜ ์˜์—ญ. ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ง„์ž…์  ์—ญํ• (the applicationโ€™s entry point). electron application ๋‹น 1๊ฐœ๋งŒ ์กด์žฌํ•  ์ˆ˜ ์žˆ์Œ.

  • window management
    create and manage application windows with theย BrowserWindowย module
    ํ™”๋ฉด์— ์ฐฝ์„ ๋„์šฐ๊ณ  ๋„๋Š” ๊ธฐ๋ณธ์ ์ธ ๋™์ž‘๋ถ€ํ„ฐ ์ž๋™ ์—…๋ฐ์ดํŠธ, ๋ฉ”๋‰ด ์ปค์Šคํ…€ ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•œ๋‹ค. ๋˜ํ•œ Renderer Process์™€์˜ ํ†ต์‹ ์„ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ํ™”๋ฉด์„ ์ฐฝ์— ๋„์šฐ๊ฒŒ ๋œ๋‹ค
  • Application lifecycle (์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒ๋ช…์ฃผ๊ธฐ ์ œ์–ด)

render process
HTML, CSS, JavaScript๋กœ ์ด๋ฃจ์–ด์ง€๋Š”, front-end์˜ ์˜์—ญ. ์ฝ˜ํ…์ธ ๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ์—ญํ• .
chromium์˜ ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๊ทธ๋Œ€๋กœ ์ด์šฉ, ์ผ๋ ‰ํŠธ๋ก  ์•ˆ์—์„œ ๋ณด์ด๋Š” ๊ฐ๊ฐ์˜ ์›นํŽ˜์ด์ง€๋Š” ์ž์‹ ์˜ process ์•ˆ์—์„œ ๋™์ž‘. electron application ๋‹น ๊ฐœ์ˆ˜ ์ œํ•œ ์—†์ด ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ์Œ.

๋ฉ”์ธ ํ”„๋กœ์„ธ์Šค์™€ ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค์˜ ์ฐจ์ด์ 

์›๋ฌธ๋ณด๊ธฐ

๋ฉ”์ธ ํ”„๋กœ์„ธ์Šค๋Š”ย BrowserWindowย Class๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ์ฐฝ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.ย  BrowserWindowย ์ธ์Šคํ„ด์Šค๋Š” ๋”ฐ๋กœ ๋ถ„๋ฆฌ๋œ ํ”„๋กœ์„ธ์Šค์—์„œ ๋ Œ๋”๋ง ๋˜๋ฉฐ ์ด ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.ย BrowserWindowย ์ธ์Šคํ„ด์Šค๊ฐ€ ์†Œ๋ฉธํ•  ๋•Œ ๊ทธ ์ฐฝ์˜ ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋„ ๊ฐ™์ด ์†Œ๋ฉธํ•ฉ๋‹ˆ๋‹ค.

๋ฉ”์ธ ํ”„๋กœ์„ธ์Šค๋Š” ๋ชจ๋“  ์›น ํŽ˜์ด์ง€์™€ ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉฐ ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋Š” ๊ฐ๊ฐ์˜ ํ”„๋กœ์„ธ์Šค์— ๊ณ ๋ฆฝ๋˜๋ฉฐ ์›น ํŽ˜์ด์ง€์˜ ์ž‘๋™์—๋งŒ ์˜ํ–ฅ์„ ๋ผ์นฉ๋‹ˆ๋‹ค.

์›น ํŽ˜์ด์ง€ ๋‚ด์—์„  ๊ธฐ๋ณธ์ ์œผ๋กœ ๋„ค์ดํ‹ฐ๋ธŒ GUI์™€ ๊ด€๋ จ๋œ API๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†๋„๋ก ์„ค๊ณ„ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์›น ํŽ˜์ด์ง€ ๋‚ด์—์„œ ๋„ค์ดํ‹ฐ๋ธŒ GUI ๋ฆฌ์†Œ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ๋ณด์•ˆ์— ์ทจ์•ฝํ•˜๊ณ  ๋ฆฌ์†Œ์Šค๋ฅผ ๋ˆ„์ˆ˜์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ผญ ์›น ํŽ˜์ด์ง€ ๋‚ด์—์„œ API๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋ฉด ๋ฉ”์ธ ํ”„๋กœ์„ธ์Šค์—์„œ ๊ทธ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฉ”์ธ ํ”„๋กœ์„ธ์Šค์™€ ํ†ต์‹ ์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Electron์—๋Š” ๋ฉ”์ธ ํ”„๋กœ์„ธ์Šค์™€ ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค ์‚ฌ์ด์— ํ†ต์‹ ์„ ํ•  ์ˆ˜ ์žˆ๋„๋กย ipcRenderer์™€ย ipcMainย ๋ชจ๋“ˆ์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š”ย remoteย ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ RPC ์Šคํƒ€์ผ๋กœ ํ†ต์‹ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค

3.Inter-Process Communication (IPC)

tutorial IPC
web_application29.png
Electron์˜ ํ”„๋กœ์„ธ์Šค ๋ชจ๋ธ์—์„œ ๋ฉ”์ธํ”„๋กœ์„ธ์Šค์™€ ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ์—ญํ• ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”์ธ ํ”„๋กœ์„ธ์Šค์™€ ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค ์‚ฌ์ด์— ํ†ต์‹ ์„ ํ•  ์ˆ˜ ์žˆ๋„๋กย ipcRenderer์™€ย ipcMainย ๋ชจ๋“ˆ์„ ์ œ๊ณต ์›๋ฌธ๋ณด๊ธฐ

[์ฐธ๊ณ ์ž๋ฃŒ]
Electron ๊ฐœ์š” ๋ฐ ๊ตฌ์กฐ
์ผ๋ ‰ํŠธ๋ก (Electron) ์ •๋ฆฌ