Skip to content

CodeSandbox 1.5 Changelog

Woo HyeJu edited this page Nov 12, 2019 · 1 revision
2017.8.16 - โœ๏ธIves van Hoorne

์ด๊ฒƒ์€ CodeSandbox v1.5์ด๋‹ค. ๋” ์ด์ƒ ๋ชจ๋“  ์—…๋ฐ์ดํŠธ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๋ฏ€๋กœ, ์ž„์˜์˜ ์ˆซ์ž๋กœ CodeSandbox์˜ ๋ฒ„์ „์„ ๊ฒฐ์ •ํ–ˆ๋‹ค.

์ด๊ฒƒ์€ ํฐ ์—…๋ฐ์ดํŠธ์ด๋ฉฐ, ํŽธ์ง‘๊ธฐ, ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํ™”๋ฉด ๋ฐ packager๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ–ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์œผ๋กœ ์ธํ•ด ๋ฐฐํฌ๊ฐ€ ๋งค์šฐ ํฅ๋ฏธ๋กœ์›Œ์กŒ์ง€๋งŒ, ์ง€๊ธˆ ์˜จ๋ผ์ธ ์ƒํƒœ์ด๋‹ค.

Editor

ํŽธ์ง‘๊ธฐ๋Š” monaco-editor๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์‹œ ์ž‘์„ฑ๋˜์—ˆ๋‹ค. ์ด ํŽธ์ง‘๊ธฐ๋Š” ์ถ”์ถœ ๋œ vscode ํŽธ์ง‘๊ธฐ ๋ฒ„์ „์ด๋ฏ€๋กœ ์‹ค์ œ๋กœ ๊ฐ•๋ ฅํ•˜๋‹ค.

Peek Definition, Go to Definition, Find all References

monaco-editor์˜ ๊ฐ€์žฅ ๋ฉ‹์ง„ ์ ์€ vscode์˜ ํ•ต์‹ฌ ํŽธ์ง‘๊ธฐ ๊ธฐ๋Šฅ (Go to Definition, Peek Definition ๋“ฑ)์„ ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ํ•ด์•ผ ํ•  ์œ ์ผํ•œ ๊ฒƒ์€ ๋ชจ๋“  ๊ฒƒ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์šฐ๋ฆฌ๋Š” CodeSandbox์—์„œ ๋” ๋‚˜์€ ํฌ๋กœ์Šค ํŒŒ์ผ ํ†ตํ•ฉ์„ ์œ„ํ•ด Monaco ํŽธ์ง‘๊ธฐ์˜ ๋ณ„๋„ ๋นŒ๋“œ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.

Automatic Type Acquisition

ํƒ์ƒ‰์ด ์‰ฌ์šธ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, monaco-editor์—๋Š” IntelliSense๋ฅผ ์œ„ํ•œ JavaScript ๋ฐ TypeScript๊ฐ€ ๋‚ด์žฅ๋˜์–ด ์žˆ๋‹ค. ์˜์กด์„ฑ์„ ์ž‘์„ฑํ•˜๋ฉด ํ›จ์”ฌ ์ข‹๋‹ค. ๊ทธ๋ž˜์„œ 'Automatic Type Acquisition'์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋ชจ๋“  '์„ค์น˜๋œ' ์˜์กด์„ฑ์— ๋Œ€ํ•ด https://unpkg.com์—์„œ ์œ ํ˜•์„ ๊ฒ€์ƒ‰ํ•˜๊ณ  ๋‹ค์šด๋กœ๋“œํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ์ด ๋ฐฉ๋ฒ•์œผ๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ž๋™ ์™„์„ฑ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ESLint, Prettier, Emmet.io

๊ฑฐ์˜ ๋ชจ๋“  ๊ธฐ์กด ํŽธ์ง‘๊ธฐ ๊ธฐ๋Šฅ์„ ํฌํŒ…ํ–ˆ๋‹ค. ์ฆ‰, ํŽธ์ง‘๊ธฐ์— ESLint, Prettier ๋ฐ Emmet.io๊ฐ€ ๋‚ด์žฅ๋˜์–ด ์žˆ๋‹ค. ์œ ๊ฐ‘์Šค๋Ÿฝ๊ฒŒ๋„, Vim Mode๋ฅผ ์‚ญ์ œํ•ด์•ผ ํ–ˆ์ง€๋งŒ, Monaco๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  CodeMirror๋ฅผ ํ™œ์„ฑํ™”ํ•œ๋‹ค๋ฉด Vim Mode๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์ƒˆ๋กœ์šด ํŽธ์ง‘๊ธฐ์— ์ •๋ง ๋งŒ์กฑํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, monaco-editor ์—†์ด๋Š” TypeScript, unpkg, Emmet.io, ESLint ๋ฐ Prettier ๋“ค์ด ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์„ ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฌํ•œ tool๋“ค์— ํ™•์‹คํ•˜๊ฒŒ ๊ฐ์‚ฌํ•˜๋‹ค๊ณ  ๋งํ•˜๊ณ  ์‹ถ์œผ๋ฉฐ, ๋‚ด๊ฐ€ ํ•ด์•ผ ํ•  ์œ ์ผํ•œ ๊ฒƒ์€ ๋ชจ๋“  ๊ฒƒ์„ ์—ฐ๊ฒฐํ•˜๊ณ  ์ผ๋ถ€ ํ†ตํ•ฉ์„ ํŒจ์น˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

react-error-overlay

์šฐ๋ฆฌ๋Š” CodeSandbox๋ฅผ ํ›จ์”ฌ ๋” ์ข‹๊ฒŒ ๋งŒ๋“œ๋Š” ๋˜ ๋‹ค๋ฅธ ๋„๊ตฌ, ์ฆ‰ create-react-app์— ์˜ํ•œ react-error-overlay๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค. CodeSandbox์˜ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๊ฐ€ ๋‹ค์‹œ ์ˆ˜ํ–‰๋˜์—ˆ์œผ๋ฉฐ. react-error-overlay ๋•๋ถ„์— ์ด์ œ ๋น„๋™๊ธฐ ์˜ค๋ฅ˜์™€ ๋”ฅ ๋งํฌ ์˜ค๋ฅ˜๋ฅผ ์ง€์›ํ•˜๊ณ  ์•„๋ฆ„๋‹ค์šด ์˜ค๋ฅ˜ ์˜ค๋ฒ„๋ ˆ์ด๋ฅผ ๊ฐ–๊ฒŒ๋˜์—ˆ๋‹ค. ๋˜ํ•œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์˜ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•˜์—ฌ ์˜ค๋ฅ˜๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ํŒŒ์ผ์— ํ‘œ์‹œ๋˜์—ˆ๋‹ค.

CodeSandbox๋Š” ์˜ค๋ฅ˜๋ฅผ ํ‘œ์‹œ ํ• ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์•Œ๋ ค์ง„ ์˜ค๋ฅ˜์— ๋Œ€ํ•ด ์ œ์•ˆ๋„ ์ œ๊ณตํ•œ๋‹ค. ์œ„์˜ ์˜ˆ์—์„œ DeepComponent.js๋Š” RawComponent๋ฅผ ๊ฐ€์ ธ ์˜ค๋Š” ์ค‘์ด๋ฏ€๋กœ ํ™•์žฅ์ž๊ฐ€ ์—†๋‹ค. ๋”ฐ๋ผ์„œ ์ž˜๋ชป๋œ ํƒœ๊ทธ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ ์‰ฝ๊ฒŒ ๊ฐ์ง€ํ•˜๊ณ , ํŒŒ์ผ ์ด๋ฆ„์„ ๋ฐ”๊ฟ€ ๊ฒƒ์„ ์ œ์•ˆ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ํŠน์ • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์˜ค๋ฅ˜์— ๋Œ€ํ•œ ์ œ์•ˆ์„ ์ถ”๊ฐ€ ํ•  ์ˆ˜์žˆ๋Š” API๋ฅผ ์ž‘์„ฑํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

External Frames

์ด์ œ ์™ธ๋ถ€ URL์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์—ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ ์ค‘์— ๋ณ„๋„์˜ ์ฐฝ์—์„œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ๋ณด๊ฑฐ๋‚˜, ํ”„๋กœ์ ํŠธ์˜ ์ „์ฒด ํ™”๋ฉด ๋ฒ„์ „์„ ์นœ๊ตฌ๋“ค๊ณผ ๊ณต์œ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ์™ธ๋ถ€ ํ”„๋ ˆ์ž„์€ ํ”„๋กœ๋•์…˜ ๋ฒ„์ „๊ณผ ๊ฑฐ์˜ ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ZEIT์™€ ํ•จ๊ป˜ 'Deploy to Now'๋ฅผ ํ†ตํ•ฉํ•˜์—ฌ ํ”„๋กœ๋•์…˜ ๋ฒ„์ „์„ ์ž๋™์œผ๋กœ ๋ฐฐํฌ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์™ธ๋ถ€ ํ”„๋กœ์ ํŠธ๋Š” ์˜คํ”„๋ผ์ธ์—์„œ๋„ ์ž‘๋™ํ•œ๋‹ค.

Offline Support

