December 28, 2020
V8 ์์ง์ผ๋ก ๋น๋๋ Javascript ๋ฐํ์ ์ ๋๋ค ๋ผ๊ณ ์ ์ํ๊ณ ์๋ค.
์ฌ๊ธฐ์ V8 ์ด ์๋ฏธํ๋ ๊ฒ์ ์์ง ์ด๋ผ๊ณ ํ๋ ๊ฒ ๊ฐ์๋ฐ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๊ธฐ๊ณ (์ปดํจํฐ) ๊ฐ ์์๋ค์ ์ ์๊ฒ ์ปดํ์ผ ํด์ฃผ๋ ์ญํ ์ ํ๋ค.
ํ ์ค๋ก ๋ค์ ์ ์ํ๋ฉด,
์ฆ, ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๊ธฐ๊ณ์ด๋ก ์ปดํ์ผ ํด์ฃผ๋ ์์ง์ผ๋ก ๋น๋ ๋ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๊ตฌ๋์ค์ธ ํ๊ฒฝ์ด๋ค.
์ด๋ฒคํธ ๊ธฐ๋ฐ ๋ฐ ๋ ผ๋ธ๋กํน I/O ๋ชจ๋ธ ์ด๋ผ๊ณ ๋ ํ๋๋ฐ, ์ฌ๊ธฐ์ ์ด๋ฒคํธ๋
๐์ด๋ฒคํธ - ์ ์ ์ ๋ฒํผ ํด๋ฆญ์ด๋ ๋คํธ์ํฌ์ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๋ ๊ฒ ๋ฑ
๐๋ธ๋กํน - ๋ค์ ํจ์์ ์คํ์ด ํ์ฌ ํจ์์ ์ข ๋ฃ ์ดํ์ ์ด๋ฃจ์ด์ง๋ ๊ฒ. (๋๊ธฐ)
๐๋ ผ๋ธ๋กํน - ๋ค์ ํจ์์ ์คํ์ด ํ์ฌ ํจ์์ ์ข ๋ฃ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์์. (๋น๋๊ธฐ)
์ ๋ฒ์ ๋ฐฐ์ ๋ ์ปคํผ ์ฃผ๋ฌธ๋ฐ๋ ๊ณผ์ (์ฃผ๋ฌธ๋ฐ๊ธฐ - ์ท ์ถ์ถ - ์ปคํผ ์ ์กฐ - ์ ๋ฌ - ์ ์ฃผ๋ฌธ๋ฐ๊ธฐ) ์ ๋๊ธฐ, ๋น๋๊ธฐ๋ก ๊ทธ๋ฆผ์ ๊ทธ๋ ค ๋ณผ ์ ์์๋ค.
๐I/O ๋ชจ๋ธ - ์ธํ์ ์ฃผ๋ฉด ์์ํ์ ์ฃผ๋ ๋ชจ๋ธ
์ฆ, ์ด๋ฒคํธ ๊ธฐ๋ฐ ๋ฐ ๋ ผ๋ธ๋กํน I/O ๋ชจ๋ธ ์ ์๋ฏธ๋,
์ ์ ์ ํด๋ฆญ์ด๋ ๋คํธ์ํฌ์ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๋ ์ด๋ฒคํธ๊ฐ ๋ ผ๋ธ๋กํน์ผ๋ก ์ด๋ฃจ์ด์ง๋ Input Output model ์ ์๋ฏธ! ํ๋ค!
๊ทธ๋์ Node.js ๋ js ๋ฅผ ์ปดํ์ผ ํด์ ๊ตฌ๋ํ๊ณ ์ด๋ฒคํธ ๊ธฐ๋ฐ์ ๋ ผ๋ธ๋กํน ๋ชจ๋ธ๋ก ์๋๊ฐ ๋น ๋ฅด๋ค.
๋ ธ๋๋ฅผ ์ค์น๋ฅผ ํ๋ค๋ฉด ์ด์ ๋ค๋ฅธ ๊ณณ์์ ๋ฐ์์ค์ง ์์๋ ์ธ ์ ์๋ ์ฝ์ด ๋ชจ๋๋ค์ด ์๋ค.
node ์ ํจ๊ป ๋ฒ๋ค๋ง๋์ด ์๋ ๋ชจ๋์ ์๋ฏธํ๋ฉฐ, require(โโ) ๋ฐฉ์์ผ๋ก ์ฌ์ฉ ํ ์ ์๋ค.
์์ - fs, http, url, path ๋ฑ์ ๋ชจ๋์, node.js ๊ฐ ์ค์น๋์๋ค๋ฉด package manager ์์ ๋ณ๋ ์ค์น๊ฐ ํ์ ์๋ค.
์ ์ด http ๋ชจ๋์ ์ฌ์ฉํด์ ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋๋ฐ ์ฐ๋๊ตฌ๋.
์ฆ, Node.js๊ฐ HTTP(Hypter Text Transfer Protocol)๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋๋ก ํ๋ ๋นํธ์ธ ๋ชจ๋ ์ด๋ฉด์
HTTP ๋ชจ๋์ ์๋ฒ ํฌํธ๋ฅผ ์์๋ณด๊ณ ํด๋ผ์ด์ธํธ์๊ฒ response๋ฅผ ์ฃผ๋ HTTP ์๋ฒ๋ฅผ ๋ง๋ค ์ ์๋ค.
์ธ๊ณ์์ ๊ฐ์ฅ ํฐ ์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ํ๊ณ ์ค ํ๋. (Node Package Manager)
๋๋ Yarn ๋ ๋์์ ์ค์นํด์ ์ฌ์ฉํ๊ณ ์๋ค.
์๋ก Jquery source ๋ฅผ script ์ ๋ฐ์๋๊ณ ์ฌ์ฉ ํ๋ค๋ฉด, ์ด์ ๋ npm install ๋ก ์ค์นํด์ ์ฌ์ฉ์ด ๊ฐ๋ฅํด ์ก๋ค.
์ค์น๊ฐ ๋๋ฉด package.json ์ dependency ์ ๋ด๊ธฐ๊ฒ ๋๋ค.
start, build, test ๊ฐ์๊ฒ ์ค์ ๋์ด ์๋ค?: cli (ํฐ๋ฏธ๋ ๋ฑ) ์์ ํด๋น ์ฝ๋๋ฅผ ์คํ์ํจ๋ค.
production ๊ณผ ๊ด๊ณ ์๋ ๊ฐ๋ฐ๋ง์ ์ํ dependency ์ด๋ค.
yarn add @babel/core โdev ๋๋ npm install @babel/core โsave-dev ์ด๋ฐ ์์ผ๋ก -dev ์ฆ, ๊ฐ๋ฐ์ฉ๋๋ก ์ฌ์ฉํ๊ฒ ๋ค ํด์ โdev ์ต์ ์ ์ค์ ๋ฑ๋กํ๋ค.
์ง์ production ๊ณผ ๊ด๋ จ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ค์ด ๋ด๊ฒจ ์๋ค.
์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์น ํ ๋๋ yarn add react ํน์ npm install โsave react (npm ์์๋ โsave ์ต์ ์ ์ค์ผ ํ๋ค)
์ฐ๋ฆฌ๊ฐ ํํ ํ๋ npm install ์ package.json ์ ์๋ dependency ๋ฅผ ๋ฐํ์ผ๋ก ์ค์น๊ฐ ๋๋ค.
๊ทธ๋ฐ๋ฐ ๋ง์ฝ dependency ์ ๋ฑ๋ก๋์ด ์์ง ์๋ค๋ฉด, ์ฝ๋์์๋ ํด๋น ๋ชจ๋์ ์ฐ๊ณ ์์ง๋ง npm install ๋ก๋ ์ค์น๋์ง ์๋๋ค.
๊ทธ๋์ ๋ชจ๋์ด ์๋ค๋ ์๋ฌ๊ฐ ๋จ๊ณ , ํ์๊ฐ์ ๋ถํ๊ฐ ์นํธ๊ฒ ๋๋ค.
package.json ์ ์ ์๋์ด ์๋ค. ๋ณดํต node index.js ๋ผ ์ ์๋์ด ์๋ค.
์๋ฒ๋ฅผ ์คํ์ํจ๋ค ํ๋ฉด ํ๋ฒ ์ผ์ง๊ณ ์ ์ฅ์ฌํญ์ ๋ฐ์ํ์ง๋ ๋ชปํด์ ๊ป๋ค๊ฐ ์ผ์ผ ํ๋ ๋จ์ ์ด ์๋ค.
nodemon ์ ๋งค๋ฒ ์๋ฒ๋ฅผ ์ผ๊ณ ๋์ด ์์ด ํ ๋ฒ cli ์ ์๋ฒ๋ฅผ ์ผ๋์ผ๋ฉด, ์ฐ๋ฆฌ์ ์์ ์ฌํญ์ ์ฆ๊ฐ์ ์ผ๋ก ๋ฐ์์์ผ ์ค๋ค.