Node.js๋ Chrome์ V8 JavaScript ์์ง์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์๋ฒ ์ฌ์ด๋ JavaScript ๋ฐํ์์
๋๋ค.
์ฃผ์ ํน์ง์ ๋น๋๊ธฐ ์ด๋ฒคํธ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ฉฐ, ๋น ๋ฅธ ์ฑ๋ฅ์ ์๋ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ณ ์ฑ๋ฅ์ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ ์ ์์ต๋๋ค. Node.js๋ JavaScript๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฒ ์ธก ๊ฐ๋ฐ์ ํ ์ ์๊ฒ ํด ์ฃผ๋ฉฐ, ์ด๋ฅผ ํตํด ํ๋ก ํธ์๋์ ๋ฐฑ์๋ ๊ฐ๋ฐ ๋ชจ๋์ JavaScript๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค.

Node.js๋ฅผ ์ค์นํ๋ ๋ฐฉ๋ฒ์ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค:
1. Node.js ๊ณต์ ์น์ฌ์ดํธ(https://nodejs.org/)์ ์ ์ํฉ๋๋ค.
2. LTS ๋ฒ์ (Long Term Support)์ ๋ค์ด๋ก๋ํฉ๋๋ค.
3. ๋ค์ด๋ก๋ํ ํ์ผ์ ์คํํ์ฌ ์ค์นํฉ๋๋ค.
4. ์ค์น ํ, ํฐ๋ฏธ๋์ ์ด๊ณ ์๋ ๋ช
๋ น์ด๋ก ์ค์น ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค:
node -v
npm -v
Node.js์ npm(ํจํค์ง ๊ด๋ฆฌ์)์ ๋ฒ์ ์ ๋ณด๊ฐ ์ถ๋ ฅ๋๋ฉด ์ค์น๊ฐ ์๋ฃ๋ ๊ฒ์ ๋๋ค.
npm์ Node.js์ ๊ณต์ ํจํค์ง ๊ด๋ฆฌ์๋ก, ๋ค์ํ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ชจ๋์ ์ฝ๊ฒ ์ค์นํ๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.

npm ์ด๊ธฐํ:
ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ์์ npm init ๋ช
๋ น์ด๋ฅผ ์คํํ๋ฉด, package.json ํ์ผ์ด ์์ฑ๋ฉ๋๋ค. ์ด ํ์ผ์ ํ๋ก์ ํธ์ ์์กด์ฑ ๋ฐ ์ค์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ต๋๋ค.

ํจํค์ง ์ค์น:
์๋ฅผ ๋ค์ด, express๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๊ณ ์ถ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์คํํฉ๋๋ค:
npm install express
์ ์ญ ํจํค์ง ์ค์น:
๊ธ๋ก๋ฒํ๊ฒ ์ค์นํ์ฌ ์์คํ
์ด๋์๋ ์ฌ์ฉํ ์ ์๊ฒ ํ ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด nodemon์ ์ ์ญ์ผ๋ก ์ค์นํ๋ ค๋ฉด ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค:
npm install -g nodemon
Node.js์์๋ ๋ชจ๋ํ๋ฅผ ํตํด ์ฝ๋๋ฅผ ๋๋๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.


require์ import ๐Node.js์์ ๋ชจ๋ ์์คํ
์ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ๊ณผ ๊ตฌ์กฐํ๋ฅผ ๋์์ค๋๋ค. ์ด๋ฅผ ์ํด require์ import๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ๋ชจ๋์ ๊ฐ์ ธ์ค๊ฑฐ๋ ๋ด๋ณด๋ผ ์ ์์ต๋๋ค. ์ด ๋ ๊ฐ์ง๋ ๋น์ทํ ์ญํ ์ ํ์ง๋ง, ์ฌ์ฉ ๋ฐฉ๋ฒ๊ณผ ๋์ ๋ฐฉ์์ ์ฐจ์ด๊ฐ ์์ต๋๋ค.

require (CommonJS ๋ชจ๋ ์์คํ
) ๐require๋ Node.js์์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ชจ๋ ์์คํ
์
๋๋ค. Node.js๋ ๊ธฐ๋ณธ์ ์ผ๋ก CommonJS ๋ชจ๋ ์์คํ
์ ์ฌ์ฉํฉ๋๋ค.
require๋ ๋ชจ๋์ ๋ถ๋ฌ์ฌ ๋ ๊ทธ ๋ชจ๋์ด ์์ ํ ๋ก๋๋ ๋๊น์ง ์ฝ๋ ์คํ์ ๋ฉ์ถฅ๋๋ค.require๋ ์๋ ๊ฒฝ๋ก(./, ../) ๋๋ ์ ๋ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.๋ชจ๋ ๊ฐ์ ธ์ค๊ธฐ:
const fs = require('fs'); // ํ์ผ ์์คํ
๋ชจ๋const greet = require('./greet'); // greet.js ํ์ผ์ ๊ฐ์ ธ์ค๊ธฐ๋ชจ๋ ๋ด๋ณด๋ด๊ธฐ:
module.exports๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ํ์ผ์์ ์ฌ์ฉํ ์ ์๋๋ก ๊ธฐ๋ฅ์ ๋ด๋ณด๋
๋๋ค.
// greet.js
module.exports = function() {
console.log('Hello, Node.js!');
};
// main.js
const greet = require('./greet');
greet();
import (ESM ๋ชจ๋ ์์คํ
) ๐ฆimport๋ ES6(ECMAScript 2015)์์ ๋์
๋ ์ต์ ๋ชจ๋ ์์คํ
์ผ๋ก, ์ต์ JavaScript์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ฐฉ๋ฒ์
๋๋ค. Node.js๋ ECMAScript ๋ชจ๋(ESM)์ ์ง์ํ๊ณ ์์ผ๋ฉฐ, ES6 import/export ๊ตฌ๋ฌธ์ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ๊ณผ Node.js ๋ชจ๋์์ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
import๋ ๋ชจ๋์ ๋น๋๊ธฐ์ ์ผ๋ก ๋ก๋ํ ์ ์์ต๋๋ค.import๋ฅผ ์ฌ์ฉํ ๋๋ .js์ ๊ฐ์ ํ์ผ ํ์ฅ์๋ฅผ ๋ช
์ํด์ผ ํฉ๋๋ค.import๋ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์์๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ, Node.js์์๋ ESM์ ์ง์ํฉ๋๋ค.๋ชจ๋ ๊ฐ์ ธ์ค๊ธฐ:
์ธ๋ถ ๋ชจ๋์ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ
import fs from 'fs'; // ํ์ผ ์์คํ
๋ชจ๋
๋ด๋ถ ๋ชจ๋(ํ์ผ)์ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ
import greet from './greet.js'; // greet.js ํ์ผ์ ๊ฐ์ ธ์ค๊ธฐ
๋ชจ๋ ๋ด๋ณด๋ด๊ธฐ:
export ๋๋ export default๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋์ ๋ด๋ณด๋
๋๋ค.
Named Export: ์ฌ๋ฌ ๊ฐ์ ์์๋ฅผ ๋ด๋ณด๋ผ ๋
// greet.js
export function greet() {
console.log('Hello, Node.js!');
}
export function farewell() {
console.log('Goodbye, Node.js!');
}
// main.js
import { greet, farewell } from './greet.js';
greet();
farewell();
Default Export: ํ๋์ ๊ธฐ๋ณธ์ ์ธ ์์๋ง ๋ด๋ณด๋ผ ๋
// greet.js
export default function() {
console.log('Hello, Node.js!');
}
// main.js
import greet from './greet.js';
greet();
| ํน์ฑ | require (CommonJS) | import (ESM) |
|---|---|---|
| ๋๊ธฐ/๋น๋๊ธฐ | ๋๊ธฐ์ (Synchronous) | ๋น๋๊ธฐ์ (Asynchronous) |
| ์ฌ์ฉ ์์น | Node.js ์ ์ฉ | ๋ธ๋ผ์ฐ์ ๋ฐ Node.js์์ ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅ |
| ๊ตฌ๋ฌธ | const something = require('module') | import something from 'module' |
| ํ์ผ ํ์ฅ์ | ํ์ฅ์ ์๋ต ๊ฐ๋ฅ (require('./file')) | ํ์ฅ์ ๋ช
์ ํ์ (import './file.js') |
| ๋ชจ๋ ๋ด๋ณด๋ด๊ธฐ | module.exports = ... | export / export default |
| ๋์ ๋ฐฉ์ | ๋์ ์ผ๋ก ๋ก๋ | ์ ์ ์ผ๋ก ๋ก๋ |
import ์ฌ์ฉํ๊ธฐ โ๏ธNode.js์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก CommonJS ๋ชจ๋ ์์คํ
์ ์ฌ์ฉํ์ง๋ง, ES ๋ชจ๋์ ์ฌ์ฉํ๊ธฐ ์ํด package.json์์ "type": "module"์ ์ค์ ํด์ผ ํฉ๋๋ค.
{
"type": "module"
}
์ด๋ ๊ฒ ์ค์ ํ๋ฉด, import/export ๊ตฌ๋ฌธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Node.js์๋ ๋ค์ํ ๋ด์ฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ์กด์ฌํฉ๋๋ค. ๊ทธ ์ค ๋ช ๊ฐ์ง ์ ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:

Express: ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ์น ์๋ฒ๋ฅผ ๋ง๋๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
npm install express
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(3000, () => {
console.log('Server running on port 3000');
});
Mongoose: MongoDB์ ์ฐ๊ฒฐํ๋ ๋ฐ ์ ์ฉํ ODM(Object Data Modeling) ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
npm install mongoose
Axios: HTTP ์์ฒญ์ ๋ณด๋ด๋ ๋ฐ ์ฌ์ฉ๋๋ ์ธ๊ธฐ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
npm install axios
์ด์ Node.js์ ๊ธฐ๋ณธ ๊ฐ๋ ๊ณผ ์ค์น ๋ฐ ์ฌ์ฉ๋ฒ์ ๋ฐฐ์ ์ต๋๋ค. ์ค์ต์ ํตํด ๋์ฑ ์ต์ํด์ง์ธ์! ๐