Electron: ๋ชจ๋ฐ”์ผ ์ง€์›

์— ๋งŒ๋“  2014๋…„ 08์›” 08์ผ  ยท  65์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: electron/electron

atom-shell์ด โ€‹โ€‹iOS/Android๋ฅผ ์ง€์›ํ•œ๋‹ค๋ฉด ๊ต‰์žฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์ง€์›์„ ๋‹ฌ์„ฑํ•˜๋ ค๋ฉด ๋ฌด์—‡์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ? ๊ด€๋ จ #366

enhancement

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์•„๋งˆ๋„ ์—ฌ๋Ÿฌ๋ถ„์€ (์–ด์จŒ๋“ ) ํ™˜๊ฒฝ์„ ๊ฐ์ง€ํ•˜์—ฌ (๋Ÿฐํƒ€์ž„ ์‹œ ๋˜๋Š” ๋นŒ๋“œ ์ค‘์— ์ง€์ •) Electron API๊ฐ€ ์šฐ๋ฆฌ ๋ชจ๋ฅด๊ฒŒ Cordova ๋ชจ๋“ˆ(๋˜๋Š” ๊ธฐ๋ณธ ์ฝ”๋“œ)์„ ๋‹จ์ˆœํžˆ ํ˜ธ์ถœํ•˜๋„๋ก ํ•˜์—ฌ ์ตœ์†Œํ•œ Cordova ๋“ฑ์„ ์ž˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋ฏธ์นœ ๋“ฏ์ด ๊ต‰์žฅ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  65 ๋Œ“๊ธ€

๋‚˜๋Š” atom-shell์ด โ€‹โ€‹์ฃผ๋กœ atom ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ๋ฅผ ์œ„ํ•ด ๋นŒ๋“œ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฏ€๋กœ ๋ชจ๋ฐ”์ผ ํ”Œ๋žซํผ์„ ์ง€์›ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. HTML5 ๋ชจ๋ฐ”์ผ ์•ฑ์—๋Š” Phonegap๊ณผ Cordova๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ, ํ•˜์ง€๋งŒ node.js ๋ชจ๋“ˆ์—์„œ ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•˜๊ณ  ์ €์ˆ˜์ค€ ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ชจ๋ฐ”์ผ ํ”Œ๋žซํผ์˜ ๊ฒฝ์šฐ ๊ฑฐ์˜ ๋ชจ๋“  atom-shell์˜ API๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋ฐ”์ผ ํ”Œ๋žซํผ์€ ์ง€์›ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ์—ฌ๋Ÿฌ๋ถ„์€ (์–ด์จŒ๋“ ) ํ™˜๊ฒฝ์„ ๊ฐ์ง€ํ•˜์—ฌ (๋Ÿฐํƒ€์ž„ ์‹œ ๋˜๋Š” ๋นŒ๋“œ ์ค‘์— ์ง€์ •) Electron API๊ฐ€ ์šฐ๋ฆฌ ๋ชจ๋ฅด๊ฒŒ Cordova ๋ชจ๋“ˆ(๋˜๋Š” ๊ธฐ๋ณธ ์ฝ”๋“œ)์„ ๋‹จ์ˆœํžˆ ํ˜ธ์ถœํ•˜๋„๋ก ํ•˜์—ฌ ์ตœ์†Œํ•œ Cordova ๋“ฑ์„ ์ž˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋ฏธ์นœ ๋“ฏ์ด ๊ต‰์žฅ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

+1 @trusktr

@trusktr Cordova์— ๋Œ€ํ•œ ํ˜ธํ™˜์„ฑ ์‹ฌ์„ ์ œ๊ณตํ•˜๋Š” ํ›Œ๋ฅญํ•œ ํƒ€์‚ฌ ๋ชจ๋“ˆ์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค.

์ •๋ง ์ด๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์›น ํ”Œ๋žซํผ์˜ ๋ฏธ๋ž˜๋Š” ์ด๋Ÿฌํ•œ ๋ฐฉํ–ฅ์œผ๋กœ ์›€์ง์—ฌ์•ผ ์ง„์ •ํ•œ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์•ฑ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ๋ฐฐ์ œ๋˜์ง€ ์•Š๊ธฐ๋ฅผ ์ •๋ง๋กœ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋ฒŒ์จ 2016๋…„์ด๋ผ๋Š”๊ฒŒ ๋ฏฟ๊ฒจ์ง€์ง€๊ฐ€ ์•Š๊ณ  ์•„์ง๋„ ๊ทธ๋Ÿฐ๊ฒŒ ์—†์Šต๋‹ˆ๋‹ค.

@emin93 @zcbenz ๊ฐ€ ์ด๋ฏธ ์ง€์ ํ–ˆ๋“ฏ์ด ์ด๊ฒƒ์€ ๊ฑด์„ค์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Electron API๋ฅผ ๋ชจ๋ฐ”์ผ๋กœ ์ด์‹ํ•˜๋Š” ๊ฒƒ์€ ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ตœ์†Œํ•œ์˜ ์ œ์•ˆ ์—†์ด ๊ธฐ๋Šฅ์„ ์š”๊ตฌํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

@YuriSolovyov ๋‚˜๋Š” Electron์„ ์ง์ ‘ ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค ๋Œ€์•ˆ์ด ์—†๊ณ  ๊ทธ๊ฒƒ์ด ๋‚˜๋ฅผ ์ขŒ์ ˆ์‹œํ‚ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋„ค ๋ง์ด ๋งž์•„์š”. ์‚ฌ์‹ค ๊ทธ๋Ÿฐ ์–˜๊ธฐ๋ฅผ ํ•˜๊ธฐ์— ์ ์ ˆํ•œ ๊ณณ์ด ์•„๋‹™๋‹ˆ๋‹ค.

๋ชจ๋ฐ”์ผ์šฉ Electron์€ ์ •๋ง ๋Œ€๋‹จํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ช‡ ๊ฐ€์ง€ Electron ์•ฑ์„ ๊ฐœ๋ฐœํ–ˆ๊ณ  ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ๋ž‘ํ•˜์ง€๋งŒ ๋งค์ผ ๋ชจ๋ฐ”์ผ์—์„œ๋„ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ข…๋‹จ ๊ฐ„ ํ”Œ๋žซํผ ์ง€์›(IOS, Android, Windows, OSX, Linux)์„ ๋ณด์—ฌ์ฃผ๋Š” ์œ ์ผํ•œ ๊ต์ฐจ ํ”Œ๋žซํผ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” Xamarin ์ด์ง€๋งŒ C#์œผ๋กœ ์ฝ”๋”ฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Microsoft๊ฐ€ ์ด์ œ Xamarin์„ ์†Œ์œ ํ•˜๊ณ  ๋…ธ๋“œ๋ฅผ ์ž์ฒด JS ์—”์ง„์œผ๋กœ ์ด์‹ํ•˜๋Š” ๋ฐ ํฐ ์ง„์ „์„ ์ด๋ฃจ๊ณ  ์žˆ๋Š” ์ฆ‰์‹œ Xamarin์ด JS ์ฝ”๋“œ๋ฅผ ํ—ˆ์šฉํ•˜๋ฉด ๋†€๋ผ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ผ๋ถ€ ๊ธฐ์—… ํ›„์›์ž๊ฐ€ ๋ชจ๋ฐ”์ผ์šฉ ์ „์ž ํฌํŠธ/ํฌํฌ์— ์ž๊ธˆ์„ ์ง€์›ํ•˜์—ฌ ๊ฒฐ๊ตญ ๋™์ผํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ๊ตฌ์›Œ์ ธ ์™„์ „ํ•œ JS ๊ธฐ๋ฐ˜ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์ง„์‹ฌ์œผ๋กœ ๋ฐ”๋ž๋‹ˆ๋‹ค.

ํ›Œ๋ฅญํ•œ ์ผ์„ ํ•ด์ฃผ์‹  Electron ํŒ€์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

@cjfromthesea ์˜ ์›๋ž˜ ์งˆ๋ฌธ์„ ๋ฐ˜์˜ํ•˜์—ฌ ๋ชจ๋ฐ”์ผ(์•„๋งˆ๋„ @zcbenz)์—์„œ Electron์˜ API์— ๋Œ€ํ•œ ๋ฌธ์ œ๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋ช‡ ๊ฐ€์ง€ ์ผ๋ฐ˜์ ์ธ ์ง€์นจ์— ๋”ฐ๋ผ ๋‚˜์™€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ ํ•ดํ‚น๊ณผ ์ˆ˜์ •์„ ํ†ตํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ž ์žฌ์ ์œผ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” jxcore-cordova๋ฅผ ์กฐ๊ธˆ ๋‹ค๋ฃจ์—ˆ์ง€๋งŒ ๋ช‡ ๊ฐ€์ง€ ์ง€์นจ์ด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์žฅ์• ๋ฌผ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@lastmjs ์˜ ํฐ ์žฅ์• ๋ฌผ์€ Electron์ด iOS์—์„œ ์ง€์›ํ•˜์ง€ ์•Š๋Š” V8์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, Chromium๊ณผ Node.js๋Š” iOS์—์„œ๋„ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ด ์„ธ ๊ฐ€์ง€๊ฐ€ Electron์˜ ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค.

