Table of contents
electron ๊ณต์ํํ์ด์ง๋ฅผ ์ฐธ๊ณ ํ์ฌ ์์ฑํ ํ์ด์ง์ ๋๋ค.
Electron Introduction
1. what is electron?
Electron์ JavaScript, HTML, CSS๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์คํฌํ ์ดํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ถํ๊ธฐ ์ํ ํ๋ ์์ํฌ.
๋ณ๋์ ๋ค์ดํฐ๋ธ ๊ฐ๋ฐ ๊ฒฝํ์์ด Chromium(Frontend)๊ณผ Node.js(Backend)๋ฅผ ์ด์งํ์ผ์ ํฌํจ์์ผ(ํ๋์ ๋ฐํ์์ผ๋ก ํตํฉํ์ฌ ๊ตฌ์ฑ)
Electron์ ํ๋์ JavaScript ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ ์งํ๋ฉด์ Windows, macOS, Linux์์ ์๋ํ๋ ํฌ๋ก์ค ํ๋ซํผ ์ฑ์ ๋ง๋ค ์ ์๊ฒ ํด์ค๋ค.
2.process model
chromium์ ๋ค์ค ์ํคํ ์ณ๋ฅผ ๋ฌผ๋ ค๋ฐ์ main process์ render process ๋ ๊ฐ์ง ์ ํ์ ํ๋ก์ธ์ค ์ ๊ณต
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
Electron์ ํ๋ก์ธ์ค ๋ชจ๋ธ์์ ๋ฉ์ธํ๋ก์ธ์ค์ ๋ ๋๋ฌ ํ๋ก์ธ์ค๊ฐ ์๋ก ๋ค๋ฅธ ์ญํ ์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ฉ์ธ ํ๋ก์ธ์ค์ ๋ ๋๋ฌ ํ๋ก์ธ์ค ์ฌ์ด์ ํต์ ์ ํ ์ ์๋๋กย ipcRenderer์ย ipcMainย ๋ชจ๋์ ์ ๊ณต ์๋ฌธ๋ณด๊ธฐ
[์ฐธ๊ณ ์๋ฃ]
Electron ๊ฐ์ ๋ฐ ๊ตฌ์กฐ
์ผ๋ ํธ๋ก (Electron) ์ ๋ฆฌ