๐ฆ๋ฆผํ์ข ๊ตํํ๋ฌ ๊ฐ๊น์?๋ณด์: Deno๋ฅผ ์ํ ํ ํ๋ฆฟ์ ๋ง๋ค์์ต๋๋ค.
์ฒซ๋ฒ์งธ ์ผ
๋ฐ๋ ธ๋ ์์ง ์์ฐ ์ค๋น๊ฐ ๋์ง ์์๋ค.์ด ๊ธ์ ์ธ ๋, ๊ทธ๊ฒ์ ํ๋ณธ์ 1.0.0-rc2์ด๋ค.์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ์ ์ํํ ํด์ผ ํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ ๊ฒ์ ๋๊น?์๋, ์ฐ๋ฆฌ๋ ์ง๊ธ๋ถํฐ ๊ทธ๊ฒ์ ๋ฐฐ์์ผ ํ๋ค. ์๋ํ๋ฉด ๊ทธ๊ฒ์ 1๋ ์์ 2๋ ์ ์๊ฐ์ด ๊ฑธ๋ฆด ์๋ ์์ง๋ง, ๋น๊ทน์ด ๋ฐ์ํ์ง ์๋๋ค๋ฉด, ๊ทธ๊ฒ์ ๋ ธ๋๋ฅผ ๋์ฒดํ๊ฑฐ๋, ์ ์ด๋ ๋ ธ๋์ฒ๋ผ ํ์๋ฐ์ ๊ฒ์ด๋ค.
๋ ธ๋๋ฅผ ๊ณต๊ฒฉํ๋ ๊ฒ ์๋์ผ.๋๋ ๋ ธ๋๋ฅผ ์ข์ํ๋ค. ๋๋ ๊ทธ๊ฒ์ด ๋ง์ ์ฌ๋๋ค์ ๋์๋ค๊ณ ์๊ฐํ์ง๋ง, ๋๋ก๋ ๋ ธ๋์ ๋ฐ์ ๋ ๋งค์ฐ ๋๋ฆฌ๋ค.์๋ฅผ ๋ค์ด ๋ชจ๋ ์ง์์ ์ถ๊ฐํ๊ณ ECMAScript(javascript) ํ์ค์ ์ฌ์ฉํฉ๋๋ค.
๋ NPM์ ์๋ง์ด ๋ ์ ์์ง๋ง ์ ์ฒด์ ์ผ๋ก ๊ณต์ ํ ์์กด ๊ด๋ฆฌ๋ ์ฝ์ง ์๋ค.๋ํ ๋ ธ๋๋ฅผ ๋๋ฌ์ผ ๋๊ตฌ๋ ์ค์ ํ๊ธฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค.์๋ฅผ ๋ค์ด
webpack
๋๋eslint/prettier
.๋๋ ํญ์ ํ
ํ๋ฆฟ ํ์ผ์ ์ฌ์ฉํ๋๋ฐ, ์
๋ฐ์ดํธ๊ฐ ๋๋ฌด ๋ง์์ ๋ ์ด์ ์ ํจํ์ง ์๋ค.์, Node/Npm์ ๊ดํด์๋ ์ถฉ๋ถํฉ๋๋ค.๋ฌด์์ด ๋๋ ธ์ ๋๊น?
Deno ์น ์ฌ์ดํธ์ ๋ฐ๋ฅด๋ฉด:
A secure runtime for JavaScript and TypeScript
Okay, so what we know is that we can run Javascript and Typescript on bare metal.
๋ฌธ์๋ฅผ ๋ค์ ํ ๋ฒ ์์ธํ ์ฝ์ผ๋ฉด ์ฐ๋ฆฌ๋ ์๋์ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์๋ค.
ํ๋๋ Deno์ด๊ณ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ ํฉ๋๋ค.๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋ฌด์์ ์๋ฏธํ๋๊ฐ?
๊ธฐ๋ณธ์ ์ผ๋ก Deno๋ ์๋๋ฐ์ค์์ ์คํ๋๋ฉฐ ์์คํ ์ก์ธ์ค ๊ถํ์ด ์์ต๋๋ค.์ค์ ๋ก, Deno ํ๋ก์ ํธ์ ์ ๊ทผํ ์ ์๋ ๊ฒ์ ์ง์ ํด์ผ ํฉ๋๋ค.๊ทธ๊ฒ๋ง์ผ๋ก๋ ๊ฒฝํ์ ์์๋ธ๋ค.๋ฐ๋ผ์ ์์กด ํญ๋ชฉ์ด ํ์ผ ์์คํ ์ ์ ๊ทผํ๋ ค๊ณ ํ๋๋ฐ, ์ ๊ทผํ์ง ๋ง์์ผ ํ๋ค๋ฉด, ์ ๊ทผํ ์ ์์ต๋๋ค.
๋ ธ๋๋ C++๋ก ์์ฑ๋์ด ์์ผ๋ฉฐ, ๊ฐ๋ฐํ ๋ C++๊ฐ ์ต์ ์ ์ ํ์ ๋๋ค.๊ทธ๋๋ถํฐ ์ฐ๋ฆฌ๋ Rust์ ๊ฐ์ ๋ ๊ฐ๋จํ๊ณ ์์ ํ ์ธ์ด๋ฅผ ์ฌ์ฉํ๊ธฐ ์์ํ๋ค.์ด๊ฒ์ด ๋ฐ๋ก ๋๋ ธ๊ฐ ๋ น์ผ๋ก ์ด ์ด์ ๋ค.Rust๋ Webassambly๋ฅผ ์ง์ํ๋ ์ ๊ธฐํ ์ธ์ด๋ค.๊ธฐ๋ณธ์ ์ผ๋ก ๊ทธ๊ฒ๋ ์์ ํ๋ค.
๋ค๋ฅธ ๋ฉ์ง ๊ฒ๋ค์ ๋๋ ธ๊ฐ ํ ์คํธ ์์์ ๋ํ Typescript ์ง์์ ๋ง๋ถ์ฌ์ ํ๋์ ํ์ผ์ ๋ฌถ์ ์ ์๊ณ ํ ์คํธ์ ์ฝ๋ ํ์์ ํด๊ฒฐ ๋ฐฉ์์ด ๋ด์ฅ๋์ด ์๋ค๋ ๊ฒ์ด๋ค.๊ทธ๊ฒ์ ๋ด์ฅ๋ ํจํค์ง ๊ด๋ฆฌ์๋ ์๋ค.๊ทธ๋์ ๋นจ๋ฆฌ ์์ํ๊ฑฐ๋, ๋๋ฌด ๋ง์ ๊ฒ์ ํ์๋ก ํ์ง ์๋ ๊ฒ์ ์๋ํด ๋ณด์ธ์!๋๋ ธ๋ฐ์ ์์ด.
๋ ๋ง์ ์ฐจ์ด๋ฅผ ์๊ณ ์ถ๋ค๋ฉด ๊ทธ๊ฒ๋ค์ ์ฝ์ ์ ์๋คhere
ํ ํ๋ฆฟ ์์ฑ
Deno๋ฅผ ์ฝ๊ฒ ์ค์นํ ์ ์์ต๋๋ค.
#Unix
curl -fsSL https://deno.land/x/install/install.sh | sh
์ด์ deno
๋ช
๋ น์ ์ฌ์ฉํ ์ ์์ ๊ฒ์
๋๋ค.์ผ๋ฐ์ ์ผ๋ก Unix์ ์ ์ฌํ ์ด์ ์ฒด์ ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.WSL์ Windows๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.๋ํ
git
์ make
๋ ์ค์นํด์ผ ํฉ๋๋ค.๋ค์๊ณผ ๊ฐ์ด ํ ํ๋ฆฟ ์ฝ๋๋ฅผ ๋ณต์ ํ ์ ์์ต๋๋ค.
git clone https://github.com/lampewebdev/deno-boilerplate
์ด ๊ฐ์ข์์ VS ์ฝ๋๋ฅผ ์ฌ์ฉํ ํ
๋ ๋ค์ด๋ก๋ํด์ผ ํฉ๋๋คDeno VS Code ExtensionVS ์ฝ๋์์ ํญ๋ชฉ์ ์ด๋ฉด ๋ค์ ํ์ผ์ด ํ์๋ฉ๋๋ค.
๊ฐ์ฅ ์ค์ํ ์๋ฅ๋ฅผ ์ดํดํด ๋ด ์๋ค.
.vscode
ํด๋์๋ Deno๋ฅผ ํ์ฑํํด์ผ ํ๋ settings.json
ํ์ผ์ด ์์ต๋๋ค.{
"deno.enable": true
}
์ฐ๋ฆฌ๊ฐ ์ดํด๋ด์ผ ํ ๋ค์ ํ์ผ์ makefile
์ด๋ค.makefile
์์๋ ๋ค์ ๋ช
๋ น์ ๋ณผ ์ ์์ต๋๋ค.make run
: ์คํindex.ts
make test
: ํ
์คํธ ์คํmake format
: ๋ชจ๋ ํ์ผ ํฌ๋งทmake debug
: index.ts
๋ถํฐ ๋๋ฒ๊ฑฐ ์คํmake bundle
: ํญ๋ชฉ์ build/index
์ ๋จ์ผ ํ์ผ์ ๋ฒ๋ค--watch
๋ก๊ณ ๊ฐ ์๊ธฐ๋ฅผ ์ํฉ๋๋ค. ํ์ผ์ด ๋ฐ๋๋ฉด ์ฝ๋๋ฅผ ๋ค์ ์คํํฉ๋๋ค.๋ ๋ค๋ฅธ ํฅ๋ฏธ๋ก์ด ๋ฌธ๊ฑด์
deps.ts
๋ฌธ๊ฑด์ด๋ค.์ด๊ฒ์ ์ผ๋ฐ์ ์ธ Typescript ํ์ผ์ผ ๋ฟ์ด์ง๋ง, ๊ด๋ก์ ๋ฐ๋ฅด๋ฉด, ์ด ํ์ผ์ ์ฌ์ฉ์๊ฐ ์ฌ์ฉํ๊ณ ์๋ ์ธ๋ถ ๋ชจ๋/ํจํค์ง๋ฅผ ๊ตฌ์ฑํ๋ ๊ณณ์
๋๋ค.import * as Log from "https://deno.land/std/log/mod.ts";
export {
Log,
};
์ ํ๋ฒํธdeps.ts
์
๋๋ค.๋์ ์ํฌ์ฒ๋ผ ์๊ฐํด๋ผ.json.๊ทธ๊ฒ์ ์ ์ฅ ์์กด ํญ๋ชฉ์ ์ค์ฌ ์์น๋ค.ํ ๊ฐ์ง ํฅ๋ฏธ๋ก์ด ๊ฒ์ ๊ฐ๋ฐ ์์กดํญ์ด ์ด๋๋ก ๊ฐ์ผ ํ๋์ง ๋ณด๋ ๊ฒ์ด๋ค.๋๋ ๋๊ตฐ๊ฐ๊ฐ ์ด๋ ๊ฒ ํ๋ ๊ฒ์ ๋ณธ ์ ์ด ์๋ค
dev-deps.ts
.๋๋ deps.<ENV>.ts
์ ๋ ์ข์ํ๋ค.์๋ฅผ ๋ค์ด deps.prod.ts
,deps.dev.ts
๋ฑ๋ฑ.ํ์ฌ
configs.ts
๋ ๋น์ด ์๋ค.๋๋ dotenv
ํ์ผ์ ์ข์ํ์ง๋ง, ์ฐ๋ฆฌ๋ ๋๋
ธ์์ ๋ฌด์์ด ์ด๊ธธ์ง ๋ณผ ๊ฒ์ด๋ค.๊ทธ ๋ค์
index.ts
.์ด๊ฒ์ ์น ๊ฐ๋ฐ์๋ก์ ์ ๋ index
์ ์ข์ํ์ง๋ง ์ด๋ฆ์ ๋ฐ๊ฟ ์๋ ์์ต๋๋ค.๋๋จธ์ง๋ ๋ชจ๋ ๋งค์ฐ ํ์ค์ ์ธ ๋ฌผ๊ฑด์ด๋ค.
์ฐ๋ฆฌ๋
main.ts
๋ฌผ๊ฑด์ ์คํํ๊ธฐ ์์ํ ์ ์๊ณ , Deno์์ ์ด๋ป๊ฒ ๊ฐ์ฅ ๊ฐ๋จํlogger
์ ์คํํ ์ ์๋์ง์ ์๋ ์๋ค.ํ ์คํธ์ ๋ฌธ์๋ฅผ ์ถ๊ฐํ๊ณ ์ถ์ต๋๋ค.๋ ๋ค ๋ด์ฅ๋ Deno์ด๋ฉฐ ์ถ๊ฐ ๋๊ตฌ๊ฐ ํ์ํ์ง ์์ต๋๋ค.
๋์์ด ํ์ํ์๋ฉด ์ ์๊ฒ ์ฐ๋ฝํ๊ฑฐ๋ GitHub Repo์ ์ง๋ฌธ์ด๋ ์์ฒญ์ ๋ง๋์ญ์์ค
๋ ๋ง์ ๋๋ ธ ์ฝํ ์ธ ๋ฅผ ๋ณด๊ณ ์ถ์ผ์ธ์?์๋ ค์ฃผ์ธ์!์ ๋ ๋๋ ธ์ ๋ํ ๋๊ธ๊ณผ ๋ด์ฉ์ ๋ ๋ง์ด ๋ฐํํ๊ณ ์ถ์ด์!
๐์ธ์ฌํ๋คMedium | |
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐ฆ๋ฆผํ์ข ๊ตํํ๋ฌ ๊ฐ๊น์?๋ณด์: Deno๋ฅผ ์ํ ํ ํ๋ฆฟ์ ๋ง๋ค์์ต๋๋ค.), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://dev.to/lampewebdev/deno-the-node-replacement-bonus-i-created-a-boilerplate-for-deno-2g25ํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค