๐ ๋ชฉ์ฐจ
Node.js๋ ์๋ฒ ์ฌ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ JavaScript๋ก ์์ฑํ ์ ์๋ ๋ฐํ์ ํ๊ฒฝ์ด์์. V8 ์์ง์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ๋๋์ด ๋น ๋ฅด๊ณ , ๋น๋๊ธฐ I/O๋ฅผ ์ง์ํ์ฌ ๋์ ์ฒ๋ฆฌ ์ฑ๋ฅ์ ์๋ํด์.
์น ๊ฐ๋ฐ๋ฟ ์๋๋ผ ์ค์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ , ๋ง์ดํฌ๋ก์๋น์ค, IoT ํ๋ก์ ํธ์๋ ๋๋ฆฌ ์ฌ์ฉ๋๋ฉฐ, ํนํ Express์ ๊ฐ์ ํ๋ ์์ํฌ์ ํจ๊ป ๊ฐ๋ ฅํ ์น ์๋ฒ๋ฅผ ๋ง๋ค ์ ์์ด์. ์ด๋ฒ ๊ธ์์๋ Node.js์ ์ฃผ์ ํ์ฉ ๋ฐฉ๋ฒ์ ๋จ๊ณ๋ณ๋ก ์์๋ณผ๊ฒ์! ๐
Node.js๋? ๐ ๏ธ
Node.js๋ Chrome V8 JavaScript ์์ง์ผ๋ก ๊ตฌ๋๋๋ ์๋ฒ ์ฌ์ด๋ ๋ฐํ์์ด์์. ์ฑ๊ธ ์ค๋ ๋ ๊ธฐ๋ฐ์ผ๋ก ๋น๋๊ธฐ ์์ ์ ์ฒ๋ฆฌํ์ฌ ๋น ๋ฅธ ์๋์ ๋์ ์ฑ๋ฅ์ ์ ๊ณตํ์ฃ . ํ์ผ I/O, ๋คํธ์ํฌ ์์ฒญ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ๋ฑ์ ํจ์จ์ ์ผ๋ก ์ํํ ์ ์์ด์.
๊ธฐ์กด ์๋ฒ ์ฌ์ด๋ ์ธ์ด(์: PHP, Python)์ ๋ฌ๋ฆฌ, ์ด๋ฒคํธ ๋ฃจํ๋ฅผ ์ด์ฉํด ๋น๋๊ธฐ ์ฒ๋ฆฌ๊ฐ ๊ธฐ๋ณธ์ผ๋ก ๋์ด ์์ด ๋ง์ ์์ฒญ์ ๋์์ ์ฒ๋ฆฌํ ์ ์์ด์. ์ด๋ก ์ธํด ์ฑํ ์ ํ๋ฆฌ์ผ์ด์ , ์ค์๊ฐ ๋ฐ์ดํฐ ์ ์ก ๋ฑ์ ๋งค์ฐ ์ ๋ฆฌํ๋ต๋๋ค. ๐ฌ
๐ Node.js์ ์ฃผ์ ํน์ง
ํน์ง | ์ค๋ช |
---|---|
๋น๋๊ธฐ I/O | ์ด๋ฒคํธ ๊ธฐ๋ฐ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ก ๊ณ ์ฑ๋ฅ ์ ๊ณต |
์ฑ๊ธ ์ค๋ ๋ | ๋น๋๊ธฐ ์์ ์ ํ๋์ ์ค๋ ๋์์ ๊ด๋ฆฌ |
NPM ์ง์ | ์๋ง์ ํจํค์ง๋ก ํ์ฅ์ฑ ํ๋ณด |
ํฌ๋ก์ค ํ๋ซํผ | Windows, macOS, Linux์์ ๋ชจ๋ ์คํ ๊ฐ๋ฅ |
๋น ๋ฅธ ์ฒ๋ฆฌ ์๋ | V8 ์์ง ๋๋ถ์ ๋น ๋ฅธ ์ฐ์ฐ ์ฑ๋ฅ |
Node.js์ ํน์ง ๋๋ถ์ ์ค์๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๊ฐ ์ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์์ ํนํ ๊ฐ๋ ฅํด์. ์น ์์ผ์ ์ด์ฉํ ์ฑํ ์๋น์ค๋ ์คํธ๋ฆฌ๋ฐ ์๋ฒ์ ๋ง์ด ์ฌ์ฉ๋์ฃ .
๋ํ NPM(Node Package Manager)์ ํตํด ๋ค์ํ ์คํ ์์ค ๋ชจ๋์ ์ฝ๊ฒ ์ค์นํ๊ณ ๊ด๋ฆฌํ ์ ์์ด, ๋ณต์กํ ํ๋ก์ ํธ๋ ๋น ๋ฅด๊ฒ ๊ตฌ์ถํ ์ ์๋ต๋๋ค. ๐
Node.js ๊ธฐ๋ณธ ๊ฐ๋ ๐
Node.js๋ฅผ ์ ๋๋ก ํ์ฉํ๋ ค๋ฉด ๋จผ์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ดํดํด์ผ ํด์. Node.js๋ ์๋ฒ ์ธก ์ ํ๋ฆฌ์ผ์ด์ ์ JavaScript๋ก ์์ฑํ ์ ์๋๋ก ํ๋ ๋ฐํ์ ํ๊ฒฝ์ด์์. ํนํ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ๊ณผ ์ด๋ฒคํธ ๊ธฐ๋ฐ ๊ตฌ์กฐ๋ฅผ ๋ฐํ์ผ๋ก ๋น ๋ฅธ ์ฑ๋ฅ์ ์๋ํ์ฃ .
Node.js๋ ์ฑ๊ธ ์ค๋ ๋๋ก ์๋ํ์ง๋ง, ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋๋ถ์ ์๋ง์ ์์ฒญ์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ด์. ์ด๋ฒคํธ ๋ฃจํ๋ฅผ ํตํด ์ฝ๋ฐฑ ํจ์๋ฅผ ์ฒ๋ฆฌํ์ฌ ๋ ผ๋ธ๋กํน I/O๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ์ฃ .
๐ง Node.js ์ฃผ์ ๊ฐ๋ ์์ฝ
๊ฐ๋ | ์ค๋ช |
---|---|
์ด๋ฒคํธ ๋ฃจํ | ๋น๋๊ธฐ ์์ ์ ๊ด๋ฆฌํ์ฌ ๋ ผ๋ธ๋กํน ์คํ |
๋ ผ๋ธ๋กํน I/O | ์ ์ถ๋ ฅ ์์ ์ค์๋ ๋ค๋ฅธ ์ฝ๋ ์คํ |
๋ชจ๋ | ์ฝ๋ ์ฌ์ฌ์ฉ๊ณผ ๊ตฌ์กฐํ๋ฅผ ์ํ ๋ ๋ฆฝ ๋ชจ๋ํ |
NPM | ์คํ์์ค ํจํค์ง ๊ด๋ฆฌ ๋๊ตฌ |
์ฝ๋ฐฑ ํจ์ | ๋น๋๊ธฐ ์ฒ๋ฆฌ ํ ์คํ๋๋ ํจ์ |
Node.js์ ๊ฐ์ ์ ๋น๋๊ธฐ ๋ ผ๋ธ๋กํน I/O๋ฅผ ํตํด ๋๊ท๋ชจ ํธ๋ํฝ์ ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ค๋ ์ ์ด์์. ์ด ๋๋ถ์ ์ฑํ ์๋น์ค, ์ค์๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง์ด ์ฌ์ฉ๋ผ์. ๐
๋ํ, NPM์ ํตํด ์๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฝ๊ฒ ๊ฐ์ ธ์ฌ ์ ์์ด ํ๋ก์ ํธ ๊ฐ๋ฐ ์๋๊ฐ ๋นจ๋ผ์. ๋ชจ๋ํ๋ ๊ตฌ์กฐ ๋๋ถ์ ์ฝ๋ ๊ด๋ฆฌ๋ ์ฉ์ดํ๋ต๋๋ค.
์ฃผ์ ํ์ฉ ์ฌ๋ก ๐ก
Node.js๋ ๋ค์ํ ๋ถ์ผ์์ ๋๋ฆฌ ํ์ฉ๋ผ์. ๋น๋๊ธฐ ์ฒ๋ฆฌ์ ๋น ๋ฅธ ์๋ ๋๋ถ์ ์ค์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋ฐ์ดํฐ ์ง์ฝ์ ์ธ ์๋น์ค์์ ํนํ ์ธ๊ธฐ๊ฐ ๋ง์์. ๐ช
Node.js์ ์ฃผ์ ํ์ฉ ์ฌ๋ก๋ฅผ ํตํด ์ด๋ค ํ๋ก์ ํธ์ ์ ํฉํ์ง ์์๋ณผ๊ฒ์. ์น ์ ํ๋ฆฌ์ผ์ด์ ๋ถํฐ IoT๊น์ง ํญ๋๊ฒ ์ฌ์ฉ๋๋ ์ด์ ๋ฅผ ์ดํดํ๋ฉด ํ๋ก์ ํธ ์ ํ์ด ์ฌ์์ง ๊ฑฐ์์.
๐ Node.js ํ์ฉ ์ฌ๋ก
๋ถ์ผ | ํ์ฉ ์์ | ์ค๋ช |
---|---|---|
์น ์๋ฒ | Express, Koa | ๊ฐ๋ฒผ์ด ์น ์๋ฒ์ API ์๋ฒ ๊ตฌ์ถ |
์ค์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ | ์ฑํ ์ฑ, ์ค์๊ฐ ์๋ฆผ | Socket.io๋ก ์ค์๊ฐ ๋ฐ์ดํฐ ์ ์ก |
๋ง์ดํฌ๋ก์๋น์ค | ๋ถ์ฐ ์์คํ ๊ตฌ์ถ | ๋ชจ๋ํ ์ํคํ ์ฒ๋ก ํ์ฅ์ฑ ๊ฐํ |
API ์๋ฒ | RESTful, GraphQL | ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์ ์ก ์๋ ์ต์ ํ |
IoT | ๋๋ฐ์ด์ค ๋ฐ์ดํฐ ์ฒ๋ฆฌ | MQTT, WebSocket ํ์ฉ |
Node.js๋ ๊ฐ๋ฒผ์ด ์๋ฒ ํ๊ฒฝ์ ํ์๋ก ํ๋ ๊ณณ์์ ํนํ ์ ์ฉํด์. Express๋ฅผ ์ด์ฉํ๋ฉด ๊ฐ๋จํ API ์๋ฒ๋ถํฐ ๋ณต์กํ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊น์ง ๋น ๋ฅด๊ฒ ๊ตฌ์ถํ ์ ์๋ต๋๋ค.
๋ํ, ์ค์๊ฐ ์ฒ๋ฆฌ๊ฐ ์ค์ํ ์ฑํ ์๋น์ค๋ ํ์ ๋๊ตฌ ๊ฐ๋ฐ์๋ ๋ง์ด ์ฌ์ฉ๋ผ์. Socket.io๋ฅผ ํ์ฉํ๋ฉด ์ฑํ ๋ฐฉ ๊ด๋ฆฌ์ ์ค์๊ฐ ๋ฉ์์ง ์ ์ก์ด ์ฌ์์ ธ์. ๐ฌ
ํนํ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ์์๋ ๋ชจ๋ํ๊ฐ ์ค์ํ๋ฐ, Node.js๋ ๊ฐ ์๋น์ค๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ด ์ ์ฐํ๊ณ ํ์ฅ ๊ฐ๋ฅํด์.
Express๋ฅผ ์ด์ฉํ ์น ์๋ฒ ๊ตฌ์ถ ๐
Node.js๋ก ์น ์๋ฒ๋ฅผ ์ฝ๊ฒ ๋ง๋ค๋ ค๋ฉด Express ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ์ข์์. Express๋ ๊ฐ๊ฒฐํ๊ณ ์ ์ฐํ ๊ตฌ์กฐ๋ก, ๋น ๋ฅด๊ฒ RESTful API๋ฅผ ๊ตฌ์ถํ ์ ์์ด์. ๐ ๏ธ
Express๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฏธ๋ค์จ์ด๋ฅผ ํ์ฉํ์ฌ ์์ฒญ๊ณผ ์๋ต์ ๊ฐ๋จํ๊ฒ ์ฒ๋ฆฌํ ์ ์์ด์. ๋ํ, ๋ผ์ฐํ ์ ํตํด ๋ค์ํ URL ํจํด์ ๊ด๋ฆฌํ ์ ์์ด์ ๋๊ท๋ชจ ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ ์ ํฉํ๋ต๋๋ค.
๐ Express ์น ์๋ฒ ๊ธฐ๋ณธ ์ฝ๋
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hello, Node.js with Express! ๐');
});
app.listen(port, () => {
console.log(`์๋ฒ ์คํ ์ค: http://localhost:${port}`);
});
์ ์ฝ๋๋ก ๊ฐ๋จํ ์น ์๋ฒ๋ฅผ ์คํํ ์ ์์ด์. ํฐ๋ฏธ๋์์ node app.js
๋ฅผ ์
๋ ฅํ๋ฉด ๋ก์ปฌ ์๋ฒ๊ฐ ์์๋ผ์. ๋ธ๋ผ์ฐ์ ์์ http://localhost:3000
์ ์ ์ํ๋ฉด "Hello, Node.js with Express!"๊ฐ ํ์๋ผ์. ๐
๐บ๏ธ ๋ผ์ฐํ ์์
๊ฒฝ๋ก | HTTP ๋ฉ์๋ | ์ค๋ช |
---|---|---|
/ | GET | ํ ํ์ด์ง ํ์ |
/about | GET | ์ ๋ณด ํ์ด์ง |
/api/data | POST | ๋ฐ์ดํฐ ์ ์ก |
Express์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ ๊ฐ๋จํ ์ฝ๋๋ก ๋ค์ํ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์๋ค๋ ์ ์ด์์. ๋ฏธ๋ค์จ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ก๊น , ์ธ์ฆ ๋ฑ๋ ์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์์ด์.
๋ํ, ๋ค์ํ HTTP ๋ฉ์๋๋ฅผ ์ง์ํ๋ฏ๋ก RESTful API๋ฅผ ๋ง๋๋ ๋ฐ ์ ๋ฆฌํด์. ๊ฐ๋จํ ์๋ฒ๋ถํฐ ๋ณต์กํ ๋ฐฑ์๋ ์์คํ ๊น์ง, Express๋ ๋ค์ํ ์๊ตฌ๋ฅผ ์ถฉ์กฑํ ์ ์์ด์!
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฐ๋ ๐พ
Node.js์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฐ๊ฒฐํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์กฐํํ ์ ์์ด์. ๋ํ์ ์ผ๋ก ๋ง์ด ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ MySQL, MongoDB, PostgreSQL ๋ฑ์ด ์์ด์. ๐
๋น๋๊ธฐ ์ฒ๋ฆฌ์ ์ต์ ํ๋ Node.js์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฐ๊ฒฐํ๋ฉด ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ด์. ํนํ, ๋น๋๊ธฐ ์ฟผ๋ฆฌ ์ฒ๋ฆฌ๋ก ์ฑ๋ฅ์ด ์ฐ์ํด์.
๐ MySQL ์ฐ๋ ์์
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'password',
database: 'mydb'
});
connection.connect((err) => {
if (err) throw err;
console.log('MySQL ์ฐ๊ฒฐ ์ฑ๊ณต!');
});
connection.query('SELECT * FROM users', (err, results) => {
if (err) throw err;
console.log(results);
connection.end();
});
์ ์ฝ๋์์๋ MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ์ฌ users
ํ
์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ์ด์. mysql
ํจํค์ง๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐ์ ์ค์ ํ๊ณ ์ฟผ๋ฆฌ๋ฅผ ์คํํ์ด์.
๐๏ธ MongoDB ์ฐ๋ ์์
const { MongoClient } = require('mongodb');
const uri = "mongodb://localhost:27017";
const client = new MongoClient(uri);
async function connectDB() {
try {
await client.connect();
console.log("MongoDB ์ฐ๊ฒฐ ์ฑ๊ณต!");
const db = client.db("mydb");
const users = await db.collection("users").find().toArray();
console.log(users);
} finally {
await client.close();
}
}
connectDB().catch(console.error);
MongoDB๋ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก, JSON ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด์. mongodb
ํจํค์ง๋ฅผ ์ด์ฉํ์ฌ ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ ์กฐํ๋ฅผ ํ ์ ์์ด์.
๐ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋น๊ต
๋ฐ์ดํฐ๋ฒ ์ด์ค | ํน์ง | ์ฌ์ฉ ์ฌ๋ก |
---|---|---|
MySQL | ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค, SQL ์ง์ | ๋ธ๋ก๊ทธ, ์ผํ๋ชฐ |
MongoDB | NoSQL, ๋ฌธ์ ์งํฅ | ์ฑํ ์ฑ, ๋ฐ์ดํฐ ๋ถ์ |
PostgreSQL | ๊ฐ์ฒด ๊ด๊ณํ DB, ๋ณต์กํ ์ฟผ๋ฆฌ ์ฒ๋ฆฌ | ๊ธ์ต ์์คํ , ๋ฐ์ดํฐ ๋ถ์ |
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ํ์ ํ๋ก์ ํธ ์ฑ๊ฒฉ์ ๋ฐ๋ผ ๋ฌ๋ผ์ ธ์. ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ค๋ฉด MySQL์ด๋ PostgreSQL์ด ์ข๊ณ , ์ ์ฐํ ์คํค๋ง๊ฐ ํ์ํ๋ฉด MongoDB๊ฐ ์ ๋ฆฌํด์.
Node.js์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฐ๋ํ๋ฉด ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฅผ ์ค์๊ฐ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ด์. ํนํ API ์๋ฒ๋ฅผ ๋ง๋ค ๋ ์ ์ฉํด์. ๐
๋น๋๊ธฐ ์ฒ๋ฆฌ์ ์ด๋ฒคํธ ๋ฃจํ ๐
Node.js์ ๊ฐ์ฅ ํฐ ํน์ง ์ค ํ๋๋ ๋น๋๊ธฐ ์ฒ๋ฆฌ์ ์ด๋ฒคํธ ๋ฃจํ์์. ์๋ฒ๊ฐ ๋ง์ ์์ฒญ์ ์ฒ๋ฆฌํ ๋, ๋น๋๊ธฐ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ๋๊ธฐ ์๊ฐ์ ์ค์ผ ์ ์์ด์. ๐ช
Node.js๋ ์ฑ๊ธ ์ค๋ ๋ ๊ธฐ๋ฐ์ด์ง๋ง, ๋น๋๊ธฐ I/O์ ์ด๋ฒคํธ ๋ฃจํ ๋๋ถ์ ์๋ง์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ต๋๋ค. ์ด ๋๋ถ์ ์ค์๊ฐ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฑ๋ฅ์ด ๋ฐ์ด๋์ฃ .
๐ ์ด๋ฒคํธ ๋ฃจํ ์๋ ๋ฐฉ์
๋จ๊ณ | ์ค๋ช |
---|---|
Timers | setTimeout๊ณผ setInterval์ ์ฒ๋ฆฌ |
Pending Callbacks | ๋น๋๊ธฐ I/O์ ์ฝ๋ฐฑ ์ฒ๋ฆฌ |
Idle, Prepare | ๋ด๋ถ์ ์ผ๋ก ์ฒ๋ฆฌํ ์์ ์ค๋น |
Poll | ์๋ก์ด I/O ์ด๋ฒคํธ ์ฒ๋ฆฌ |
Check | setImmediate ์ฝ๋ฐฑ ์คํ |
Close Callbacks | ๋ซ๊ธฐ ์ด๋ฒคํธ ์ฒ๋ฆฌ |
Node.js๋ ์ด๋ฒคํธ ๋ฃจํ๋ฅผ ํตํด ๋น๋๊ธฐ ์์ ์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํด์. ํ์ด๋จธ ์ค์ , ํ์ผ ์ฝ๊ธฐ, ๋คํธ์ํฌ ์์ฒญ ๋ฑ์ ๋น๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌํ์ฌ ๋ฉ์ธ ์ค๋ ๋๋ฅผ ์ฐจ๋จํ์ง ์์ฃ . ๐
๐ ๋น๋๊ธฐ ํจ์ ์ฌ์ฉ ์์
const fs = require('fs');
console.log('ํ์ผ ์ฝ๊ธฐ ์์');
fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log('ํ์ผ ๋ด์ฉ:', data);
});
console.log('๋ค๋ฅธ ์์
์ํ');
์ ์ฝ๋์์ fs.readFile
์ ๋น๋๊ธฐ์ ์ผ๋ก ํ์ผ์ ์ฝ์ด์. ๋ฐ๋ผ์ ํ์ผ์ ์ฝ๋ ๋์์๋ "๋ค๋ฅธ ์์
์ํ"์ด ๋จผ์ ์ถ๋ ฅ๋ผ์. ์ด๊ฒ์ด ๋ฐ๋ก ๋น๋๊ธฐ ์ฒ๋ฆฌ์ ํ์ด์์! ๐
Node.js์ ๋น๋๊ธฐ ํน์ฑ ๋๋ถ์ ์๋ฒ๊ฐ ๋ธ๋กํน ์์ด ์ฌ๋ฌ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์ด์. ์ด๋ก ์ธํด ์ค์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์์ ๊ฐ์ ์ ๊ฐ์ง์ฃ .
FAQ ๐ก
Q1. Node.js๋ฅผ ์ฌ์ฉํ๋ ๊ฐ์ฅ ํฐ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์?
A1. ๋น๋๊ธฐ I/O ์ฒ๋ฆฌ์ ๋์ ์ฑ๋ฅ ๋๋ถ์ด์์. ์ค์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ , ์ฑํ ์๋ฒ, API ์๋ฒ ๋ฑ์์ ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํด์.
Q2. Express์ Node.js๋ ์ด๋ป๊ฒ ๋ค๋ฅด๋์?
A2. Node.js๋ ๋ฐํ์ ํ๊ฒฝ์ด๊ณ , Express๋ ๊ทธ ์์์ ๋์๊ฐ๋ ์น ํ๋ ์์ํฌ์์. Express๋ฅผ ์ฌ์ฉํ๋ฉด HTTP ์์ฒญ ์ฒ๋ฆฌ์ ๋ผ์ฐํ ์ด ๋ ๊ฐํธํด์ ธ์.
Q3. Node.js์์ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ ๋ฌด์์ธ๊ฐ์?
A3. ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ ์ฝ๋ ์คํ์ ์ค๋จํ์ง ์๊ณ ๋ค๋ฅธ ์์ ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ๋งํด์. Node.js๋ ์ด๋ฒคํธ ๋ฃจํ๋ฅผ ์ฌ์ฉํด ๋ ผ๋ธ๋กํน I/O๋ฅผ ์คํํด์.
Q4. Node.js์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ ์ด๋ป๊ฒ ํ๋์?
A4. MySQL, MongoDB ๋ฑ ๋ค์ํ DB์ ์ฐ๋ํ ์ ์์ด์. npm ํจํค์ง์ธ mysql
, mongodb
๋ฅผ ์ฌ์ฉํด ์ฐ๊ฒฐํ๊ณ ์ฟผ๋ฆฌ๋ฅผ ์ํํ ์ ์์ด์.
Q5. ์ Node.js๋ ์ฑ๊ธ ์ค๋ ๋๋ก ๋์ํ๋์?
A5. ์ฑ๊ธ ์ค๋ ๋ ๊ตฌ์กฐ ๋๋ถ์ ์์ ์๋ชจ๊ฐ ์ ๊ณ , ๋น๋๊ธฐ I/O๋ก ๋ง์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์ด์. ์ด๋ฒคํธ ๋ฃจํ ๋๋ถ์ ์ฌ๋ฌ ์์ ์ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ฌ์.
Q6. Node.js์์ ์ค์๊ฐ ์ฑํ ์๋ฒ๋ฅผ ๊ตฌ์ถํ๋ ค๋ฉด?
A6. Socket.io์ ๊ฐ์ ์ค์๊ฐ ํต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋จํ๊ฒ ๊ตฌ์ถํ ์ ์์ด์. Express์ ํจ๊ป ์ฌ์ฉํ๋ฉด ์น ์์ผ ๊ธฐ๋ฐ ์ฑํ ์ฑ์ ์ฝ๊ฒ ๋ง๋ค ์ ์๋ต๋๋ค.
Q7. ๋น๋๊ธฐ ์ฝ๋๊ฐ ๋ง์ผ๋ฉด ๋๋ฒ๊น ์ด ์ด๋ ค์ด๋ฐ ์ด๋ป๊ฒ ํด๊ฒฐํ๋์?
A7. async/await ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ฉด ๋น๋๊ธฐ ์ฝ๋๋ฅผ ๋๊ธฐ์์ผ๋ก ํํํ ์ ์์ด ๊ฐ๋ ์ฑ์ด ์ข์์ ธ์. ๋ํ, try-catch๋ก ์๋ฌ ์ฒ๋ฆฌ๋ ์์ํด์.
Q8. Node.js ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ๋ ค๋ฉด?
A8. PM2๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ๊ณ , Nginx๋ฅผ ๋ฆฌ๋ฒ์ค ํ๋ก์๋ก ์ค์ ํ์ฌ ๋ฐฐํฌํ ์ ์์ด์. AWS EC2๋ Heroku ๋ฑ ํด๋ผ์ฐ๋ ์๋น์ค๋ฅผ ํ์ฉํ๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ด์์.