Deno ํ”„๋กœ์ ํŠธ๋Š” Node.js์™€ ์œ ์‚ฌํ•œ ๋ณด์•ˆ JavaScript ํ”Œ๋žซํผ์„ ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค.

์‚ฌ์šฉ ๊ฐ€๋Šฅ ํ”„๋กœ์ ํŠธ ๋ฆด๋ฆฌ์Šค ๋ฐ๋…ธ 0.33๋Š” ์„œ๋ฒ„์—์„œ ์‹คํ–‰๋˜๋Š” ํ•ธ๋“ค๋Ÿฌ ์ƒ์„ฑ๊ณผ ๊ฐ™์ด ๋ธŒ๋ผ์šฐ์ €์— ๋ฌถ์ด์ง€ ์•Š๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” JavaScript ๋ฐ TypeScript์˜ ๋…๋ฆฝ ์‹คํ–‰ํ˜• ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰์„ ์œ„ํ•œ Node.js์™€ ์œ ์‚ฌํ•œ ํ”Œ๋žซํผ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Deno๋Š” JavaScript ์—”์ง„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. V8, Node.js ๋ฐ Chromium ํ”„๋กœ์ ํŠธ ๊ธฐ๋ฐ˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋„ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ ๋ฐฐํฌ์ž MIT ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ. ์ด ํ”„๋กœ์ ํŠธ๋Š” Ryan Dahl(๋ผ์ด์–ธ ๋‹ฌ), Node.js JavaScript ํ”Œ๋žซํผ์˜ ์ฐฝ์‹œ์ž์ž…๋‹ˆ๋‹ค.

