๋ค์์ ๊ณต์๋ฌธ์์์ ์๊ฐํ node.js์ด๋ค.
Node.js๋ Chrome V8 JavaScript ์์ง์ผ๋ก ๋น๋๋ JavaScript ๋ฐํ์์ด๋ค.
์ฌ๊ธฐ์ ๋ฐํ์์ด๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ๊ตฌ๋๋๋ ํ๊ฒฝ์ ๋งํ๋ค. Javascript์ ๋ฐํ์์ Web Browser์ Node.js๋ก ๊ตฌ์ฑ๋์ด์๋ค.
Node.js๋ ๋น๋๊ธฐ ์ด๋ฒคํธ ๊ธฐ๋ฐ(event-driven: ์ด๋ฒคํธ ํธ์ถ์ ๋ฐ๋ผ ๋์ํ๋ค๋ ๋ป), Non-Blocking I/O ๋ชจ๋ธ์ ์ฌ์ฉํด ๊ฐ๋ณ๊ณ ํจ์จ์ ์ด๋ค. ๋๋ฌธ์ ๋น๋๊ธฐ์ ํ๋ก๊ทธ๋๋ฐ์ด ๊ฐ๋ฅํด์ I/O ๋ถํ๊ฐ ์ฌํ ๋๊ท๋ชจ ์๋น์ค๋ฅผ ๊ฐ๋ฐํ๊ธฐ ์ ํฉํ๋ค.
์ ๋ฆฌ: Node.js๋ ๋ฐฑ์ค๋ ๋๋ ์น ์๋ฒ๊ฐ ์๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ ์คํ ํ๊ฒฝ์ด๋ค!
์์ ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์์ด ๋ธ๋ผ์ฐ์ ๋ฐ์ ์กด์ฌํ์ง ์์๋๋ฐ, ๊ทธ๋ ๋ค๋ฉด Node.js๋ ์ด๋ ํ ํ์์ฑ์ ์ํด ์๊ธฐ๊ฒ ๋ ๊ฒ์ผ๊น?!
https://www.youtube.com/watch?v=EeYvFl7li9E
๋
ธ๋๋ 2009๋
์ ์์ ์ Ryan Dhal์ด ๊ณ ์ํด ๋ธ ์ธ์ด์ด๋ค.
JSP๋ PHP ์ธ์ด๋ก ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๋ฉด ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ์ํ์น์ ๊ฐ์ ์น ์๋ฒ์์ ๋์ํ๋ค. ์ํ์น๋ ์ฐ๋ ๋๋ฅผ ์ด์ฉํ์ฌ ๋ค์๊ณผ ๊ฐ์ด ๋น๋๊ธฐ๋ฅผ ์ฒ๋ฆฌํ๋ค.
์ํ์น๋ ์ฐ๊ฒฐ๋ง๋ค ์ฐ๋ ๋๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ๋์ ์ฐ๊ฒฐ์ด ๋ง์์ง์๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์์ฒญ ๋ง์ด ์ฌ์ฉํ ์ ๋ฐ์ ์๋ค. ๋ฐ๋ผ์ ๋ ๋ง์ ์๋ฒ๋ฅผ ์ถ๊ฐํด์ผํ๊ณ , ์ด๋ ๋จ์ ์๋ฒ ๋น์ฉ ๋ฟ๋ง ์๋๋ผ ์ด์ ๋ฑ์ ๋ฐ์ํ๋ ํธ๋ํฝ ๋น์ฉ, ์ธ๊ฑด๋น ๋ฑ ์ฌ๋ฌ ๋น์ฉ์ ๋ํ๋ ๋ฌธ์ ๋ฅผ ๋ฐ์์ํจ๋ค. ์ถ๊ฐ๋ก, ์ฌ๋ฌ ๋์ ์๋ฒ๋ฅผ ์ฌ์ฉํ๋๋ผ๋ ์ฌ์ฉ์ ์ ์ฅ์์๋ ๋ง์น ํ๋์ ์๋ฒ์ ์ ์ํ๋ ๊ฒ๊ณผ ๊ฐ์ ํจ๊ณผ๋ฅผ ์ฃผ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ์๋ฒ๋ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐํํด์ผ ํ๋ค๋ ๋ฌธ์ ๋ฅผ ๋ฐ์์ํค๊ธฐ๋ ํ๋ค.
๋ฐ๋ก ๋ ธ๋๊ฐ, ์ด๋ฐ ํ์ค์ ์ธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅํ๋ค.
npm์ผ๋ก ์ค์นํ๋ ๋ชจ๋ CLI(Babel, webpack, ๊ฑธํ, CRA, Vue-CLI ๋ฑ๋ฑ)๋ Node.js๋ฅผ ์ด์ฉํ๋ค๊ณ ๋ณด๋ฉด ๋๋ค.
Node.js์ ํจํค์ง ์ํ๊ณ์ธ NPM(Node Packaged Manager)์ ์ธ๊ณ์์ ๊ฐ์ฅ ๊ท๋ชจ๊ฐ ํฐ ์คํ ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ํ๊ณ('the world's largest software registry')์ด๋ค. npm์ website, CLI, registry 3๊ฐ์ง ์ปดํฌ๋ํธ๋ก ๊ตฌ์ฑ๋๋ค.
์ฐ๋ฆฌ๋ ์ฑ์คํ ์ด๋ ๊ตฌ๊ธ ํ๋ ์ด์คํ ์ด์ ๋ง๋ ์ฑ ๋ค์ ๋ฑ๋กํ ์ ์๊ณ , ์ฑ์ ์ค์นํด ์ด์ฉํ ์๋ ์๋ค. ์ด์ ๋น์ทํ ๊ฐ๋ ์ผ๋ก npm์๋ Node.js๋ฅผ ์ด์ฉํ๋ ๊ฐ์ข ์ฝ๋ ํจํค์ง(์คํ์์ค)๋ค์ด ๋ชจ์ฌ์๊ณ , ์ฐ๋ฆฌ๋ ๊ทธ ํจํค์ง๋ฅผ ๋ค์ด๋ก๋ ๋ฐ์ ์ฌ์ฉํ ์ ์๋ค.
์๋ฅผ๋ค์ด ๋ฆฌ์กํธ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ค๊ฐ ์ ํ๋ธ ์์์ ๋ณด์ฌ์ฃผ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ ์ถ๋ค๊ณ ํ์. npm ์ react-youtube๋ฅผ ๊ฒ์ํ๋ฉด
๋ค๋ฅธ ์ฌ๋๋ค์ด ๋ฑ๋กํ ๊ด๋ จ ํจํค์ง๋ค์ ํ์ธํ ์ ์๊ณ , ์ด๋ฅผ ์ด์ฉํ๊ธฐ ์ํด์๋ ํ๋ก์ ํธ ํฐ๋ฏธ๋์์ cli๋ก ์ค์น, ์ด์ฉํ ์ ์๋ค.
์๋๋ ์ฃผ๊ฐ ๋ค์ด๋ก๋ ์์ด๋ค. ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ผ๋ง๋ ๋ง์ ์ฌ๋๋ค์ด ์ฌ์ฉํ๊ณ ์๋์ง ํ์ธํจ์ผ๋ก์จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์ ์ฑ์ ํ๋จํ ์ ์๋ค.
yarn ๋ํ npm๊ณผ ๊ฐ์ ํจํค์ง ๋งค๋์ ์ด๋ค. npm๊ณผ ๊ฐ์ด package.json์ ์์กด์ฑ ์ ๋ณด๋ฅผ ๊ธฐ๋กํ๋ค.
(npm๋ณด๋ค quickly, securely, and reliably๋ผ๊ณ ํ์ง๋ง ์์ฆ์ npm์ด๋ yarn์ด๋ ๋น๋ฑ๋น๋ฑํ๋ค๊ณ ํจ)
package.json์ ํ๋ก์ ํธ ์ ๋ณด์ ์์กด์ฑ(dependencies)์ ๊ด๋ฆฌํ๋ ๋ฌธ์์ด๊ณ , ํ์ฅ์์ธ jsonํฌ๋งท์ผ๋ก ์์ฑํด์ผ ํ๋ค.
package.json ๊ตฌ์ฑ
์ด๋ฏธ ์์ฑ๋ package.json๋ฌธ์๋ ์ฐ๋ฆฌ๊ฐ ์ด๋ค ํจํค์ง(์คํ์์ค)๋ฅผ ์ฌ์ฉํ๋์ง, ์ด๋ค ๋ฒ์ ์ ์ฌ์ฉํ๋์ง ๋ฑ์ ๊ธฐ๋กํจ์ผ๋ก์จ ์ด๋ ๊ณณ์์๋ ๋์ผํ ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ตฌ์ถํ ์ ์๊ฒ ํด์ค๋ค.
(ex) ์ฐ๋ฆฌ ํ๋ก์ ํธ๋ ํ์ด์ค๋ถ ๋ก๊ทธ์ธ 1.4.5๋ฒ์ , ๊ตฌ๊ธ ๋ก๊ทธ์ธ 1.5.2๋ฒ์ , ๋ฆฌ์กํธ ์ฟ ํค..๋ฑ๋ฑ์ ์ฌ์ฉํด์~! ์ด๋ฐ ์ ๋ณด๋ค! ํ๋ก์ ํธ์์ npm install ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด ์ ์๋ ์์กด์ฑ ๋ชจ๋๋ค์ด ์๋์ผ๋ก node_modulesํด๋์ ์ค์น๋๋ค. )
โsave-dev/-D
์ ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ ๋จ๊ณ์์๋ง ์ฌ์ฉํ๋ ์์กด์ฑ ๋ชจ๋์ ์ ์ํ๊ณ ์ค์นํ๋ค.
ex) typescript๋ eslint ๋ฑ์ ๊ฐ๋ฐ ๋จ๊ณ์์๋ง ์ฌ์ฉ๋๋ฏ๋ก -D๋ก ์ค์นํ๋ค
"eslint": "^7.30.0",
"typescript": "^3.7.2"
Node.js๋?
https://perfectacle.github.io/2017/06/18/what-is-node-js/
https://edu.goorm.io/learn/lecture/557/ํ-๋์-๋๋ด๋-node-js/lesson/21762/node-js-๋
npm
์ด๋ฒคํธ ๋ฃจํ?