๋ค์ค ์ ์ ํธ์ง ๊ธฐ๋ฅ์ ๋ง๋ค๊ธฐ ์ํด ์์ผ์ ์ฌ์ฉํด๋ณด๊ณ ์๊ฐ๋จํ ์ฑํ
์ ๋ง๋ค์ด๋ณด๋ ค๊ณ ํ๋ค. ๋ก๊ทธ์ธ ํ, ์ฌ์ฉ์๊ฐ ์ฑํ
๋ฐฉ์ ์
๋ ฅํ๋ฉด ์๋ก์ด ์๋์ฐ์ ์ฑํ
๋ฐฉ์ ์ด์ด์ค๋ค. ์ฒซ ๋ฒ์งธ ๋ฉ์ธ ์๋์ฐ๋ฅผ ๋ซ์ผ๋ฉด ๋ชจ๋ ์๋์ฐ๋ฅผ ๋ซ์๋ฒ๋ฆด์ง ๊ณ ๋ฏผํ๋ค๊ฐ.๋ ํผ๋ฐ์ค๋ ์นด์นด์คํก์ผ๋ก ์ก์์ผ๋ฉฐ, ์ฑํ
์ฐฝ์ด ์ด๋ฆฐ ์ํ์์ ๋ฉ์ธ ์๋์ฐ(์ฑํ
์ฐฝ ๊ด๋ฆฌ ์๋์ฐ)๊ฐ ๊บผ์ ธ๋ ์ฑํ
์ฐฝ์ ์ด์์๋ค. ์ ๋ด์ฉ์ ๋ณด๋ฉดโ์์ผ๋ง ํ
์คํธํ์ง ์?์ง๋ฌธ์ ํ ์ ์์ง๋ง, ๋๋ ๋ญ๊ฐ ์๋ฒฝํจ(?)์ ์ถ๊ตฌํ์ฌ์ ํ๋๋ฅผ ๋ง๋ค๋๋ผ๋ ์ ๋๋ก ๋ง์ ธ๋ณด๊ณ ์ถ๋ค. ๐๏ธ WindowManager์ฐ์ ์๋์ฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด์ ๋งค๋์ ๋ฅผ ๋ง๋ค์ด์ค๋ค. ๋ด๊ฐ ๋ง๋ ๋งค๋์ ์ ์ธํฐํ์ด์ค๋ ๋ค์๊ณผ ๊ฐ๋ค.๊ธ์ ์ ๋ณด๊ณ ์ง์ ๊ตฌํํด๋ณด๊ณ ์ถ์ ์ฌ๋์ ์ธํฐํ์ด์ค๋ฅผ ๋ณด๊ณ ์ง์ ๊ตฌํํด๋ณด์๋ ์ข๋ค.export ..
Framework/Electron
๋๋ง์ ๋ฐ์คํฌ ์ฑ์ ๋ง๋๋ ค๋๋ฐ ๊ณ ์ ์ ์ธ ์คํ์ผ์ ์๋จ ํ์ดํ ๋ฐ๊ฐ ๋ง์์ ๋ค์ง ์๋๋ค. Youtube Music์ ๋ฐ์คํฌํ ์ฑ๋ง ๋ณด๋๋ผ๋ ๋ญ๊ฐ ๋ค์ํ๋ค. ( ์ ํ๋ธ ๋๊ธฐ์
์น๊ณ ๋ ๋ชป ์๊ธด ๊ฑฐ ๊ฐ๋ค...) ์ฐ๋ฆฌ๋ ์ปค์คํ
ํด๋ณด์. ๐๏ธ ํ์ดํ๋ฐ ํ๋ ์ ์ ๊ฑฐ ์ฐ์ ๊ธฐ์กด TitleBar๋ ์ฌ๋ผ์ง๋๋ก ๐electron/main.ts ์์ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์์ฑ๋ ๋ ํ์ดํ๋ฐ์ ๋ฉ๋ด๋ฐ๊ฐ ์๋ ์ํ๋ก ๋ณ๊ฒฝํ๋ค.unction createWindow() { win = new BrowserWindow({ icon: path.join(process.env.VITE_PUBLIC, "electron-vite.svg"), webPreferences: { preload: path.join(__dirname, ..
โ๏ธ๊ตฌ์กฐElectron-vite ํ๋ก์ ํธ๋ฅผ ์ค์นํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํด๋๊ฐ ๊ตฌ์ฑ๋๋ค.๐ญ ๋ฉ์ธ ํ๋ก์ธ์ค๐electron/main.ts import { app, BrowserWindow } from 'electron'import { createRequire } from 'node:module'import { fileURLToPath } from 'node:url'import path from 'node:path'โ
app : Electron์ฑ์ ์๋ช
์ฃผ๊ธฐ ์ ์ดโ
BrowserWindow: ์ฐฝ(์๋์ฐ) ์์ฑ ํด๋์คโ
createRequire/fileURLtoPath: ES Module ํ๊ฒฝ์์ __dirname, require ์ฌ์ฉ์ ์ํ ์ค์ process.env.APP_ROOT = path.join(__di..
๊ธฐ์กด ์์
ํ๋ ํ๋ก์ ํธ์์ ์ผ๋ ํธ๋ก ์ ์ ์ฉํ๊ณ ์ถ์ ๋ถ๋ค์์ velog electron์ ์ฐธ๊ณ ํด์ฃผ์ธ์. [ Electron ] ๋ก์ปฌ์์ ์ผ๋ ํธ๋ก ์คํ[ Electron ] ๋ก์ปฌ์์ ์ผ๋ ํธ๋ก ์คํ์ ๋ํด ์์๋ณด์velog.io ์์ฑ์๋ vite์ electron์ ์ฌ์ฉํ ๊ฒ์ด๋ฏ๋ก ํ ๋ฒ์ ์ค์นํ ๊ฒ์ด๋ค. โฌ๏ธ ์ค์นnpm create electron-vite ๋ค์ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ์ฌ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ค. > npx> cev .? Project tempalte: // ์ํ๋ ํ
ํ๋ฆฟ ์ ํ> Vue> React> VanillaScaffolding Project in Done. Now run: ์ํ๋ ํ
ํ๋ฆฟ์ ์ค์ ํ๋ฉด ์ค๋น๋ ๋๋๋ค. ํด๋์ ์ ๊ทผํ์ฌnpm install์ ํตํด ํ์ํ ๋ชจ๋๋ค์ ๋ค์ด ๋ฐ์์ค๋ค. ๐?..
โกElectron์ด๋?Electron(์ดํ, ์ผ๋ ํธ๋ก )์ ์น ๊ธฐ์ (HTML, CSS, JavaScript)์ ์ด์ฉํ์ฌ ๋ฐ์คํฌํฑ ์ดํ๋ฆฌ์ผ์ด์
์ ๋ง๋ค ์ ์๋ ์คํ ์์ค ํ๋ ์์ํฌ์ด๋ค.Chrome ๊ธฐ๋ฐ์ ๋ ๋๋ฌ + Node.js ๋ฐํ์์ ๋ฌถ์ด ์ ๊ณตํ๋ฏ๋ก ์น ๊ฐ๋ฐ์๋ ๋ณ๋์ ์ธ์ด๋ฅผ ๋ฐฐ์ฐ์ง ์๊ณ ๋ ๋ฐ์คํฌํ ์ฑ์ ๋ง๋ค ์ ์๋ค. ๊ณต์ ํํ์ด์ง์๋ ๋ค์๊ณผ ๊ฐ์ด ์ ๋ฆฌ๋์ด ์๋ค.โ๏ธ ๊ตฌ์กฐ๐ญ Main Process์ฑ์ ์๋ช
์ฃผ๊ธฐ, ๋ฉ๋ด, ํ์ผ ์์คํ
์ ๊ทผ ๊ฐ์ ๋ค์ดํฐ๋ธ ๊ธฐ๋ฅ์ ๊ด๋ฆฌํ๋ค. ๐จ Renderer ProcessChrominum ๊ธฐ๋ฐ์ผ๋ก ๋์๊ฐ๋ UI ์์ญ (์น ํ์ด์ง์ฒ๋ผ ๋์)์ฆ, "Node.js + ์น๋ธ๋ผ์ฐ์ ์์ง์ ํจ๊ป ๋ฒ๋ค๋งํ ๋ฐ์คํฌํฑ ์ฑ ๋ฐํ์"์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค. ๐๐ป ์ฅ์ โ
์น ๊ธฐ์ ๋ง์ผ๋ก Wind..