IOS์šฉ ์ƒˆ ํฌ๋กฌ ๋ฒ„์ „ ์ด 1์›”์— ์ถœ์‹œ๋˜์—ˆ์œผ๋ฉฐ node.app ์ด ์•„๋งˆ๋„ node.js์— ๋Œ€ํ•œ ํŠธ๋ฆญ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Android๋Š” V8์ด ์ง€์›๋œ๋‹ค๋Š” ์ ์—์„œ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ทธ๋™์•ˆ ์šฐ๋ฆฌ๋Š” IOS์šฉ ์ „์ž์™€ ํ•จ๊ป˜ Cordova๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค(์ •๋ง ํ•„์š”ํ•˜๋ฏ€๋กœ ๊ธฐ๊บผ์ด ๋„์™€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค).

@noelmace iOS์šฉ Chrome์€ Apple์—์„œ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— Chromium ์—”์ง„์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Safari์—์„œ ์‚ฌ์šฉํ•˜๋Š” WKWebView์™€ ๊ฐ™์ง€๋งŒ UI๊ฐ€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

@emin93 Apply๋Š” node.app๊ณผ ๊ฐ™์€ ์‚ฌ์šฉ์ž ์ •์˜ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ์Šค๋ ˆ๋“œ์— ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์ด ์ƒ๊ฐํ•˜๊ณ  ์‹ถ์€ ๋ช‡ ๊ฐ€์ง€ ์งˆ๋ฌธ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

  • ์–ด๋””์—์„œ๋‚˜ ์‹คํ–‰๋˜๋Š” _ํ•˜๋‚˜์˜ ์•ฑ_์„ ๊ตฌ์ถ•ํ•˜๊ณ  ์‹ถ์œผ์‹ญ๋‹ˆ๊นŒ?

    • ํ›„์† ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ชจ๋ฐ”์ผ ์•ฑ์ด๊ธฐ๋„ ํ•œ ๋ฐ์Šคํฌํ†ฑ ์•ฑ(์›น ์•ฑ์ด ์•„๋‹˜)์˜ ์˜ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

  • ์•„๋‹ˆ๋ฉด ๋ชจ๋ฐ”์ผ์—์„œ _experience_๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” Electron ์•ฑ์„ ์ฐพ๊ณ  ๊ณ„์‹ญ๋‹ˆ๊นŒ?

    • ํ›„์† ์งˆ๋ฌธ, Cordova/PhoneGap(๋˜๋Š” ๊ธฐํƒ€)๊ณผ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฆ…๋‹ˆ๊นŒ?

์–ด๋””์—์„œ๋‚˜ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ•˜๋‚˜์˜ ์•ฑ์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ์ฝ”๋“œ๋ฒ ์ด์Šค, ํ•˜๋‚˜์˜ ์›น ํ”Œ๋žซํผ, ๋ชจ๋“  ํ™˜๊ฒฝ.

ํ™”๋ฉด ํฌ๊ธฐ์™€ ์žฅ์น˜๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์ง€๋งŒ ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ์›ํ•  ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ๋ชจ๋ฐ”์ผ/๋ฐ์Šคํฌํ†ฑ/์›น ์•ฑ์˜ ์˜ˆ:

  • ํฌ๋กฌ
  • ํŒŒ์ด์–ดํญ์Šค
  • ๋Š์Šจํ•˜๊ฒŒ
  • ์ง€๋ฉ”์ผ
  • ๊ตฌ๊ธ€ ํฌํ† 
  • ๊ตฌ๊ธ€์ง€๋„

์œ„์˜ ๋ชจ๋“  ์•ฑ์— ๊ธฐ๋ณธ ์‹คํ–‰ ํŒŒ์ผ๋กœ ์‹คํ–‰๋˜๋Š” ๋ฐ์Šคํฌํ†ฑ ๋ฒ„์ „์ด ๋ฐ˜๋“œ์‹œ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ๋ธŒ๋ผ์šฐ์ €์— ๋ฐ์Šคํฌํ†ฑ ๋ฒ„์ „์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ €์—๊ฒŒ๋Š” ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ๋‹ค๋ฅด์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ์–ด๋–ค ๊ธฐ๊ธฐ์— ์žˆ๋“  ์ œ ์•ฑ์ด ์ œ ์•ฑ์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์ตœ๋Œ€ํ•œ ๋ชจ๋“  ๊ธฐ๊ธฐ์—์„œ ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์™œ ์•ˆ ๋ผ? Chrome์ด Android, iPhone ๋˜๋Š” ํƒœ๋ธ”๋ฆฟ์—์„œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฐ์Šคํฌํ†ฑ์—์„œ๋„ ๋˜‘๊ฐ™์ด ์ž‘๋™ํ•˜๊ณ  Firefox, slack, Google ์ง€๋„์—์„œ๋„ ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ๋•Œ๋•Œ๋กœ Google ์ง€๋„ ๊ธฐ๋Šฅ์ด ํ”Œ๋žซํผ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋Š” ๊ฒƒ์ด ์•ˆํƒ€๊น์Šต๋‹ˆ๋‹ค. Chrome์œผ๋กœ ๋Œ์•„๊ฐ€์„œ ํœด๋Œ€์ „ํ™”์—์„œ๋„ ์†Œ์Šค๋ฅผ ๋ณด๊ณ  ๋””๋ฒ„๊ฑฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋•Œ๋•Œ๋กœ ์šฐ๋ฆฌ๊ฐ€ ์šฐ๋ฆฌ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ธฐ๋Šฅ์„ ์ ์ ˆํ•˜๊ฒŒ ์ œํ•œํ•  ์„ ๊ฒฌ์ง€๋ช…์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ž์‹ ์˜ ํœด๋Œ€์ „ํ™”์— ์žˆ๋Š” ์•ฑ์˜ ๋ฐ์Šคํฌํ†ฑ ๋ฒ„์ „์—์„œ ์ž‘๋™ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์›ํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ๋ฌผ๋ก  ์•ฑ์€ ๋ฐ˜์‘ํ•ด์•ผ ํ•˜์ง€๋งŒ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์€ ์ตœ๋Œ€ํ•œ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@lastmjs ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์ƒ๊ฐํ–ˆ์ง€๋งŒ ์ง€์ •ํ•˜์ง€ ์•Š์€ ๊ฒƒ์ด ๋ชจ๋ฐ”์ผ ์•ฑ์ด๊ธฐ๋„ ํ•˜์ง€๋งŒ ์›น ์•ฑ์ด ์•„๋‹Œ ๋ฐ์Šคํฌํ†ฑ ์•ฑ์ด์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฉ๊ธˆ ๋‚ด ์งˆ๋ฌธ์„ ํŽธ์ง‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ด๊ฒƒ์ด ์ค‘์š”ํ•œ ๊ตฌ๋ถ„์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์€ ๋‚ด ์ƒ๊ฐ์— ๊ฐ€๋Šฅํ•œ ํ•œ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

๋‹น์‹ ์ด ๋งํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ๋„ค์ดํ‹ฐ๋ธŒ ๋ฐ์Šคํฌํ†ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋™์ž‘์€ ๋Œ€๋ถ€๋ถ„ UI ๊ธฐ๋ฐ˜์ž…๋‹ˆ๊นŒ? ๊ธฐ๋ณธ ๋ฉ”๋‰ด ๋ฐ ๊ธฐํƒ€ ๋™์ž‘์ด ์ž˜ ๋ฒˆ์—ญ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜์—๊ฒŒ ๊ฐ€์žฅ ํฐ ์ด์ ์€ Node.js ๋ฐ Chromium API์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ํ•˜๋‚˜์˜ ํ†ตํ•ฉ ๋Ÿฐํƒ€์ž„์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋ฉฐ ๋Ÿฐํƒ€์ž„์€ ๋ชจ๋“  ์ฃผ์š” ํ”Œ๋žซํผ์— ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Electron๊ณผ Cordova๋Š” UI ๊ธฐ๋Šฅ์„ ์ œ์™ธํ•˜๊ณ  ๋‹ค๋ฅธ ํ”Œ๋žซํผ์—์„œ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Cordova๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ช‡ ๊ฐ€์ง€ ์ฃผ์š” ๋ชจ๋ฐ”์ผ ์šด์˜ ์ฒด์ œ์— ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ํ•˜๋‚˜์˜ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ๊ฐ–๊ฒŒ ๋˜๋ฉฐ ๋ชจ๋ฐ”์ผ ์šด์˜ ์ฒด์ œ๋Š” ์ฃผ์š” ๋ฐ์Šคํฌํ†ฑ ์šด์˜ ์ฒด์ œ์™€ ๊ธฐ๋Šฅ๋ฉด์—์„œ ํฌ๊ฒŒ ๋‹ค๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šด์˜ ์ฒด์ œ๋Š” ํ”„๋กœ์„ธ์Šค์™€ ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ํ”„๋กœ์„ธ์Šค์— ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋Š” ํ•˜๋“œ์›จ์–ด์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋ฐ”์ผ ์šด์˜ ์ฒด์ œ์™€ ๋ฐ์Šคํฌํƒ‘ ์šด์˜ ์ฒด์ œ ์‚ฌ์ด์—๋Š” ๊ทผ๋ณธ์ ์ธ ์ฐจ์ด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํ•˜๋“œ์›จ์–ด API๋ฅผ ๊ฐ–๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด์„œ ์›น ํ”Œ๋žซํผ์€ ๋ชจ๋“  ์ฃผ์š” ํ™˜๊ฒฝ์— ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ฉด์—์„œ ์ ์  ๋” ๋ณดํŽธํ™”๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ณผ ๋•Œ Cordova์™€ Electron์€ ๊ฑฐ์˜ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ์šด์˜ ์ฒด์ œ์—์„œ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šด์˜ ์ฒด์ œ๋Š” ๊ทผ๋ณธ์ ์œผ๋กœ ๋‹ค๋ฅด์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ฒฐํ•ฉํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๐Ÿ˜ƒ

