javaScript ๊ณต๋ถํ๋ค๊ฐ error๋ถ๋ถ์์ ๋์จ node.js ์ ๋ฆฌ
ํจ์๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ์คํ์ ์ค์งํ๊ณ , ๊ทธ ์ค๋ฅ๋ ํจ์๊ฐ ํธ์ถ๋ ์ฅ์๋ก ์ ๋ฌ๋จ
express๋ ๋ผ์ฐํธ ํธ๋ค๋ฌ ํจ์๋ฅผ ํธ์ถํจ. ๊ทธ๋ฆฌ๊ณ ๋ผ์ฐํธ ํธ๋ค๋ฌ ์ค ํ๋์์ ์ค๋ฅ๋ฅผ ์์ ํ๋ฉด,
(์ค๋ฅ๊ฐ ์์์ ํ์ธํ ๋ค์)๊ธฐ๋ณธ ์ค๋ฅ ์ฒ๋ฆฌ ๋ฏธ๋ค์จ์ด๋ฅผ ์คํํจ
- "ํจ์๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ์คํ์ ์ค์งํ๊ณ , ๊ทธ ์ค๋ฅ๋ ํจ์๊ฐ ํธ์ถ๋ ์ฅ์๋ก ์ ๋ฌ๋จ":
- ์๋ฐ์คํฌ๋ฆฝํธ์์ ํจ์ ๋ด์์ ์ค๋ฅ(์์ธ)๊ฐ ๋ฐ์ํ๋ฉด, ํด๋น ํจ์์ ์คํ์ด ์ค๋จ๋๊ณ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์์น์์ ์์ธ ์ฒ๋ฆฌ๊ธฐ๋ก ์ค๋ฅ๊ฐ ์ ํ๋๋ค๋ ๊ฒ์ ์๋ฏธ. ์์ธ ์ฒ๋ฆฌ๋ try...catch ๋ธ๋ก์ ์ฌ์ฉํ์ฌ ํ ์ ์์
- "express๋ ๋ผ์ฐํธ ํธ๋ค๋ฌ ํจ์๋ฅผ ํธ์ถํจ. ๊ทธ๋ฆฌ๊ณ ๋ผ์ฐํธ ํธ๋ค๋ฌ ์ค ํ๋์์ ์ค๋ฅ๋ฅผ ์์ ํ๋ฉด, (์ค๋ฅ๊ฐ ์์์ ํ์ธํ ๋ค์)๊ธฐ๋ณธ ์ค๋ฅ ์ฒ๋ฆฌ ๋ฏธ๋ค์จ์ด๋ฅผ ์คํํจ":
- Express ํ๋ ์์ํฌ์์ ๋ผ์ฐํธ ํธ๋ค๋ฌ๋ ํน์ ๊ฒฝ๋ก(URI)์ ๋ํ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ํจ์
- ๋ง์ฝ ๋ผ์ฐํธ ํธ๋ค๋ฌ ์ค ํ๋์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด, Express๋ ์ด ์ค๋ฅ๋ฅผ ์ก์๋ด๊ณ '์ค๋ฅ ์ฒ๋ฆฌ ๋ฏธ๋ค์จ์ด(error-handling middleware)'๋ก ์ ๋ฌํจ
- ์ค๋ฅ ์ฒ๋ฆฌ ๋ฏธ๋ค์จ์ด๋ ์ด ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ๊ณ ์ฌ์ฉ์์๊ฒ ์ ์ ํ ์๋ต(์: ์ค๋ฅ ๋ฉ์์ง)์ ๋ฐํ. Express์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ด์ฅ๋ ์ค๋ฅ ์ฒ๋ฆฌ ๋ฏธ๋ค์จ์ด๊ฐ ์์
๋ฏธ๋ค์จ์ด๋?
- ๋ฏธ๋ค์จ์ด๋ ์์ฒญ๊ณผ ์๋ต ์ฌ์ด์์ ํน์ ์์ ์ ์ํํ๋ ํจ์
- Express์์ ๋ฏธ๋ค์จ์ด๋ ์์ฒญ ๊ฐ์ฒด(req), ์๋ต ๊ฐ์ฒด(res), ๊ทธ๋ฆฌ๊ณ ๋ค์ ๋ฏธ๋ค์จ์ด๋ก ์ ์ด๋ฅผ ๋๊ธฐ๋ next ํจ์๋ฅผ ์ธ์๋ก ๋ฐ์
- ๋ฏธ๋ค์จ์ด๋ ๋ค์ํ ์ฉ๋๋ก ์ฌ์ฉ๋ ์ ์์ผ๋ฉฐ, ์์ฒญ ๋ก๊น , ์ ์ ํ์ผ ์ ๊ณต, ์ค๋ฅ ์ฒ๋ฆฌ ๋ฑ์ ํ์ฉ๋จ
Node.js์ ์๋ฐ์คํฌ๋ฆฝํธ
- ์ ์๋ ๊ฐ๋ ์ Node.js ํ๊ฒฝ์ Express ํ๋ ์์ํฌ์ ํนํ๋ ๊ฒ
- ์ผ๋ฐ์ ์ธ ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ํจ์๋ ์์ธ๊ฐ ๋ฐ์ํ๋ฉด ์คํ์ ์ค์งํ๊ณ , ์์ธ๋ฅผ ํธ์ถํ ๊ณณ์ผ๋ก ์ ๋ฌํ๋ ํน์ฑ์ ๊ฐ์ง๊ณ ์์ง๋ง, Express์ ๋ผ์ฐํธ ํธ๋ค๋ฌ์ ์ค๋ฅ ์ฒ๋ฆฌ ๋ฏธ๋ค์จ์ด ๊ฐ์ ๊ฐ๋ ์ Express ํ๋ ์์ํฌ ๋ด์์๋ง ์ ์ฉ๋๋ ํน๋ณํ ๋ฉ์ปค๋์ฆ
Express ํ๋ ์์ํฌ๋?
- Express ํ๋ ์์ํฌ๋ Node.js๋ฅผ ์ํ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ํ๋ ์์ํฌ ์ค ํ๋
- Express๋ Node.js์ ํต์ฌ ๊ธฐ๋ฅ ์์ ๋น๋๋์ด ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ API ๊ฐ๋ฐ์ ๋ณด๋ค ์ฝ๊ณ ํจ์จ์ ์ผ๋ก ๋ง๋ค์ด์ค
- Express๋ ๊ทธ ์์ฒด๋ก ๋งค์ฐ ๊ฐ๋จํ์ง๋ง, ๊ฐ๋ ฅํ ๊ธฐ๋ฅ๊ณผ ์ ์ฐ์ฑ์ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ์๊ฐ ๋ค์ํ ์ ํ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์๋น์ค๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ตฌ์ถํ ์ ์๋๋ก ๋์์ค
์ฃผ์ ํน์ง
- ๊ฐ๊ฒฐํจ๊ณผ ์ ์ฐ์ฑ: Express๋ ๊ฐ๊ฒฐํ API๋ฅผ ์ ๊ณตํ์ฌ ๋น ๋ฅด๊ณ ๊ฐํธํ๊ฒ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ RESTful API๋ฅผ ๊ฐ๋ฐํ ์ ์๊ฒ ํด์ค๋๋ค. ๋ํ, ๋ค์ํ ๋ฏธ๋ค์จ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ฅ์ ํ์ฅํ ์ ์์ต๋๋ค.
- ๋ฏธ๋ค์จ์ด ์ํคํ ์ฒ: Express๋ ์์ฒญ๊ณผ ์๋ต ์ฌ์ด์์ ์๋ํ๋ ๋ฏธ๋ค์จ์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ฏธ๋ค์จ์ด๋ ๋ก๊น , ์ ์ ํ์ผ ์๋น, ์ธ์ ๊ด๋ฆฌ, ์๋ฌ ํธ๋ค๋ง ๋ฑ ๋ค์ํ ์์ ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- ๋ผ์ฐํ ์์คํ : URL ๊ฒฝ๋ก์ HTTP ๋ฉ์๋(GET, POST, PUT, DELETE ๋ฑ)์ ๋ฐ๋ฅธ ์์ฒญ ์ฒ๋ฆฌ๋ฅผ ์ฝ๊ฒ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด API ์๋ํฌ์ธํธ๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- ํ ํ๋ฆฟ ์์ง ์ง์: Express๋ Pug, EJS, Handlebars ๋ฑ ๋ค์ํ ํ ํ๋ฆฟ ์์ง๊ณผ ์ฝ๊ฒ ํตํฉ๋ ์ ์์ด, ๋์ ์ธ HTML ์ปจํ ์ธ ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
- ์ปค๋ฎค๋ํฐ ๋ฐ ํ๋ฌ๊ทธ์ธ: ๊ฐ๋ ฅํ ์ปค๋ฎค๋ํฐ ์ง์๊ณผ ์๋ง์ NPM ๋ชจ๋ ๋ฐ ํ๋ฌ๊ทธ์ธ ๋๋ถ์ ๊ฐ๋ฐ์๋ ๋ค์ํ ๊ธฐ๋ฅ์ ์์ฝ๊ฒ ์ถ๊ฐํ ์ ์์ต๋๋ค.
์ฌ์ฉ ์ฌ๋ก
- ์น์ฌ์ดํธ ๋ฐ ์น ์ ํ๋ฆฌ์ผ์ด์ : Express๋ ์น์ฌ์ดํธ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฑ์๋ ๊ฐ๋ฐ์ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค.
- RESTful API ๊ฐ๋ฐ: JSON ๊ธฐ๋ฐ์ RESTful API๋ฅผ ๋น ๋ฅด๊ณ ์ฝ๊ฒ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
- ์ฑ๊ธ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ (SPA): React, Angular, Vue.js์ ๊ฐ์ ํ๋ก ํธ์๋ ํ๋ ์์ํฌ์ ํจ๊ป ๋ฐฑ์๋ ์๋ฒ๋ก ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
module.exports = { readFile: readFile };
- module.exports๋ Node.js์์ ๋ชจ๋์ ์ ์ํ๊ณ ๋ด๋ณด๋ด๊ธฐ ์ํ ๊ฐ์ฒด
- module.exports ๊ฐ์ฒด์ ์ด๋ค ์์ฑ์ด๋ ๋ฉ์๋๋ฅผ ์ถ๊ฐํ๋ฉด, ๊ทธ ๋ชจ๋์ ๋ถ๋ฌ์ค๋ ๋ค๋ฅธ ํ์ผ์์ ํด๋น ์์ฑ์ด๋ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์์
- ๋ชจ๋ ์ ์
// someModule.js
function readFile() {
// ํ์ผ ์ฝ๊ธฐ ๋ก์ง
}
module.exports = { readFile: readFile };
- ๋ชจ๋ ์ฌ์ฉ
// anotherFile.js
const { readFile } = require('./someModule');
readFile(); // someModule.js์์ ์ ์ํ readFile ํจ์๋ฅผ ์ฌ์ฉํ ์ ์์
- ES6 ๋ฌธ๋ฒ ์ฌ์ฉ ์
// ES6 ๋ชจ๋ ๋ฌธ๋ฒ
// someModule.js
export function readFile() {
// ํ์ผ ์ฝ๊ธฐ ๋ก์ง
}
// anotherFile.js
import { readFile } from './someModule';
const fs = require('fs');
- const fs = require('fs'); ์ฝ๋๋ Node.js์์ ํ์ผ ์์คํ (File System) ๋ชจ๋์ ๋ถ๋ฌ์ค๋ ๋ฐฉ๋ฒ
- Node.js์ ๋ด์ฅ ๋ชจ๋์ธ fs๋ ํ์ผ์ ์ฝ๊ณ ์ฐ๋ ๋ฑ์ ํ์ผ ์์คํ ๊ณผ ๊ด๋ จ๋ ์์ ์ ์ํํ ์ ์๊ฒ ํด์ค
- fs ๋ชจ๋์ ์ฌ์ฉํ์ฌ ํ์ผ์ ์ฝ๊ณ ์ฐ๋ ๊ธฐ๋ณธ์ ์ธ ์์
const fs = require('fs');
// ํ์ผ ์ฝ๊ธฐ (๋น๋๊ธฐ์ )
fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) {
console.error("ํ์ผ ์ฝ๊ธฐ ์ค ์ค๋ฅ ๋ฐ์:", err);
return;
}
console.log(data);
});
// ํ์ผ ์ฐ๊ธฐ (๋น๋๊ธฐ์ )
fs.writeFile('example.txt', 'Hello, world!', (err) => {
if (err) {
console.error("ํ์ผ ์ฐ๊ธฐ ์ค ์ค๋ฅ ๋ฐ์:", err);
return;
}
console.log("ํ์ผ์ด ์ฑ๊ณต์ ์ผ๋ก ์ ์ฅ๋์์ต๋๋ค.");
});
'๐ฅ๏ธ ํ๋ก ํธ์๋ > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๊ณต์ ] ํฐ์คํ ๋ฆฌ ์๋ ๋ชฉ์ฐจ ๋ง๋ค๊ธฐ, ๋ฐ๋ผ๋ค๋๋ ์๋ ๋ชฉ์ฐจ ์์ฑ ๋ฐฉ๋ฒ, ๋ชฉ์ฐจ ๋ค๋น๊ฒ์ดํฐ ๋ง๋ค๊ธฐ (์์ ์ฌ์ ์ด๋ณด์ ๊ฐ๋ฅ) (1) | 2023.12.09 |
---|---|
[Script] ์ฒดํฌ๋ฐ์ค (1) | 2023.12.07 |
[Script] ํ์๊ฐ์ ํ์ด์ง ๊ธฐ๋ฅ JavaScript/JQuery๋ก ๊ตฌํํ๊ธฐ (1) | 2023.12.07 |
[JQuery] ์ ์ด์ฟผ๋ฆฌ ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ (1) | 2023.12.05 |
[JS] defer ์์ฑ (0) | 2023.11.12 |