Electron
Electron:
Electronμ Chromiumκ³Ό Node.jsλ₯Ό μ¬μ©νμ¬ JavaScript, HTML, CSSλ₯Ό μ΄μ©νμ¬ Windows λλ Mac, 리λ μ€μμ μ§μ μ€μΉνμ¬ μ¬μ©ν μ μλ μ ν리μΌμ΄μ μ κ°λ° ν μ μλ€. ν¬λ‘μ€ νλ«νΌ μ§μμΌλ‘ μ΄ μΈ κ°μ μ΄μ체μ μμ build λκ³ λμνλ€
Install Electron
$ git clone https://github.com/electron/electron-quick-start
$ cd electron-quick-start
$ npm i && npm startnpm i(npm installμ μ€μλ§) βpackage.jsonμ μ μλ μμ‘΄μ± ν¨ν€μ§λ€μ μ€μΉν¨npm startβpackage.jsonμ μ μλ"start"μ€ν¬λ¦½νΈλ₯Ό μ€ν보ν΅
electron .λͺ λ Ήμ΄κ° μ€νλμ΄ Electron μ±μ΄ μ€νλ¨

Electron Debug
Electronμ Chromiumμ μ¬μ©νμκΈ° λλ¬Έμ Chromeμμ κ°λ° μ μ¬μ©νλ
devToolsλ₯Ό Electronμμλ μ¬μ©
Electronκ³Ό Chromiumμ κ΄κ³
Electronμ Chromiumμ λ΄μ₯ν λΈλΌμ°μ κΈ°λ° νλ μμν¬ μ¦, Electron μ±μ μ€ννλ©΄ λ΄λΆμ μΌλ‘ Chromiumμ΄ λμκ°λ©΄μ HTML, CSS, JavaScriptλ₯Ό λ λλ§
π₯μ 리νλ©΄, Chromiumμ μ€νμμ€ μΉ λΈλΌμ°μ μμ§μ΄κ³ , μ¬λ¬ λΈλΌμ°μ μ μ ν리μΌμ΄μ (Electron, Edge λ±)μμ μ¬μ©λκ³ μλ€
Electron Build
Electron μ ν리μΌμ΄μ μ κ°λ°ν ν, μ€μ μ€ν κ°λ₯ν νλ‘κ·Έλ¨(exe, dmg, AppImage λ±)μΌλ‘ λ³ννλ κ³Όμ μ λΉλ(Build) λΌκ³ νλ€
Electron μ±μ κΈ°λ³Έμ μΌλ‘ HTML, CSS, JavaScriptλ‘ μμ±λ μΉ μ ν리μΌμ΄μ μ΄μ§λ§, μ΄λ₯Ό Windows, macOS, Linuxμμ μ€νν μ μλ λ°μ€ν¬ν± μ ν리μΌμ΄μ μΌλ‘ ν¨ν€μ§ν΄μΌ ν¨
Electron λΉλλ₯Ό μ½κ² λμμ£Όλ ν¨ν€μ§λ€μ΄ μ‘΄μ¬νλ©°, λνμ μΈ λΉλ λκ΅¬λ‘ electron-builder μ¬μ©
κΈ°λ³Έ package.json μν
λ³ΈμΈ appλ±λ‘μ μν΄ μμ ν version
Electronμ΄ μ μμ μΌλ‘ μ€νλλμ§ νμΈ
κ·Έ λ€μ 본격μ μΈ κΈ°λ₯ ꡬν
ex)
μ€λμ€ μ¬μ (Howler.js, Web Audio API λ± μ¬μ©)
λ‘컬 νμΌ λΆλ¬μ€κΈ° (
fsλͺ¨λ μ¬μ©)UI λμμΈ (HTML, CSS, JavaScript)
μ€μ μ μ₯ (
electron-storeνμ©)μλ μ λ°μ΄νΈ (
electron-updaterνμ©, μ ν μ¬ν)
β κΈ°λ₯μ νλμ© μΆκ°νλ©΄μ
npm startλ‘ μ€ννλ©° ν μ€νΈ!
μ€μΉ νμΌ μμ΄ λΉλ ν
μ€νΈ (pack μ€ν)
μ€ν ν νμΈν μ¬ν
dist/ν΄λκ° μμ±λμλμ§ νμΈdist/νλ«νΌ-unpacked/ν΄λ λ΄μμ μ€ν κ°λ₯ν νμΌμ΄ μλμ§ νμΈμ±μ΄ μ μμ μΌλ‘ μ€νλλμ§ νμΈ
"npm run pack"μ μ€μΉ νμΌμ λ§λ€μ§ μκ³ μ€ν κ°λ₯ν λΉλλ§ μμ±ν¨.
π₯ μ΄ λ¨κ³μμ νμΌμ΄ μ μμ μΌλ‘ λΉλλλμ§ λ¨Όμ νμΈνλ κ² μ€μ
μ΅μ’
μ€μΉ νμΌ λΉλ (dist μ€ν)
μ± κ°λ°μ΄ μλ£λκ³ , μ€ν ν μ€νΈλ λ¬Έμ μλ€λ©΄ μ€μΉ νμΌμ μμ±
μ€ν ν νμΈν μ¬ν
dist/ν΄λμ OSλ³ μ€μΉ νμΌμ΄ μμ±λμλμ§ νμΈWindows β
.exemacOS β
.dmgLinux β
.AppImageor.deb
π₯ μ€μΉ νμΌμ μμ±ν ν, μ§μ μ€νν΄ λ³΄κ³ μ μμ μΌλ‘ λμνλμ§ νμΈ
λ°°ν¬ μ€λΉ
λ°°ν¬ λ°©λ² 1: GitHub Release μλ λ°°ν¬
GitHub μ μ₯μλ₯Ό λ§λ λ€.
electron-updaterλ₯Ό μ€μ νμ¬ GitHub Releaseλ₯Ό ν΅ν μλ μ λ°μ΄νΈ μ§μnpm run distμ€ν νdist/ν΄λμ μμ±λ μ€μΉ νμΌμ GitHub Releaseμ μ λ‘λ
λ°°ν¬ λ°©λ² 2: μλ λ°°ν¬
νμΌ κ³΅μ λ°©μ
dist/ν΄λμ μλ.exe,.dmg,.AppImageνμΌμ μ§μ 곡μμ체 μΉμ¬μ΄νΈμμ λ€μ΄λ‘λ λ§ν¬ μ 곡