@jlord

๋ชจ๋ฐ”์ผ ๋ฐ ๋ฐ์Šคํฌํ†ฑ์šฉ์œผ๋กœ ๋นŒ๋“œํ•˜๊ณ  @lastmrs ๋ฐ @noelmace์˜ ์˜๊ฒฌ์— ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ํšจ๊ณผ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ œ ์ƒ๊ฐ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ „์ž๊ฐ€ ๋…ธ์ถœํ•˜๋Š” API๋Š” ๋ชจ๋ฐ”์ผ์ธ์ง€ ๋ฐ์Šคํฌํ†ฑ์ธ์ง€์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ™˜๊ฒฝ ์ปจํ…์ŠคํŠธ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ API๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•ด ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ ๊ฐ์ง€(์ „์ž ๊ณ„์ธต์—์„œ ์ œ๊ณต)๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ ๊ฐœ๋ฐœ์ž์˜ ์ฑ…์ž„์ž…๋‹ˆ๋‹ค.
๋‹ค์‹œ ํ•œ ๋ฒˆ ๋ช…ํ™•ํžˆ ํ•˜์ž๋ฉด, ์˜ฌ๋ฐ”๋ฅธ ์ผ์„ ํ•˜๋Š” ๊ฒƒ์€ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

UI ์ธก๋ฉด์—์„œ ์˜ฌ๋ฐ”๋ฅธ ์ผ์„ ํ•˜๋Š” ๊ฒƒ์€ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๋ชจ๋“  ๋ฐ์Šคํฌํƒ‘ ๋ฐ ๋ชจ๋ฐ”์ผ ํ”„๋กœ์ ํŠธ์— ํด๋ฆฌ๋จธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ ์ €์—๊ฒŒ ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ๋ฐ์Šคํฌํƒ‘๊ณผ ๋ชจ๋ฐ”์ผ์—์„œ ํ•˜๋“œ์›จ์–ด์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ปดํŒŒ์ผ๋œ ํ•ญ๋ชฉ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐ golang์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋นŒ๋“œ ์‹œ ๋ฐ์Šคํฌํƒ‘(amd 64 ๋“ฑ)๊ณผ ๋ชจ๋ฐ”์ผ(์•ˆ๋“œ๋กœ์ด๋“œ ๋˜๋Š” iOS)์šฉ์œผ๋กœ ํŒจํ‚ค์ง•ํ•˜์—ฌ OS ๋ฐ ์นฉ ์•„ํ‚คํ…์ฒ˜๋ณ„๋กœ ๋ณ„๋„์˜ ํŒจํ‚ค์ง€๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ „์ž๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ผ๋ถ€ ์ฝ”๋“œ๋Š” ํ•˜๋“œ์›จ์–ด์— ์ข…์†๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š”ํ•  ๋•Œ ์ปดํŒŒ์ผ ์‹œ๊ฐ„ ์ฐจ์ด๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์—ฌ์ „ํžˆ ๋ชจ๋“  ๋นŒ๋“œ์— ๋™์ผํ•œ ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•˜๊ณ  ๋Ÿฐํƒ€์ž„ ์Šค๋‹ˆํ•‘์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์—ฌ๊ธฐ์„œ ์ „์ž๊ฐ€ ํ™˜๊ฒฝ ์ปจํ…์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์ œ๊ณตํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ์ ์€ ๋””์ž์ธ ํƒ€์ž„๊ณผ ์ปดํŒŒ์ผ ํƒ€์ž„์— ๊ณตํ†ต ๋„๊ตฌ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ „์ž๋ฅผ ์„ค์น˜ํ•˜๊ณ  ๋ถ€ํŠธ์ŠคํŠธ๋žฉ bash ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ iOS ๋ฐ Android ๋น„ํŠธ์™€ ์ž‘์„ฑ Hello World๋ฅผ ์„ค์น˜ํ•˜๊ณ  ๋ฐ์Šคํฌํƒ‘ ๋ฐ ๋ชจ๋ฐ”์ผ์— ํŒจํ‚ค์ง• ๋ฐ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์—„์ฒญ๋‚œ ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ์ž…๋‹ˆ๋‹ค.

Google ํŒ€์ด iOS์šฉ ํฌ๋กฌ์„ ๋‹ค์ค‘ ํ”„๋กœ์„ธ์Šค๋กœ ์—…๋ฐ์ดํŠธํ–ˆ๋Š”์ง€ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์„ ๋ณด๊ฒŒ๋˜์–ด ๋งค์šฐ ๊ธฐ์ฉ๋‹ˆ๋‹ค.

