XNUMX๋
์ฌ์ ๊ฐ๋ฐ ๋์
์ค์ํ ๋ฒ์ ๋ฒํธ๋ ์ ํ๋ฆฌ์ผ์ด์
๊ณผ OS์ ์ํธ ์์ฉ์ ๋ด๋นํ๋ Deno ๋ค์์คํ์ด์ค์ API ์์ ํ์ ๊ด๋ จ์ด ์์ต๋๋ค. ์ง๊ธ๊น์ง์ ์ํํธ์จ์ด ์ธํฐํ์ด์ค
์๋ก์ด JavaScript ํ๋ซํผ์ ๋ง๋ ์ฃผ์ ๋๊ธฐ๋ ๊ฐ๋
์ ์ค๋ฅ๋ฅผ ์ ๊ฑฐํ๋ ค๋ ์ด๋ง์ด์์ต๋๋ค.
์ฃผ์
- ๋ณด์ ์งํฅ ๊ธฐ๋ณธ ๊ตฌ์ฑ. ํ์ผ ์ก์ธ์ค, ๋คํธ์ํน ๋ฐ ํ๊ฒฝ ๋ณ์์ ๋ํ ์ก์ธ์ค๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋์ด ์์ผ๋ฉฐ ๋ช ์์ ์ผ๋ก ํ์ฑํํด์ผ ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฉ๋ฆฌ๋ ์๋๋ฐ์ค ํ๊ฒฝ์์ ์คํ๋๋ฉฐ ๋ช ์์ ์ธ ๊ถํ์ ๋ถ์ฌํ์ง ์์ผ๋ฉด ์์คํ ๊ธฐ๋ฅ์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
- JavaScript ์ด์์ TypeScript ์ง์์ด ๋ด์ฅ๋์ด ์์ต๋๋ค. ํ์ค TypeScript ์ปดํ์ผ๋ฌ๋ ์ ํ์ ํ์ธํ๊ณ JavaScript๋ฅผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ, ์ด๋ V8์ JavaScript ๊ตฌ๋ฌธ ๋ถ์์ ๋นํด ์ฑ๋ฅ ์ ํ๋ฅผ ์ด๋ํฉ๋๋ค. ์์ผ๋ก ์ฐ๋ฆฌ๋ TypeScript ์ฒ๋ฆฌ ์ฑ๋ฅ์ ๋ํญ ํฅ์์ํฌ TypeScript ์ ํ ๊ฒ์ฌ ์์คํ ์ ์์ฒด ๊ตฌํ์ ์ค๋นํ ๊ณํ์ ๋๋ค.
- ๋ฐํ์์ ๋จ์ผ ๋
๋ฆฝ ์คํ ํ์ผ(โdenoโ) ํํ๋ก ์ ๊ณต๋ฉ๋๋ค. Deno๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์
์ ์คํํ๋ ค๋ฉด ์ถฉ๋ถํฉ๋๋ค.
์ ๋ก๋ ํด๋น ํ๋ซํผ์๋ ํฌ๊ธฐ๊ฐ ์ฝ 20MB์ธ ํ๋์ ์คํ ํ์ผ์ด ์์ผ๋ฉฐ ์ธ๋ถ ์ข ์์ฑ์ด ์์ผ๋ฉฐ ์์คํ ์ ํน๋ณํ ์ค์น๊ฐ ํ์ํ์ง ์์ต๋๋ค. ๊ฒ๋ค๊ฐ, deno๋ ๋ชจ๋๋ฆฌ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋๋ผ Rust์ ํฌ๋ ์ดํธ ํจํค์ง ๋ชจ์์ ๋๋ค(deno_core ,Rusty_v8 ), ๋ณ๋๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. - ํ๋ก๊ทธ๋จ์ ์์ํ๊ณ ๋ชจ๋์ ๋ก๋ํ ๋ 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()๋ฅผ ์ง์ํ์ง ์์ต๋๋ค.
- Deno์ ๋ด์ฅ HTTP ์๋ฒ๋ TypeScript๋ก ์์ฑ๋์ด ๊ธฐ๋ณธ TCP ์์ผ ์์์ ์คํ๋๋ ๋ฐ๋ฉด, Node.js HTTP ์๋ฒ๋ C๋ก ์์ฑ๋์ด JavaScript์ ๋ํ ๋ฐ์ธ๋ฉ์ ์ ๊ณตํฉ๋๋ค. Deno์ ๊ฐ๋ฐ์๋ค์ ์ ์ฒด TCP ์์ผ ๊ณ์ธต์ ์ต์ ํํ๊ณ ๋ณด๋ค ์ผ๋ฐ์ ์ธ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ ๋ฐ ์ค์ ์ ๋์์ต๋๋ค. Deno HTTP Server๋ ๋ฎ์ ์ฒ๋ฆฌ๋์ ์ ๊ณตํ์ง๋ง ์์ธก ๊ฐ๋ฅํ ์งง์ ๋๊ธฐ ์๊ฐ์ ๋ณด์ฅํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํ ์คํธ์์ Deno HTTP ์๋ฒ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๊ฐ๋จํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต๋ 25๋ฐ๋ฆฌ์ด์ ๋๊ธฐ ์๊ฐ์ผ๋ก ์ด๋น 1.3๊ฐ์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์์ต๋๋ค. Node.js์์ ์ ์ฌํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๋น 34๊ฐ์ ์์ฒญ์ ์ฒ๋ฆฌํ์ง๋ง ์ง์ฐ ์๊ฐ์ 2~300๋ฐ๋ฆฌ์ด์์ต๋๋ค.
- Deno๋ Node.js(NPM)์ฉ ํจํค์ง์ ํธํ๋์ง ์์ผ๋ ๋ณ๋๋ก ๊ฐ๋ฐ ์ค์
๋๋ค.
์ค๊ฐ์ธต ํ์ค Node.js ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ํธํ์ฑ์ ์ํด ๊ฐ๋ฐ๋จ์ ๋ฐ๋ผ Node.js์ฉ์ผ๋ก ์์ฑ๋ ๋ ๋ง์ ์ ํ๋ฆฌ์ผ์ด์ ์ด Deno์์ ์คํ๋ ์ ์์ต๋๋ค.
์ถ์ฒ : opennet.ru