CodeSandbox๋Š” ์ด์ œ service workers๊ฐ€ ์ง€์›ํ•œ๋‹ค. ์ฆ‰, ์˜คํ”„๋ผ์ธ์—์„œ๋„ ํŽธ์ง‘๊ธฐ์™€ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์—ด ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด์ œ๋Š” ๊ณต๋ฃก ๋Œ€์‹  ์ฝ”๋“œ ์ƒŒ๋“œ ๋ฐ•์Šค๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์˜คํ”„๋ผ์ธ ์ง€์›์€ ํ˜„์žฌ ์ œํ•œ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ, ์•„์ง ํ”„๋กœ์ ํŠธ๋ฅผ ์˜คํ”„๋ผ์ธ์œผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์—†๋‹ค. ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ์„œ๋ฒ„๋ฅผ ์•ฝ๊ฐ„ ๋ณ€๊ฒฝํ•ด์•ผํ•œ๋‹ค. ๊ทธ๋ž˜๋„ ํ”„๋กœ์ ํŠธ๋Š” ํŽธ์ง‘ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ์‹ค์ œ๋กœ ์†๋„๊ฐ€ ํ–ฅ์ƒ๋˜์–ด ์˜์กด์„ฑ๊ณผ ๊ฐ™์€ ๋„คํŠธ์›Œํฌ ์™•๋ณต ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•œ๋‹ค.

Dependency Packager Rewrite

์˜์กด์„ฑ์˜ ํŒจํ‚ค์ง€๊ฐ€ ๋‹ค์‹œ ์ž‘์„ฑ๋˜์—ˆ๋‹ค. ์ด์ œ severless ์†”๋ฃจ์…˜์œผ๋กœ ํ˜ธ์ŠคํŒ…๋˜๋ฏ€๋กœ, ๋ฌดํ•œ์ • ํ™•์žฅ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ์†๋„๊ฐ€ ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜์—ˆ์œผ๋ฉฐ, ์‘๋‹ต ์‹œ๊ฐ„์ด 40%-700% ์ •๋„ ๊ฐœ์„ ๋˜์—ˆ๋‹ค.

์ƒˆ๋กœ์šด ํŒจํ‚ค์ง€์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์€ ์ ˆ๋Œ€ ๋ฒ„์ „ ๋ฟ ์•„๋‹ˆ๋ผ ์ด์ „์˜ ๋ฒ„์ „์„ ํฌํ•จํ•œ ๋ฒ„์ „ ๋ฒ”์œ„๋ฅผ ์ง€์›ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด react@next๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ทธ๊ฒƒ์€ React ์—…๋ฐ์ดํŠธ๋กœ ์ž๋™ ์—…๋ฐ์ดํŠธ๋œ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ์ด๋ฒˆ ์ฃผ ์–ด๋”˜๊ฐ€์— ๋ฐฐํฌ ๋  ์˜ˆ์ •์ด๋ฏ€๋กœ ๋จผ์ € ์„œ๋ฒ„ ๋กœ์ง์„ ๋ณ€๊ฒฝํ•ด์•ผํ•œ๋‹ค.

severless๋กœ ์ž‘์—… ํ•œ ํ›„, ์‹ค์ œ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•ด ๊นŠ์€ ์ธ์ƒ์„ ๋ฐ›์•˜๋‹ค. ํ˜ธ์ŠคํŒ… ๋น„์šฉ์ด ํ•œ ๋‹ฌ์— $ 50์—์„œ ์›” $ 0.03๋กœ ๊ฐ์†Œํ–ˆ๋‹ค. ์ด์ œ ๋” ๋น ๋ฅด๊ณ , ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๋ฐฐํฌ๊ฐ€ ๋งค์šฐ ์‰ฌ์›Œ์กŒ๋‹ค. ์‹œ๊ฐ„์ด ๋‚˜๋ฉด ์ด๊ฒƒ์— ๊ด€ํ•œ ๊ฒŒ์‹œ๋ฌผ์„ ์“ธ ๊ฒƒ์ด๋‹ค.

Thanks

๊ธฐํš ๐Ÿ’ก
๊ทœ์น™ ๐Ÿ›
API ๋ฌธ์„œ ๐Ÿง‘๐Ÿปโ€๐Ÿ’ป
Style Guides ๐Ÿ“‹
์Šคํ”„๋ฆฐํŠธ ๐Ÿ”–
๋ฐ์ผ๋ฆฌ ์Šคํฌ๋Ÿผ ๐Ÿ“
์˜ค๋Š˜์˜ ํšŒ๊ณ  โšพ๏ธ
ํšŒ์˜๋ก ๐Ÿ“„

ํšŒ์˜๋ก

๊ธฐ์ˆ ๊ณต์œ  ๐Ÿ”ฅ
Clone this wiki locally