JavaScript๋ฅผ ์œ„ํ•œ ์ƒˆ๋กœ์šด ๋Ÿฐํƒ€์ž„์„ ๋งŒ๋“œ๋Š” ์ฃผ์š” ๋ชฉํ‘œ ์ค‘ ํ•˜๋‚˜๋Š” ๋ณด๋‹ค ์•ˆ์ „ํ•œ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๊ธฐ ์œ„ํ•ด V8 ์—”์ง„์€ Rust๋กœ ์ž‘์„ฑ๋˜์–ด After Free ์•ก์„ธ์Šค, ๋„ ํฌ์ธํ„ฐ ์—ญ์ฐธ์กฐ ๋ฐ ๋ฒ„ํผ ์˜ค๋ฒ„๋Ÿฐ๊ณผ ๊ฐ™์€ ๋‚ฎ์€ ์ˆ˜์ค€์˜ ๋ฉ”๋ชจ๋ฆฌ ์กฐ์ž‘์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ๋งŽ์€ ์ทจ์•ฝ์ ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋žซํผ์€ ๋น„์ฐจ๋‹จ ๋ชจ๋“œ๋กœ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ† ํ‚ค์˜ค, ๋˜ํ•œ Rust๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Tokio๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฒคํŠธ ์ค‘์‹ฌ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๊ณ ์„ฑ๋Šฅ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•˜์—ฌ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์„ ์ง€์›ํ•˜๊ณ  ๋น„๋™๊ธฐ ๋ชจ๋“œ์—์„œ ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ํŠน์ง• ๋ฐ๋…ธ:

  • ๋ณด์•ˆ ์ง€ํ–ฅ ๊ธฐ๋ณธ ๊ตฌ์„ฑ. ํŒŒ์ผ ์•ก์„ธ์Šค, ๋„คํŠธ์›Œํ‚น ๋ฐ ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์œผ๋ฉฐ ๋ช…์‹œ์ ์œผ๋กœ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • JavaScript ์™ธ์—๋„ TypeScript ์–ธ์–ด์— ๋Œ€ํ•œ ์ง€์›์ด ๋‚ด์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋Ÿฐํƒ€์ž„์€ ๋‹จ์ผ ๋…๋ฆฝ ์‹คํ–‰ ํŒŒ์ผ(โ€œdenoโ€) ํ˜•ํƒœ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. Deno๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์—…๋กœ๋“œ ํ”Œ๋žซํผ 10 ์‹คํ–‰ ํŒŒ์ผ์˜ ๊ฒฝ์šฐ ํฌ๊ธฐ๊ฐ€ ์•ฝ XNUMXMB์ด๋ฉฐ ์™ธ๋ถ€ ์ข…์†์„ฑ์ด ์—†์œผ๋ฉฐ ์‹œ์Šคํ…œ์— ํŠน๋ณ„ํ•œ ์„ค์น˜๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ํ”„๋กœ๊ทธ๋žจ์„ ์‹œ์ž‘ํ•˜๊ณ  ๋ชจ๋“ˆ์„ ๋กœ๋“œํ•  ๋•Œ URL ์ฃผ์†Œ ์ง€์ •์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Welcome.js ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด โ€œdeno https://deno.land/std/examples/welcome.jsโ€ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์™ธ๋ถ€ ๋ฆฌ์†Œ์Šค์˜ ์ฝ”๋“œ๋Š” ๋กœ์ปฌ ์‹œ์Šคํ…œ์— ๋‹ค์šด๋กœ๋“œ๋˜๊ณ  ์บ์‹œ๋˜์ง€๋งŒ ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด "--reload" ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ช…์‹œ์ ์œผ๋กœ ์‹คํ–‰ํ•ด์•ผ ํ•จ).
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ HTTP๋ฅผ ํ†ตํ•ด ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉฐ ํ”Œ๋žซํผ์€ ๊ณ ์„ฑ๋Šฅ ๋„คํŠธ์›Œํฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Deno์™€ ์ผ๋ฐ˜ ์›น ๋ธŒ๋ผ์šฐ์ € ๋ชจ๋‘์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์šฉ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ
  • ๋Ÿฐํƒ€์ž„ ์™ธ์—๋„ Deno ํ”Œ๋žซํผ์€ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž ์—ญํ• ์„ ํ•˜๋ฉฐ ์ฝ”๋“œ ๋‚ด์˜ URL์„ ํ†ตํ•ด ๋ชจ๋“ˆ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ชจ๋“ˆ์„ ๋กœ๋“œํ•˜๋ ค๋ฉด "https://deno.land/std/log/mod.ts"์—์„œ ๋กœ๊ทธ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ *๋ฅผ ์ฝ”๋“œ์— ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. URL์„ ํ†ตํ•ด ์™ธ๋ถ€ ์„œ๋ฒ„์—์„œ ๋‹ค์šด๋กœ๋“œํ•œ ํŒŒ์ผ์€ ์บ์‹œ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“ˆ ๋ฒ„์ „์— ๋Œ€ํ•œ ๋ฐ”์ธ๋”ฉ์€ URL ๋‚ด์— ๋ฒ„์ „ ๋ฒˆํ˜ธ๋ฅผ ์ง€์ •ํ•˜์—ฌ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค(์˜ˆ: "https://unpkg.com/).[์ด๋ฉ”์ผ ๋ณดํ˜ธ]/dist/liltest.js";
  • ๊ตฌ์กฐ์—๋Š” ํ†ตํ•ฉ ์ข…์†์„ฑ ๊ฒ€์‚ฌ ์‹œ์Šคํ…œ("deno info" ๋ช…๋ น)๊ณผ ์ฝ”๋“œ ํ˜•์‹ ์ง€์ • ์œ ํ‹ธ๋ฆฌํ‹ฐ(deno fmt)๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž์šฉ ์ œ์•ˆ ์ถ”๊ฐ€ ๊ฐ์‚ฌ ๋ฐ ํ˜ธํ™˜์„ฑ ํ…Œ์ŠคํŠธ๋ฅผ ๊ฑฐ์นœ ํ‘œ์ค€ ๋ชจ๋“ˆ ์„ธํŠธ
  • ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ•˜๋‚˜์˜ JavaScript ํŒŒ์ผ๋กœ ๊ฒฐํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Node.js์™€์˜ ์ฐจ์ด์ :

  • Deno๋Š” npm ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋ฌถ์—ฌ ์žˆ์ง€ ์•Š๊ณ , ๋ชจ๋“ˆ์€ URL์ด๋‚˜ ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ํ†ตํ•ด ์ฃผ์†Œ๊ฐ€ ์ง€์ •๋˜๋ฉฐ, ๋ชจ๋“ˆ ์ž์ฒด๋Š” ๋ชจ๋“  ์›น์‚ฌ์ดํŠธ์— ๋ฐฐ์น˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Deno๋Š” ๋ชจ๋“ˆ์„ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•ด "package.json"์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • API ์ฐจ์ด์ , Deno์˜ ๋ชจ๋“  ๋น„๋™๊ธฐ ์ž‘์—…์€ ์•ฝ์†์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • Deno๋Š” ํŒŒ์ผ, ๋„คํŠธ์›Œํฌ ๋ฐ ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ํ•„์š”ํ•œ ๋ชจ๋“  ๊ถŒํ•œ์„ ๋ช…์‹œ์ ์œผ๋กœ ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ํ•ธ๋“ค๋Ÿฌ์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜์ง€ ์•Š์€ ๋ชจ๋“  ์˜ค๋ฅ˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ข…๋ฃŒ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.
  • Deno๋Š” ECMAScript ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋ฉฐ require()๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€