atom-shell์ด โโiOS/Android๋ฅผ ์ง์ํ๋ค๋ฉด ๊ต์ฅํ ๊ฒ์ ๋๋ค. ์ด ์ง์์ ๋ฌ์ฑํ๋ ค๋ฉด ๋ฌด์์ด ํ์ํฉ๋๊น? ๊ด๋ จ #366
๋๋ 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๊ณผ ๊ฐ์ ์ฌ์ฉ์ ์ ์ ์ธํฐํ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๊น?
์ด ์ค๋ ๋์ ์๋ ์ฌ๋๋ค์ด ์๊ฐํ๊ณ ์ถ์ ๋ช ๊ฐ์ง ์ง๋ฌธ์ด ์์์ต๋๋ค.
์ด๋์์๋ ์คํํ ์ ์๋ ํ๋์ ์ฑ์ ์ฐพ๊ณ ์์ต๋๋ค. ํ๋์ ์ฝ๋๋ฒ ์ด์ค, ํ๋์ ์น ํ๋ซํผ, ๋ชจ๋ ํ๊ฒฝ.
ํ๋ฉด ํฌ๊ธฐ์ ์ฅ์น๋ ์ค์ํ์ง ์์ง๋ง ๋์ผํ ๊ธฐ๋ฅ์ ์ํ ์ ์๋ ์ข์ ๋ชจ๋ฐ์ผ/๋ฐ์คํฌํฑ/์น ์ฑ์ ์:
์์ ๋ชจ๋ ์ฑ์ ๊ธฐ๋ณธ ์คํ ํ์ผ๋ก ์คํ๋๋ ๋ฐ์คํฌํฑ ๋ฒ์ ์ด ๋ฐ๋์ ์๋ ๊ฒ์ ์๋์ง๋ง ๋ธ๋ผ์ฐ์ ์ ๋ฐ์คํฌํฑ ๋ฒ์ ์ด ์์ต๋๋ค. ๋ฌผ๋ก ์ ์๊ฒ๋ ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ค๋ฅด์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ์ด๋ค ๊ธฐ๊ธฐ์ ์๋ ์ ์ฑ์ด ์ ์ฑ์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์ต๋ํ ๋ชจ๋ ๊ธฐ๊ธฐ์์ ๋์ผํ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด ๋ ธ๋ ฅํฉ๋๋ค. ์ ์ ๋ผ? 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
๋ฌธ์ :
์ฐ๋ฆฌ๊ฐ ํ ์ ์๋ ์ผ:
์ฐ๋ฆฌ๋ ํก๋จ ๋ณด๋์ ๊ธฐ์ฌ์์ ์ ์ง ๊ด๋ฆฌ์๊ฐ ํ์ํฉ๋๋ค. ๋ฐ๋ก ๋น์ ์ด ์ฐพ๊ณ ์๋ ์ฌ๋์ผ ๊ฒ์ ๋๋ค.
์ข์ ์์
๊ด๋ จ ๋ด์ค, @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 ์ฑ์ ๋น๋ํ๋ ค๋ ์ฌ๋์๊ฒ๋ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ ๋ด ํ ์คํธ์์ ์ ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์๋ง๋ ์ฌ๋ฌ๋ถ์ (์ด์จ๋ ) ํ๊ฒฝ์ ๊ฐ์งํ์ฌ (๋ฐํ์ ์ ๋๋ ๋น๋ ์ค์ ์ง์ ) Electron API๊ฐ ์ฐ๋ฆฌ ๋ชจ๋ฅด๊ฒ Cordova ๋ชจ๋(๋๋ ๊ธฐ๋ณธ ์ฝ๋)์ ๋จ์ํ ํธ์ถํ๋๋ก ํ์ฌ ์ต์ํ Cordova ๋ฑ์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๊ฒ์ ๋ฏธ์น ๋ฏ์ด ๊ต์ฅ ํ ๊ฒ์ ๋๋ค.