์ด ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋„์šธ ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ธฐ๊บผ์ด ๋„์™€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚ด ๋งŽ์€ ํ”„๋กœ์ ํŠธ์—์„œ๋„ ์—„์ฒญ๋‚œ ๊ฐœ์„ ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ชจ๋ฐ”์ผ์ธ์ง€ ์—ฌ๋ถ€์— ๋”ฐ๋ผ UI๋ฅผ ์ด๋ฏธ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋ฉฐ ๋‹ค๋ฅธ ๊ฐ์ง€/๋ณ€๊ฒฝ๋„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‘ ๊ฐœ์˜ ๊ฐœ๋ณ„ API๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์€ ์ข‹์€ ์ƒ๊ฐ์ด ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(@joeblew99). ์ตœ์ข… ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ์—๋Š” Electron์ด Cordova ๋˜๋Š” Node ์œ„์—์„œ ์ž์ฒด API๋ฅผ ์ž‘๋™ํ•˜๊ฒŒ ํ•˜์—ฌ ์ตœ์ข… ์‚ฌ์šฉ์ž๊ฐ€ ํ•˜๋‚˜์˜ API(Electron API)๋งŒ ์•Œ๋ฉด ๋˜๋Š” ๊ฒƒ์ด ๋” ๋‚ซ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ API์—์„œ ๋‹ค๋ฃจ์ง€ ์•Š๋Š” ๊ฒƒ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ตœ์ข… ์‚ฌ์šฉ์ž๋Š” ํ•„์š”์— ๋”ฐ๋ผ Node ๋˜๋Š” Cordova์— ๋›ฐ์–ด๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ Electron์ด ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘(Cordova ๋˜๋Š” Node์—์„œ ์ง์ ‘) ์ž‘๋™ํ•˜๋Š” NPM ์›Œํฌํ”Œ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, Electron์€ NPM(๊ทธ๋ฆฌ๊ณ  ES6 ๋ชจ๋“ˆ๋„ ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‘˜ ๋‹ค ํ˜ธํ™˜๋˜๋„๋ก ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ์ •์˜ํ•ด์•ผ ์ตœ์ข… ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ๊ฐ์„ ๋นŒ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋…ธ๋“œ ์‚ฌ๋ก€๋Š” ๋ถ„๋ช…ํžˆ ์ด๋ฏธ ์ฒ˜๋ฆฌ๋˜์—ˆ์ง€๋งŒ NPM์ด Cordova์—์„œ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋„๋ก ์ถ”๊ฐ€ ์ž‘์—…์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Cordova์—์„œ๋Š” Node.js API๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ Electron์€ Browserify๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ Cordova์—์„œ ์ž‘๋™ํ•˜๋Š” ๋Œ€์•ˆ์œผ๋กœ ์ผ๋ถ€ ๊ธฐ๋ณธ Node.js ๋ชจ๋“ˆ์„ ํด๋ฆฌํ•„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ†ตํ•ฉ API๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. Electron API๊ฐ€ ๋‹ค๋ฃจ์ง€ ์•Š๋Š” ๊ฒƒ์ด ์žˆ๋‹ค๋ฉด ์ตœ์†Œํ•œ ํด๋ฆฌํ•„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ Cordova API๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋…ธ๋“œ ๊ธฐ๋ฐ˜ API๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

polyfill์˜ ํ•„์š”์„ฑ์€ API ๊ฒฝ๋กœ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋˜‘๋˜‘ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ๊ณผ ์ •ํ™•ํžˆ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ณ„๋„์˜ API์ผ ํ•„์š”๋Š” ์—†์œผ๋ฉฐ ์ผ๋ถ€ ๊ธฐ๋Šฅ์„ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. 100% ํ˜ธํ™˜๋˜๋„๋ก ํ•˜๋ฉด ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋  ๋•Œ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ํ›จ์”ฌ ๋” ํฐ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ Android์™€ IOS๋Š” ๋” ์ด์ƒ ๋ชจ๋ฐ”์ผ์ด ์•„๋‹ˆ๋ผ๋Š” ์ ์„ ์ง€์ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์ ํŠธ๋Š” Android TV์—์„œ ๋ฉ‹์ง€๊ฒŒ ๋ณด์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ Github์ด Atom์„ TV๋‚˜ ํƒœ๋ธ”๋ฆฟ์—์„œ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋„ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ข‹์€ ์ ์€ ๋” ์ด์ƒ ํ™”๋ฉด ํฌ๊ธฐ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฒ”์šฉ ์šด์˜ ์ฒด์ œ๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Android์˜ Electron์— ๋Œ€ํ•œ ์ƒํƒœ๊ฐ€ ํ˜ผ๋ž€์Šค๋Ÿฝ์Šต๋‹ˆ๊นŒ?

์ ๊ทน์ ์œผ๋กœ ๊ณ ๋ ค๋˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ๋‹จ์ˆœํžˆ ์ด์•ผ๊ธฐ๋˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๊นŒ?

Electron ์•ฑ์„ PhoneGap ๋˜๋Š” Cordova ์•ฑ์˜ ์œ ํšจํ•œ ๋Œ€์ƒ์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์•ฝ 1000๋ฐฐ ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค!
์ฆ‰. cordova platform add electron-osx electron-win electron-linux

@purplecabbage๋Š” ํ™•์‹คํ•˜์ง€๋งŒ ์ „์ฒด ๋ธŒ๋ผ์šฐ์ € ์Šคํƒ์„ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹์ถ”๊ฐ€ ์ด์ ์„ ๋ชจ๋‘ ์žƒ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

RE: Node.js ํด๋ฆฌํ•„.

์ด๊ฒƒ์ด ์ž‘๋™ํ•˜๋ ค๋ฉด ํ•„์š”ํ•œ _native_ ํด๋ฆฌํ•„ ๋ชฉ๋ก์„ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Browserify์—๋Š” ์ด๋ฏธ Node.js Core์˜ _lot_ ์ˆœ์ˆ˜ ์›น ๋ฒ„์ „์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜์žˆ๋Š” ์œ ์ผํ•œ ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • dns
  • net
  • fs

๋‹ค๋ฅธ ๊ฑด ์—†๋‚˜์š”?

์ „์—ญ ๊ฐœ์ฒด:

  • __๋””๋ ‰ํ† ๋ฆฌ ์ด๋ฆ„
  • __ํŒŒ์ผ ์ด๋ฆ„
  • ํ”„๋กœ์„ธ์Šค

@purplecabbage ๋Š” ๊ทธ 3๊ฐœ์— ๋ธŒ๋ผ์šฐ์ €ํ™” ๊ตฌํ˜„์ด ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. https://github.com/substack/browserify-handbook#__dirname. ์žฅ์น˜์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๊ฐ’์„ ๋ถ€์—ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์˜ˆ, __dirname ๋ฐ __filename์€ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
ํ”„๋กœ์„ธ์Šค๋Š” Browserify์˜ ๋ฒ ์–ด๋ณธ์ž…๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ๋ฅผ ์ง€์›ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๊นŒ?
https://github.com/defunctzombie/node-process/blob/master/browser.js

Electron.js์™€ ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•˜๋Š” ๋„ค์ดํ‹ฐ๋ธŒ ๋ชจ๋ฐ”์ผ ์•ฑ์˜ ๊ฒฝ์šฐ Electron.js์™€ NativeScript๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ๊ฒฝ๋กœ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค( http://github.com/NativeScript/NativeScript).

์šฐ๋ฆฌ(NativeScript ํŒ€)๋Š” ์ƒ˜ํ”Œ ๋ฐ๋ชจ ์•ฑ์„ ๋งŒ๋“ค ๊ณ„ํš์ž…๋‹ˆ๋‹ค. ๊ด€์‹ฌ์ด ์žˆ์œผ์‹œ๋ฉด ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ์˜๊ฒฌ์„ ๋ง์”€ํ•ด ์ฃผ์‹ญ์‹œ์˜ค. - https://github.com/NativeScript/NativeScript/issues/2695

์‹ค์ œ๋กœ ์ด๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” Angular 2 ๊ณ ๊ธ‰ ์‹œ๋“œ๊ฐ€ ์ด๋ฏธ ์žˆ์Šต๋‹ˆ๋‹ค( https://github.com/NathanWalker/angular2-seed-advanced). ๊ทธ๋Ÿฌ๋‚˜ Angular 2๋Š” ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ์†”๋ฃจ์…˜์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์ด ๊ฒฐ์ฝ” ์•„๋‹™๋‹ˆ๋‹ค.

์ด๊ฒŒ ๋ง์ด ๋˜๋Š” ์ผ์ž…๋‹ˆ๊นŒ?

ํ•ต์‹ฌ์€ ๋‹น์‹ ์˜ ํŒ€์ด ๋„ค์ดํ‹ฐ๋ธŒ API๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ ๋ ˆ๊ทธ ์ž‘์—…์„ ์™„๋ฃŒํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹น์‹ ์˜ ์•„์ด๋””์–ด๋ฅผ ์œ„ํ•ด ๋ชจ๋‘์ž…๋‹ˆ๋‹ค.

@valentinstoychev ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ์ „์ž ์•ฑ์ด ์ „์ฒด UI๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•˜์ง€๋งŒ ์ •๋ง ํฅ๋ฏธ๋กœ์šด ์•„์ด๋””์–ด์ž…๋‹ˆ๋‹ค. ๋งž๋‚˜์š”? ์–ด๋–ป๊ฒŒ๋“  libchromiumcontent ๋ฅผ ํฌํ•จํ•˜์—ฌ $ electron #$ ์™€ ์œ ์‚ฌํ•œ webview $ ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ •๋ง ํฅ๋ฏธ๋กœ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ํ•˜๋‚˜์˜ ์•ฑ์—์„œ ๋‘˜ ๋‹ค ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Android WebView ์œ„์ ฏ๊ณผ iOS์˜ ์ด์— ์ƒ์‘ํ•˜๋Š” ์œ„์ ฏ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์‚ฌ์‹ค ์•ˆ๋“œ๋กœ์ด๋“œ๋Š” ์ด๋ฏธ ํฌ๋กฌ์ž…๋‹ˆ๋‹ค. :)

@hadees ์˜ˆ, ๋ชจ๋ฐ”์ผ UI๋Š” NativeScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ iOS ๋ฐ Android์šฉ์œผ๋กœ ํ•œ ๋ฒˆ ๊ตฌํ˜„ํ•˜๊ณ  ์ „์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์Šคํฌํ†ฑ์šฉ์œผ๋กœ ํ•œ ๋ฒˆ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ - ๋ฐ์ดํ„ฐ, ๋ชจ๋ธ, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง, ์„œ๋น„์Šค, ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค๋Š” ๋™์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•  ์ ์ด ๋‘ ๊ฐ€์ง€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฒซ์งธ, electron.js ๋ฐ NativeScript ๋กœ ๋นŒ๋“œํ•  ๋•Œ ๊ฑฐ์˜ ๋™์ผํ•œ ๊ธฐ์ˆ  ์„ธํŠธ(ํ•œ ํŒ€์ด ๋ฐ์Šคํฌํƒ‘, ์›น ๋ฐ ๋ชจ๋ฐ”์ผ์šฉ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ)๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋‘ JavaScript/TypeScript/CSS์ž…๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ๊ฒฝ์šฐ Angular 2๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํƒ€์ผ ์ง€์ •์„ ์œ„ํ•ด NativeScript์™€ ์ „์ž ๋ชจ๋‘์— CSS๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. _์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค๋ฅธ ์œ ์ผํ•œ ๊ฒƒ์€ UI ๋งˆํฌ์—…_์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‹ฌ์— FlexBox ๋ ˆ์ด์•„์›ƒ์„ ์ถœ์‹œํ•˜๋ฏ€๋กœ ๋ ˆ์ด์•„์›ƒ๋„ ์ต์ˆ™ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ์€ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ์™€ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ๋„๊ตฌ ๋ถ€๋ถ„์€ ๋˜ํ•œ Chrome Devtools๋ฅผ ์‚ฌ์šฉํ•˜๋Š” NativeScript์—์„œ์™€ ๊ฐ™์ด ์นœ์ˆ™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์ฃผ๋ชฉํ•ด์•ผ ํ•  ๋‘ ๋ฒˆ์งธ ์‚ฌํ•ญ์€ ์‹ค์ œ๋กœ ๋ชจ๋ฐ”์ผ๊ณผ ๋ฐ์Šคํฌํ†ฑ์— ๋Œ€ํ•ด ๋‹ค๋ฅธ UI๋ฅผ ๊ฐ–๊ณ  ์‹ถ์–ดํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ UI ๋ถ€๋ถ„์€ ์–ด์จŒ๋“  ์žฌ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ ๋‹ฌ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ๊ฝค ์„ค๋“๋ ฅ ์žˆ๋Š” ์ด์•ผ๊ธฐ๋ผ๊ณ  ๋ฏฟ๊ณ  ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ํƒ๊ตฌํ•˜๊ณ  ๊ณง ์‹ค์ œ ์‚ฌ๋ก€๋ฅผ ๋ณด์—ฌ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ ์ฝ”๋“œ์™€ ์‹ค์ œ ์•ฑ์„ ๋ณด๊ณ  ํƒ์ƒ‰ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐ ์กฐ๊ธˆ ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์–ด์จŒ๋“  ์ตœ์ข… ์•ฑ(๋˜๋Š” ์•ฑ)์€ ์–ด๋””์—์„œ๋‚˜ ๊ธฐ๋ณธ UI์™€ ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ์ด ์†”๋ฃจ์…˜์„ ๋…ํŠนํ•˜๊ณ  ํƒ๊ตฌํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š” ์ด์œ ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ „์ž.js์™€ NativeScript ๋ชจ๋‘์—์„œ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ•ดํ‚นํ•˜๋Š” ๊ฒƒ๋„ ์ €๋ ดํ•ฉ๋‹ˆ๋‹ค. ์ด ์ฒซ ๋ฒˆ์งธ ์†”๋ฃจ์…˜์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ๋ณด๋‹ค ๊ธด๋ฐ€ํ•œ ํ˜‘์—…์ด ๊ฐ€๋Šฅํ•œ ์˜์—ญ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Cordova์™€ ํ•จ๊ป˜ ๋ฐ์Šคํฌํƒ‘ ๋ฐ ๋ชจ๋ฐ”์ผ GUI์šฉ ํด๋ฆฌ๋จธ๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋ฅด๋„๋ฐ”
๋ฐ์Šคํฌํƒ‘๊ณผ ๋ชจ๋ฐ”์ผ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์ €์—๊ฒŒ ํ•ต์‹ฌ์€ grpc๋ฅผ ๋ฐ”์ธ๋”ฉ ๊ธฐ์ˆ ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋งŽ์ด ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์ƒํ˜ธ ์šด์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค.

๋ชจ๋‘ ์ค‘๊ฐœ์ธ ์—ญํ• ์„ ํ•˜๋Š” grpc ํ”„๋ก์‹œ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค.

2016๋…„ 9์›” 10์ผ ํ† ์š”์ผ 08:17 Valentin Stoychev, ์•Œ๋ฆผ @github.com
์ผ๋‹ค:

@hadees https://github.com/hadees ์˜ˆ, ์•„์ด๋””์–ด๋Š” ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
NativeScript๋ฅผ ์‚ฌ์šฉํ•˜๋Š” iOS ๋ฐ Android์šฉ์œผ๋กœ ํ•œ ๋ฒˆ, ๋ฐ์Šคํฌํƒ‘์šฉ์œผ๋กœ ํ•œ ๋ฒˆ ๋ชจ๋ฐ”์ผ UI
์ „์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ. ๊ธฐํƒ€ ๋ชจ๋“  ๊ฒƒ - ๋ฐ์ดํ„ฐ, ๋ชจ๋ธ, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง, ์„œ๋น„์Šค,
๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค๋Š” ๋™์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•  ์ ์ด ๋‘ ๊ฐ€์ง€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฒซ์งธ, ๊ฑฐ์˜ ๋™์ผํ•œ _skillset_์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค(ํ•œ ํŒ€์ด
๋ฐ์Šคํฌํƒ‘, ์›น ๋ฐ ๋ชจ๋ฐ”์ผ์šฉ์œผ๋กœ ๋งŒ๋“ค๊ธฐ) electron.js๋กœ ๋นŒ๋“œํ•  ๋•Œ ๋ฐ
NativeScript - ๋ชจ๋‘ JavaScript/TypeScript/CSS์ž…๋‹ˆ๋‹ค. Angular 2๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‹น์‹ ์ด ์ข‹์•„ํ•œ๋‹ค๋ฉด. ์Šคํƒ€์ผ ์ง€์ •์„ ์œ„ํ•ด NativeScript์™€
์ „์ž. _์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค๋ฅธ ์œ ์ผํ•œ ๊ฒƒ์€ UI์ž…๋‹ˆ๋‹ค.
๋งˆํฌ์—…_. FlexBox๋ฅผ ์ถœ์‹œํ•  ๋•Œ ๋ ˆ์ด์•„์›ƒ๋„ ์ต์ˆ™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋‹ค์Œ๋‹ฌ ๋ ˆ์ด์•„์›ƒ. ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ์€ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ์ด๋ฉฐ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€
์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์Šคํ‚ฌ์…‹

์—ฌ๊ธฐ์„œ ์ฃผ๋ชฉํ•ด์•ผ ํ•  ๋‘ ๋ฒˆ์งธ ์‚ฌํ•ญ์€ ์‹ค์ œ๋กœ ๋‹ค๋ฅธ
๋ชจ๋ฐ”์ผ ๋ฐ ๋ฐ์Šคํฌํƒ‘์šฉ UI, ์˜ค๋ฅธ์ชฝ. ๋”ฐ๋ผ์„œ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ UI๋Š”
๋ถ€ํ’ˆ์€ ์–ด์จŒ๋“  ์žฌ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ ๋‹ฌ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ๊ฝค ์„ค๋“๋ ฅ ์žˆ๋Š” ์ด์•ผ๊ธฐ๋ผ๊ณ  ๋ฏฟ์œผ๋ฉฐ ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ํƒ๊ตฌํ•˜๊ณ 
๊ณง ์‹ค์ œ ์‚ฌ๋ก€๋ฅผ ๋ณด์—ฌ์ฃผ์‹ญ์‹œ์˜ค. ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ 
์‹ค์ œ ์•ฑ์€ ํƒ์ƒ‰ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐ ์•ฝ๊ฐ„ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์–ด์จŒ๋“  ์ตœ์ข… ์•ฑ(๋˜๋Š” ์•ฑ)์€ ์–ด๋””์—์„œ๋‚˜ ๊ธฐ๋ณธ UI์™€ ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ์ด ์†”๋ฃจ์…˜์„ ๋…ํŠนํ•˜๊ณ  ํƒ๊ตฌํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š” ์ด์œ ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ
๋˜ํ•œ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ•ดํ‚นํ•˜๊ธฐ์— ์ €๋ ดํ•ฉ๋‹ˆ๋‹ค.
์ „์ž.js์™€ NativeScript ๋ชจ๋‘. ์ด ์ฒซ ๋ฒˆ์งธ ์†”๋ฃจ์…˜์„ ์‹œ์ž‘์œผ๋กœ ์šฐ๋ฆฌ๋Š”
๋ณด๋‹ค ๊ธด๋ฐ€ํ•œ ํ˜‘๋ ฅ์ด ์กด์žฌํ•  ์ˆ˜ ์žˆ๋Š” ์˜์—ญ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/electron/electron/issues/562#issuecomment -246093147,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/ALcac7syNn7D8eztsREVxIyrrl7mBJs4ks5qokuQgaJpZM4CVUMK
.

NativeScript๋Š” ์‹ค์ œ๋กœ Electron์˜ ๋ชจ๋ฐ”์ผ ์ง€์›์„ ์œ„ํ•œ ์˜ต์…˜์ด ์•„๋‹™๋‹ˆ๋‹ค.
์›น ๊ธฐ์ˆ ์—์„œ JavaScript๋กœ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ์™„์ „ํžˆ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
๋„ค์ดํ‹ฐ๋ธŒ ์œ„์ ฏ์— ๋Œ€ํ•œ ๋ฐ”์ธ๋”ฉ. ๋ณธ์งˆ์ ์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ๊ฐ–๊ฒŒ ๋  ๊ฒƒ์€ ๋” ์ด์ƒ
"Electron", ํ•ต์‹ฌ์— ์žˆ๋Š” Electron์€ ๋‹ค์Œ์„ ๋…ธ์ถœํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ € ์Šคํƒ์ด๊ธฐ ๋•Œ๋ฌธ์—
๋ธŒ๋ผ์šฐ์ € ์ปจํ…์ŠคํŠธ์˜ Node.js _inside_, ์ด๊ฒƒ์ด Electron์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ „์ž.

NativeScript + Node.js ๋ฐ”์ธ๋”ฉ์€ ์™„์ „ํžˆ ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ”„๋กœ์ ํŠธ.

์ฒซ์งธ, electron.js ๋ฐ NativeScript๋กœ ๋นŒ๋“œํ•  ๋•Œ ๊ฑฐ์˜ ๋™์ผํ•œ ๊ธฐ์ˆ  ์„ธํŠธ(ํ•œ ํŒ€์ด ๋ฐ์Šคํฌํƒ‘, ์›น ๋ฐ ๋ชจ๋ฐ”์ผ์šฉ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ)๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋‘ JavaScript/TypeScript/CSS์ž…๋‹ˆ๋‹ค.

NativeScript๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ผ๋ถ€
๊ธฐ๋ณธ ์œ„์ ฏ์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•œ ์ดํ•ด
๋‹น์‹ ์€ JavaScript๋กœ ์ฝ”๋”ฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ง€์‹ ์—†์ด๋Š”
์œ„์ ฏ ๋ฐ ํ•ด๋‹น ์œ„์ ฏ ๋ฐ”์ธ๋”ฉ์„ ์ˆ˜์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์‹ ์—†์ด
๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉ์ž ์ง€์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค.
์›น ์Šคํƒ์˜ ์ˆœ์ˆ˜ JS/HTML/CSS์˜ ๊ฒฝ์šฐ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋‚ด๋ถ€๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์ด๋ฏธ ์žˆ๋Š” ๋™์ผํ•œ ํ™˜๊ฒฝ์—์„œ ๋™์ผํ•œ ์œ ํ˜•์˜ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฉฐ ์™ธ๊ตญ์–ด์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์ฃผ๋ชฉํ•ด์•ผ ํ•  ๋‘ ๋ฒˆ์งธ ์‚ฌํ•ญ์€ ์‹ค์ œ๋กœ ๋ชจ๋ฐ”์ผ๊ณผ ๋ฐ์Šคํฌํ†ฑ์— ๋Œ€ํ•ด ๋‹ค๋ฅธ UI๋ฅผ ๊ฐ–๊ณ  ์‹ถ์–ดํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ UI ๋ถ€๋ถ„์€ ์–ด์จŒ๋“  ์žฌ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ ๋‹ฌ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Electron(์›น ๊ธฐ๋ฐ˜ ํ”„๋ก ํŠธ ์—”๋“œ ํฌํ•จ)์„ ์‚ฌ์šฉํ•  ๋•Œ์˜ ์ด์  ์ค‘ ํ•˜๋‚˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
ํ•˜๋‚˜์˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๊ฑฐ์˜ _์ •ํ™•ํžˆ ๋™์ผํ•˜๊ฒŒ_ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
์–ด๋””์—๋‚˜. NativeScript์˜ ๊ฒฝ์šฐ ํ•ญ์ƒ ๊ทธ๋Ÿฐ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.
์™„์ „ํžˆ ๋‹ค๋ฅธ ๊ธฐ์ˆ  ์ง‘ํ•ฉ์„ ํ•˜๋‚˜์˜ ์–ธ์–ด๋กœ ์—ฐ๊ฒฐํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ์–ด๋””์—์„œ๋‚˜ web-ui๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์•„์ด๋””์–ด๋ฅผ ํ›จ์”ฌ ๋” ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค.
์–ด๋””์—์„œ๋‚˜ ๋‹ค๋ฅธ ๊ธฐ๋ณธ UI์™€ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ์‚ฌ๋žŒ๋“ค์€ ๋„ค์ดํ‹ฐ๋ธŒ UI๊ฐ€
์›น UI๋ณด๋‹ค ํ›จ์”ฌ ๋‚ซ์Šต๋‹ˆ๋‹ค. ์–ด๋Š ์ •๋„ ๋งž๋Š” ๋ง์ด๊ธฐ๋„ ํ•˜๊ณ  ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค
์›น์˜ ์ „์ฒด ๊ธฐ๋ฐ˜์„ ๋ชจ๋ฅด๋Š” ๊ฐœ๋ฐœ์ž์™€ ํ•จ๊ป˜. ํ•˜์ง€๋งŒ ํ•จ๊ป˜
์›น API๋ฅผ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•˜๋ฉด ์‹ค์ œ๋กœ ๋ฉ‹์ง„ UI๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์›น์€ ๊ฑฐ๋Œ€ํ•œ
์ง„์ „. WebGL์€ ๋งค์šฐ ํฌ๋กœ์Šค ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค...

__/#!/_์กฐํ”ผ

2016๋…„ 9์›” 9์ผ ๊ธˆ์š”์ผ ์˜คํ›„ 11:17 Valentin Stoychev < ์•Œ๋ฆผ @github.com

์ผ๋‹ค:

@hadees https://github.com/hadees ์˜ˆ, ์•„์ด๋””์–ด๋Š” ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
NativeScript๋ฅผ ์‚ฌ์šฉํ•˜๋Š” iOS ๋ฐ Android์šฉ์œผ๋กœ ํ•œ ๋ฒˆ, ๋ฐ์Šคํฌํƒ‘์šฉ์œผ๋กœ ํ•œ ๋ฒˆ ๋ชจ๋ฐ”์ผ UI
์ „์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ. ๊ธฐํƒ€ ๋ชจ๋“  ๊ฒƒ - ๋ฐ์ดํ„ฐ, ๋ชจ๋ธ, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง, ์„œ๋น„์Šค,
๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค๋Š” ๋™์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•  ์ ์ด ๋‘ ๊ฐ€์ง€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฒซ์งธ, ๊ฑฐ์˜ ๋™์ผํ•œ _skillset_์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค(ํ•œ ํŒ€์ด
๋ฐ์Šคํฌํƒ‘, ์›น ๋ฐ ๋ชจ๋ฐ”์ผ์šฉ์œผ๋กœ ๋งŒ๋“ค๊ธฐ) electron.js๋กœ ๋นŒ๋“œํ•  ๋•Œ ๋ฐ
NativeScript - ๋ชจ๋‘ JavaScript/TypeScript/CSS์ž…๋‹ˆ๋‹ค. Angular 2๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‹น์‹ ์ด ์ข‹์•„ํ•œ๋‹ค๋ฉด. ์Šคํƒ€์ผ ์ง€์ •์„ ์œ„ํ•ด NativeScript์™€
์ „์ž. _์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค๋ฅธ ์œ ์ผํ•œ ๊ฒƒ์€ UI์ž…๋‹ˆ๋‹ค.
๋งˆํฌ์—…_. FlexBox๋ฅผ ์ถœ์‹œํ•  ๋•Œ ๋ ˆ์ด์•„์›ƒ๋„ ์ต์ˆ™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋‹ค์Œ๋‹ฌ ๋ ˆ์ด์•„์›ƒ. ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ์€ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ์ด๋ฉฐ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€
์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์Šคํ‚ฌ์…‹

์—ฌ๊ธฐ์„œ ์ฃผ๋ชฉํ•ด์•ผ ํ•  ๋‘ ๋ฒˆ์งธ ์‚ฌํ•ญ์€ ์‹ค์ œ๋กœ ๋‹ค๋ฅธ
๋ชจ๋ฐ”์ผ ๋ฐ ๋ฐ์Šคํฌํƒ‘์šฉ UI, ์˜ค๋ฅธ์ชฝ. ๋”ฐ๋ผ์„œ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ UI๋Š”
๋ถ€ํ’ˆ์€ ์–ด์จŒ๋“  ์žฌ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ ๋‹ฌ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ๊ฝค ์„ค๋“๋ ฅ ์žˆ๋Š” ์ด์•ผ๊ธฐ๋ผ๊ณ  ๋ฏฟ์œผ๋ฉฐ ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ํƒ๊ตฌํ•˜๊ณ 
๊ณง ์‹ค์ œ ์‚ฌ๋ก€๋ฅผ ๋ณด์—ฌ์ฃผ์‹ญ์‹œ์˜ค. ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ 
์‹ค์ œ ์•ฑ์€ ํƒ์ƒ‰ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐ ์•ฝ๊ฐ„ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์–ด์จŒ๋“  ์ตœ์ข… ์•ฑ(๋˜๋Š” ์•ฑ)์€ ์–ด๋””์—์„œ๋‚˜ ๊ธฐ๋ณธ UI์™€ ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ์ด ์†”๋ฃจ์…˜์„ ๋…ํŠนํ•˜๊ณ  ํƒ๊ตฌํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š” ์ด์œ ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ
๋˜ํ•œ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ•ดํ‚นํ•˜๊ธฐ์— ์ €๋ ดํ•ฉ๋‹ˆ๋‹ค.
์ „์ž.js์™€ NativeScript ๋ชจ๋‘. ์ด ์ฒซ ๋ฒˆ์งธ ์†”๋ฃจ์…˜์„ ์‹œ์ž‘์œผ๋กœ ์šฐ๋ฆฌ๋Š”
๋ณด๋‹ค ๊ธด๋ฐ€ํ•œ ํ˜‘๋ ฅ์ด ์กด์žฌํ•  ์ˆ˜ ์žˆ๋Š” ์˜์—ญ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/electron/electron/issues/562#issuecomment -246093147,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AASKzg6ISiScLgMY1lz83Ff3MxHq3e0Mks5qokuPgaJpZM4CVUMK
.

@trusktr ์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋“ค์ด ๋„ค์ดํ‹ฐ๋ธŒ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ํ•˜๋Š” ๋ฐ ๋„ˆ๋ฌด ๋งŽ์€ ์žฌ๊ณ ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋„ค์ดํ‹ฐ๋ธŒ๋Š” ์ผ๊ด€๋œ ์ด์ƒ์กฐ์ฐจ๋„ ์•„๋‹™๋‹ˆ๋‹ค. ์ง€๋‚œ 10๋…„ ๋™์•ˆ ๋ชจ๋ฐ”์ผ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ˆ˜์‹ญ ๋ฒˆ ๋ฐ”๋€Œ์—ˆ๊ณ  ์•ˆ๋“œ๋กœ์ด๋“œ ํฐ๋งˆ๋‹ค ์ผ๊ด€์„ฑ์กฐ์ฐจ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ์•ฑ์ด ์ผ๊ด€๋˜๊ฒŒ ๋ณด์ด๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ๋‚˜์€ ํ‘œ์ค€์ž…๋‹ˆ๋‹ค. iPhone๊ณผ Windows ์ž‘์—… ์‹œ์Šคํ…œ ๋ชจ๋‘์—์„œ ์•ฑ์„ ์ž‘๋™ํ•˜๊ธฐ ์œ„ํ•ด ๋‘ ๊ฐ€์ง€ UI ๊ธฐํ˜ธ ๋ฐ ์‹ ํ˜ธ ์„ธํŠธ๋ฅผ ๋ฐฐ์šฐ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์€ ๋”์ฐํ•ฉ๋‹ˆ๋‹ค.

https://blog.chromium.org/2017/01/open-sourcing-chrome-on-ios.html

์—ญ์‚ฌ์ ์œผ๋กœ iOS์šฉ Chrome ์ฝ”๋“œ๋Š” ํ”Œ๋žซํผ์— ํ•„์š”ํ•œ ์ถ”๊ฐ€ ๋ณต์žก์„ฑ์œผ๋กœ ์ธํ•ด ๋‚˜๋จธ์ง€ Chromium ํ”„๋กœ์ ํŠธ์™€ ๋ณ„๋„๋กœ ์œ ์ง€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜๋…„๊ฐ„์˜ ์‹ ์ค‘ํ•œ ๋ฆฌํŒฉํ† ๋ง ๋์— ์ด ๋ชจ๋“  ์ฝ”๋“œ๋Š” Chromium์— ๋‹ค์‹œ ํ•ฉ๋ฅ˜ํ•˜์—ฌ ์˜คํ”ˆ ์†Œ์Šค ์ €์žฅ์†Œ๋กœ ์ด๋™๋ฉ๋‹ˆ๋‹ค.

iOS ํ”Œ๋žซํผ์˜ ์ œ์•ฝ์œผ๋กœ ์ธํ•ด ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €๋Š” WebKit ๋ Œ๋”๋ง ์—”์ง„ ์œ„์— ๊ตฌ์ถ•๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Chromium์˜ ๊ฒฝ์šฐ ์ด๋Š” WebKit๊ณผ ๋‹ค๋ฅธ ํ”Œ๋žซํผ์šฉ Chrome์˜ ๋ Œ๋”๋ง ์—”์ง„์ธ Blink๋ฅผ ๋ชจ๋‘ ์ง€์›ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด Chromium ์ฝ”๋“œ ๊ธฐ๋ฐ˜์— ๋ฐฐ์น˜ํ•˜์ง€ ์•Š์œผ๋ ค๋Š” ๋ช‡ ๊ฐ€์ง€ ์ถ”๊ฐ€ ๋ณต์žก์„ฑ์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์˜คํ”ˆ ์†Œ์Šค ์ฝ”๋“œ์— ๋Œ€ํ•œ Chrome์˜ ์•ฝ์†์„ ๊ฐ์•ˆํ•  ๋•Œ ์šฐ๋ฆฌ๋Š” ์ง€๋‚œ ๋ช‡ ๋…„ ๋™์•ˆ iOS์šฉ Chrome์šฉ ์ฝ”๋“œ๋ฅผ Chromium์œผ๋กœ ์—…์ŠคํŠธ๋ฆผํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ณ€๊ฒฝ ์ž‘์—…์— ๋งŽ์€ ์‹œ๊ฐ„์„ ํ• ์• ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ํ•ด๋‹น ์—…์ŠคํŠธ๋ฆผ์ด ์™„๋ฃŒ๋˜์—ˆ์œผ๋ฉฐ ๊ฐœ๋ฐœ์ž๋Š” ๋‹ค๋ฅธ ๋ฒ„์ „์˜ Chromium์—์„œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ iOS ๋ฒ„์ „์˜ Chromium์„ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. iOS์šฉ Chrome์— ๋Œ€ํ•œ ๋ชจ๋“  ํ…Œ์ŠคํŠธ๋ฅผ Chromium ์ปค๋ฎค๋‹ˆํ‹ฐ ์ „์ฒด์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ํ•ด๋‹น ์ฝ”๋“œ๊ฐ€ ์ฒดํฌ์ธ๋  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ์‹คํ–‰๋˜๋ฏ€๋กœ ๊ฐœ๋ฐœ ์†๋„๋„ ๋นจ๋ผ์กŒ์Šต๋‹ˆ๋‹ค.

https://blog.chromium.org/2017/01/open-sourcing-chrome-on-ios.html

์ฒซ ๋ฒˆ์งธ ํฐ ๋‹จ๊ณ„? :]

๊ทธ๋Ÿฌ๋‚˜ ํฌ๋กฌ์€ ์• ํ”Œ ์Šคํ† ์–ด์— ์˜ฌ๋ฆด ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ฌด ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ๋Š” ์ง€๊ธˆ ๋งค์šฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Cordova ๋ฐ ๊ธฐ๋ณธ webview๋กœ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์€ ์ง€์˜ฅ์ด๋ฉฐ ์ธํ…”์€ Android์— ๋Œ€ํ•œ ๊ธฐ๋ณธ webview๋กœ chromium webview์˜ ์ธํ…” ํฌํŠธ์ธ Crosswalk๋ฅผ ํ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค.
https://crosswalk-project.org/blog/crosswalk-final-release.html

๋ฌธ์ œ:

  • ๊ธฐ๋ณธ webview๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋‹ค๋ฅธ ๊ณต๊ธ‰์—…์ฒด ๋•๋ถ„์— ์‹ ๋ขฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. Android 6.0๊นŒ์ง€๋Š” ์•ˆ์ •์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํœด๋Œ€์ „ํ™”์˜ 20%๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์•ˆ๋“œ๋กœ์ด๋“œ ํŽŒ์›จ์–ด๋‚˜ ํŒจํ‚ค์ง€ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ํŠนํžˆ ๊ฐ’๋น„์‹ผ 3G๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์—ญํญ์ด ์ œํ•œ๋œ ์ง€์—ญ์—์„œ๋Š” ๋”์šฑ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ:

  • Electron API๋Š” ํฌ๋กฌ์œผ๋กœ ์ด์‹ํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค( @zcbenz ๊ฐ€ 2014๋…„์— ๋งํ•œ ๋Œ€๋กœ).
  • ์•ˆ๋“œ๋กœ์ด๋“œ์šฉ ํฌ๋กฌ ๋ฐ ์•ˆ๋“œ๋กœ์ด๋“œ์šฉ ํฌ๋กฌ ์›น๋ทฐ๋Š” ์ด์ œ ์™„์ „ํžˆ ์˜คํ”ˆ์†Œ์Šคํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค: https://www.chromium.org/developers/how-tos/android-build-instructions
  • ์šฐ๋ฆฌ๋Š” ํšก๋‹จ ๋ณด๋„๋ฅผ ํฌํฌํ•˜๊ณ  ๊ณ„์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๊ธฐ๋ณธ์ ์œผ๋กœ ๋” ์ ์€ ์ œํ•œ์ด ์žˆ๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ๋กœ ํฌ๋กฌ ํฌํŠธ) https://github.com/crosswalk-project , ์ด๋ฏธ ์ƒ๋‹นํžˆ ์•ˆ์ •์ ์ž…๋‹ˆ๋‹ค.
  • ์šฐ๋ฆฌ์˜ ๊ฒฝํ—˜์— ๋”ฐ๋ฅด๋ฉด ์ข‹์€ JS ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์žˆ๋Š” ํšก๋‹จ ๋ณด๋„์™€ ์ฝ”๋ฅด๋„๋ฐ”๋Š” ๋„ค์ดํ‹ฐ๋ธŒ์— ๊ฐ€๊นŒ์šด ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค( Emberjs / React / Angular /Vue ).
    https://github.com/crosswalk-project/cordova-plugin-crosswalk-webview

์šฐ๋ฆฌ๋Š” ํšก๋‹จ ๋ณด๋„์— ๊ธฐ์—ฌ์ž์™€ ์œ ์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ ๋‹น์‹ ์ด ์ฐพ๊ณ  ์žˆ๋Š” ์‚ฌ๋žŒ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ข‹์€ ์†Œ์‹

๊ด€๋ จ ๋‰ด์Šค, @orangemocha http://www.janeasystems.com/blog/node-js-meets-ios/ ์˜ iOS์— ๋Œ€ํ•œ Node.js์˜ ์ƒˆ๋กœ์šด ํฌํŠธ

๋”ฐ๋ผ์„œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ์œ ์ผํ•œ ๋…ธ๋ ฅ์€ @mikeal ์ด ๊ฒŒ์‹œํ•œ ๋งํฌ๋ฅผ ํ†ตํ•ด ์—๋ฎฌ๋ ˆ์ดํŠธ๋˜๋Š” ๊ฒฝ์šฐ ๋ชจ๋ฐ”์ผ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ „์ž๋ฅผ ์ง€์›ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์š”์ฆ˜ iOS์—์„œ ๋‹ค๋ฅธ JS VM์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฒ•์ž…๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด Apple์—์„œ ์—ฌ์ „ํžˆ ์‚ฌ์šฉ์„ ์š”๊ตฌํ•ฉ๋‹ˆ๊นŒ?

์‹คํ–‰ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š” @trusktr ๋ฐฐ์†ก VM์€ ์•ฑ ์Šคํ† ์–ด ์ง€์นจ์„ ์œ„๋ฐ˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์•ฑ์€ ์ด์ „์— ์•ฑ ์Šคํ† ์–ด์—์„œ ์Šน์ธ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค(ChakraCore๊ฐ€ ์•„๋‹Œ SpiderMonkey๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ).

์ „์ž๊ฐ€ ํ–ฅํ›„ ๋ชจ๋ฐ”์ผ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ง€์›ํ•  ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ ๋…ผ์˜๋ฅผ ๊ณ„์†ํ•˜๊ธฐ ์œ„ํ•ด ์ด ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ์ด๊ฒƒ์„ ๋‘ ๋ฒˆ์งธ. ๋ฌด์—‡์„ํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ? ๋‚˜๋Š” ์•ฝ๊ฐ„์˜ ๋ฐฉํ–ฅ์œผ๋กœ ์ด๊ฒƒ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ ๋˜๋Š” ํ•ดํ‚น์„ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.

@OtterCode ์ „์ž ๋ชจ๋ฐ”์ผ์ด๋ผ๋Š” ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ค๊ณ  ๊ฑฐ๊ธฐ์—์„œ ํ•ดํ‚น์„ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๊นŒ? ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ์ž‘์—…์„ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด ์˜ˆ์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ณ„ํšํ•˜๊ณ  ์ค€๋น„ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋‹จ๊ณ„๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ์—๋ฎฌ๋ ˆ์ดํŠธํ•  ์ˆ˜ ์žˆ๋Š” ๋” ๋†’์€ ์ˆ˜์ค€์˜ ์ „์ž์šฉ API ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? (Api ๋ฌธ์„œ, ๋นŒ๋“œ ๋Œ€์ƒ ๋“ฑ)

@OtterCode ๋ฐ ๊ด€์‹ฌ ์žˆ๋Š” ์‚ฌ๋žŒ์€ ๋‚ด๊ฐ€ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. https://github.com/gabrielcsapo/electron-mobile , ๊ด€์‹ฌ ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์žˆ์œผ๋ฉด ๊ท€ํ•˜๋ฅผ ์†Œ์œ ์ž๋กœ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ iOS ๋ฐ Android ๋นŒ๋“œ๋ฅผ ์œ„ํ•œ ์•ž์œผ๋กœ์˜ ์ž‘์—…์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์ž์˜ ํ‘œ์ .

Samsung Dex์™€ ๊ฐ™์€ ์ œํ’ˆ, http://www.samsung.com/global/galaxy/apps/samsung-dex/
์ด๊ฒƒ์„ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์š”์ฒญ IMO๋กœ ๋งŒ๋“œ์‹ญ์‹œ์˜ค(์ ์–ด๋„ Android์˜ ๊ฒฝ์šฐ).

์ด๊ฒƒ์€ ํ™•์‹คํžˆ ๋งค์šฐ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Google Play์˜ "Termux" ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์•ฑ์—์„œ ๋ฐ”๋กœ ์ „์ฒด Debian ๊ธฐ๋ฐ˜ ํ„ฐ๋ฏธ๋„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด ์žฅ์น˜์˜ CPU ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ง€์›ํ•˜๋Š” ํ•œ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์„ apt-get install ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(Node, Vim, Git ๋“ฑ). Termux์™€ ์œ ์‚ฌํ•œ ์ž์ฒด ์•ฑ ์ƒŒ๋“œ๋ฐ•์Šค ํ™˜๊ฒฝ์—์„œ Electron์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์€ ์™„์ „ํžˆ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

Termux๋Š” ํœด๋Œ€ํฐ์„ ๋ฃจํŒ…ํ•˜์ง€ ์•Š๊ณ ๋„ ์ž‘๋™ํ•˜๊ณ  ์•ฑ ์ƒŒ๋“œ๋ฐ•์Šค ๋‚ด๋ถ€์— ๋ชจ๋“  ๊ฒƒ์„ ์„ค์น˜ํ•˜๋ฉฐ Termux ๋‚ด์˜ "ํ™ˆ ํด๋”"์— ์™ธ๋ถ€ ์ €์žฅ์†Œ๋ฅผ ์‹ฌ๋ณผ๋ฆญ ๋งํฌํ•˜๊ณ  Termux๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“  ๋ช…๋ น์ค„ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์™ธ๋ถ€ ์ €์žฅ์†Œ์—์„œ ์ž‘์—…ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Termux์—์„œ ๋ฐ”๋กœ ์ œ๊ณต๋˜๋Š” localhost์˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ Node.js ์•ฑ์„ ์—ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Electron์œผ๋กœ ์ด์™€ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ ํ™•์‹คํžˆ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ์ผ์–ด๋‚˜๊ธฐ๋ฅผ ์ •๋ง๋กœ ํฌ๋งํ•ฉ๋‹ˆ๋‹ค. ๋…๋ฆฝ ์‹คํ–‰ํ˜• ๋ฐ์Šคํฌํƒ‘ ๊ธฐ๋ฐ˜ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์ด์—ˆ๋˜ ์ด์ „ ํ”„๋กœ์ ํŠธ์— ElectronJS๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. Electron์€ ๋งค์šฐ ํ›Œ๋ฅญํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ํšŒ์‚ฌ์—์„œ ์ €๋ฅผ ๊ณ ์šฉํ•˜๊ณ  ์‹ถ์–ดํ•˜๊ณ  ๋ชจ๋ฐ”์ผ ์•ฑ์„ ๋งŒ๋“ค๊ณ  ์‹ถ์–ดํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋‹ค๋ฅธ ํ”Œ๋žซํผ(iOS/Android)์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ํŒ€์„ ๊ฐ–๋Š” ์ˆ˜๊ณ ๋ฅผ ๊ฐ๋‹นํ•˜๊ณ  ์‹ถ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— PhoneGap์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. , ๋งŒ๋Šฅ ์†”๋ฃจ์…˜์„ ๊ฐ–๋Š” ๊ฒƒ์€ ๋งค์šฐ ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ElectronJS๊ฐ€ ๋ชจ๋ฐ”์ผ์„ ์ง€์›ํ•˜๋Š” ๋ฒ„์ „์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‹ค๋ฅธ ํ”Œ๋žซํผ๊ณผ ์–ธ์–ด ์‚ฌ์ด๋ฅผ ์ „ํ™˜ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

react-native๋Š” ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์˜๊ตฌ์ ์ธ ์ˆ˜์ •์ด ์•„๋‹™๋‹ˆ๋‹ค.

@aprilmintacpineda ์ด๋ฏธ Progressive Web Apps๋ฅผ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๊นŒ? https://developers.google.com/web/progressive-web-apps/

@Serkan-devel ์˜ˆ, ์ €๋Š” ์—ฌ๊ธฐ์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ๋ณด์•˜์„ ๋•Œ ํ”„๋กœ๊ทธ๋ ˆ์‹œ๋ธŒ ์›น ์•ฑ์„ ์ธ์‹ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  react-native๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

@aprilmintacpineda ์—ฌ์ „ํžˆ PWA๋ฅผ ์‚ฌ์šฉํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://youtube.com/watch?v=vhg01Ml-8pI . ๋ฐ์Šคํฌํƒ‘์—์„œ๋„ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค

nodejs-mobile ์„ Chromium ๊ณผ ์–ด๋–ป๊ฒŒ ํ†ตํ•ฉํ•ฉ๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ Electron์ด ๋ฐ์Šคํฌํƒ‘์šฉ์œผ๋กœ ํ•œ ๊ฒƒ๊ณผ ์œ ์‚ฌํ•œ ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์—์„œ Node๋ฅผ ๋ชจ๋ฐ”์ผ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์†”๋ฃจ์…˜์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

(๋‚˜๋Š” PWA๊ฐ€ ์˜ค๋Š˜๋‚  ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ๊ณ  ์žˆ์œผ๋ฉฐ ์›น ์•ฑ์„ ๋ชจ๋ฐ”์ผ ์•ฑ์œผ๋กœ ๋ž˜ํ•‘ํ•˜๋Š” Cordova์™€ ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์žˆ์ง€๋งŒ PWA๋Š” OS ์ˆ˜์ค€ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์•ก์„ธ์Šคํ•˜๊ฑฐ๋‚˜ HTTP ์„œ๋ฒ„๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์—†์œผ๋ฉฐ Cordova๋Š” ๊ณผ์ž‰์ž…๋‹ˆ๋‹ค. ๋‚ด ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ Android ๋ฐ iOS์˜ ์„ค์ • ๋ฐ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋Š” ๋งํ•  ๊ฒƒ๋„ ์—†์Šต๋‹ˆ๋‹ค.)

๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ๋ชจ๋ฐ”์ผ์šฉ Node ํ†ตํ•ฉ ๋ธŒ๋ผ์šฐ์ € ๋ฒˆ๋“ค์€ Electron์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์Šคํฌํ†ฑ ์•ฑ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ๋งŒํผ ์‰ฝ๊ฒŒ ๊ฐœ๋ฐœ์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ชจ๋ฐ”์ผ์šฉ์œผ๋กœ ์™„์ „ํžˆ ๋‹ค๋ฅธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋Œ€์‹  ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €๋Š” ์›น ๊ฐœ๋ฐœ์ž์ด๊ณ  Node์™€ ๋ณต์žกํ•œ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ฉํ•˜๋Š” ๊ฒƒ์€ ๊ณ ์‚ฌํ•˜๊ณ  ์‹œ์Šคํ…œ/๋„ค์ดํ‹ฐ๋ธŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์ถ•์— ๋Œ€ํ•œ ์ „๋ฌธ ์ง€์‹์ด ์—†์œผ๋ฏ€๋กœ ์–ด๋–ค ํฌ์ธํ„ฐ๋ผ๋„ ๋Œ€๋‹จํžˆ ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ „๋ฌธ ์ง€์‹์ด ์žˆ๊ณ  ๊ทธ๋Ÿฌํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ๋„์›€์„ ์ฃผ๊ณ  ์‹ถ๋‹ค๋ฉด ๊ธฐ๊บผ์ด ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ•œ ์ผ์ด์ง€๋งŒ, ์šฐ๋ฆฌ๊ฐ€ ์ •๋ง๋กœ ์ด๊ฒƒ์„ ํ•ด์•ผ ํ•œ๋‹ค๋ฉด ํ•œ ๋ฒˆ ๋” ์ƒ๊ฐํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ „์ž๋ฅผ ์‚ฌ์šฉํ•œ ๋ฐ์Šคํฌํ†ฑ ์•ฑ์—์„œ ํŠนํžˆ CSS ์• ๋‹ˆ๋ฉ”์ด์…˜์—์„œ ์ง€์—ฐ์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋„ค์ดํ‹ฐ๋ธŒ ์˜ต์…˜์ด ์žˆ๋‹ค๋ฉด ๋„ค์ดํ‹ฐ๋ธŒ๋ฅผ ์„ ํƒํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋„ค์ดํ‹ฐ๋ธŒ๋Š” ๋งŽ์€ ๊ฒƒ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์•„๋‹ˆ๋ฉด PWA๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์‹ญ์‹œ์˜ค. ํ›Œ๋ฅญํ•˜์ง€๋งŒ ์•„์ง ์•ฑ์„ ๋Œ€์ฒดํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ ํฐ ๋ฏธ๋ž˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํ‘œ์‹œ

https://github.com/dna2github/dna2oslab

์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ์ž˜ ์ž‘๋™ํ•˜๋Š” nodejs

Electron๊ณผ ์™„์ „ํžˆ ๊ฐ™์ง€๋Š” ์•Š์ง€๋งŒ Node.js๋กœ Android ์•ฑ์„ ๋นŒ๋“œํ•˜๋ ค๋Š” ์‚ฌ๋žŒ์—๊ฒŒ๋Š” ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฐ€ ๋‚ด ํ…Œ์ŠคํŠธ์—์„œ ์ž˜ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