Electron process ꡬ쑰
main process
main.js
Electronμ ν΅μ¬ λ‘μ§
μ±μ μ°½(Window)μ μμ±νκ³ κ΄λ¦¬
νμΌ μμ€ν μ κ·Ό, λ€μ΄ν°λΈ κΈ°λ₯ νΈμΆ, IPC ν΅μ μ²λ¦¬
BrowserWindowλ₯Ό ν΅ν΄ λ λλ¬ νλ‘μΈμ€λ₯Ό μ€ν
renderer process
renderer.js
UIλ₯Ό λ΄λΉνλ νλ‘μΈμ€ (HTML, CSS, JS μ€ν)
μ¬μ©μμ μ λ ₯μ κ°μ§νκ³ νλ©΄μ μ λ°μ΄νΈ
Electronμ
ipcRendererλ₯Ό μ¬μ©ν΄ λ©μΈ νλ‘μΈμ€μ ν΅μκΈ°λ³Έμ μΌλ‘ λΈλΌμ°μ νκ²½κ³Ό λμΌνκ² λμ (λ¨, 보μ μ€μ μ λ°λΌ Node.js κΈ°λ₯ μ ν κ°λ₯)
preload.js
preload.jsλ "λ©μΈ νλ‘μΈμ€(Main)μ λ λλ¬ νλ‘μΈμ€(Renderer) μ¬μ΄μ 보μ λΈλ¦Ώμ§ μνpreload.jsλ₯Ό μ¬μ©νλ©΄ 보μμ μ μ§νλ©΄μλ λ λλ¬μμ λ©μΈ νλ‘μΈμ€μ κΈ°λ₯(Node.js API, Electron API λ±)μ μ¬μ©ν μ μκ²ν΄μ€
preload.jsκ° νμν μ΄μElectronμμλ 보μμ κ°ννκΈ° μν΄
nodeIntegration: falseλ₯Ό κΆμ₯ νμ§λ§,nodeIntegration: falseλ₯Ό μ€μ νλ©΄ λ λλ¬μμrequire('electron')μ μ§μ μ¬μ©ν μ μμ κ·Έλμ λ λλ¬μμ λ©μΈ νλ‘μΈμ€ κΈ°λ₯μ μμ νκ² μ¬μ©ν μ μλλ‘preload.jsκ° νμ
Last updated