
๐ฏ express-generator๋ฅผ ์ฌ์ฉํ์ฌ Express ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ณ ์คํํฉ๋๋ค.
Express ๊ณต์ ํํ์ด์ง๋ฅผ ์ฐธ๊ณ ํ์ฌ express-generator๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ๋ฅผ ์์ฑํฉ๋๋ค.
1. express-generator๋ฅผ ์ค์นํฉ๋๋ค.
์ ํด๋๋ฅผ ๋ง๋ ํ ํฐ๋ฏธ๋์์ express-generator๋ฅผ ๊ธ๋ก๋ฒ ํจํค์ง๋ก ์ค์นํฉ๋๋ค.
$
npm install -g express-generator
2. Express ํ๋ก์ ํธ๋ฅผ ์์ฑํฉ๋๋ค.
$
express
๐ก Node.js 8.2.0 ๋ฒ์ ์ดํ
์ ํ๋ฆฌ์ผ์ด์ ์์ฑ ๋๊ตฌ๋ฅผ npx ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋น ๋ฅด๊ฒ ์คํํ ์ ์์ต๋๋ค.
npx express-generator
express ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ๋ฉด ์๋์ ๊ฐ์ ํ๋ก์ ํธ ๊ตฌ์กฐ๊ฐ ์์ฑ๋ฉ๋๋ค.
๐ bin
โโโ ๐ www
๐ public
โโโ ๐ images
โโโ ๐ javascripts
โโโ ๐ stylesheets
โ โโโ ๐ style.css
๐ routes
โโโ ๐ index.js
โโโ ๐ users.js
๐ views
โโโ ๐ถ error.jade
โโโ ๐ถ index.jade
โโโ ๐ถ layout.jade
๐ app.js
๐ package.json
๐ bin/ : ์๋ฒ ์คํ ํ์ผ์ด ์๋ ํด๋
๐www : ์๋ฒ ์คํ ํ์ผ (์น ์๋ฒ๋ฅผ ์คํํ๋ ๋ฐ ํ์ํ ์ค์ ํฌํจ)๐public/ : ์ ์ ํ์ผ ํด๋(CSS, JS, ์ด๋ฏธ์ง ๋ฑ)
๐routes/ : ๋ผ์ฐํ
์ค์ ํด๋ ( ๊ฐ ๊ฒฝ๋ก๋ฅผ ๋ด๋นํ๋ ๋ชจ๋์ด ๋ค์ด์๋ ํด๋)
๐index.js : ๊ธฐ๋ณธ ๋ผ์ฐํธ ( / )
๐users.js : ์ ์ ๊ด๋ จ ๋ผ์ฐํธ ( /users )
๐views/ : Jade (Pug) ํ
ํ๋ฆฟ ์์ง์ ์ฌ์ฉํ๋ ํด๋
๐ถerror.jade : ์๋ฌ ํ์ด์ง
๐ถindex.jade : ๋ฉ์ธ ํ์ด์ง
๐ถlayout.jade : ๊ณตํต ๋ ์ด์์
๐app.js : Express ํต์ฌ ํ์ผ, ๋ฏธ๋ค์จ์ด, ์ ์ ํ์ผ ์ค์ , ๋ผ์ฐํธ ๋ฑ๋ก์ ์ฒ๋ฆฌ
๐package.json : ํ๋ก์ ํธ์ ์ค์น๋ ๋ชจ๋ ์ด๋ฆ, ๋ฒ์ ๋ฑ์ ์ ๋ณด๋ค์ด ์์ฑ๋ ํ์ผ
ํ๋ก์ ํธ๋ฅผ ์คํ ๋ช
๋ น์ด npm start๋ฅผ ํฐ๋ฏธ๋์ ์
๋ ฅํฉ๋๋ค.

package.json์ "scripts": { "start": "๋ช
๋ น์ด" } ์ค์ ์ด ์์ด์ผ ์คํ๋ฉ๋๋ค.
// package.json
{
"scripts": {
"start": "node app.js",
}
}
npm start ๋ฅผ ์
๋ ฅํ๋ฉด "๋ช
๋ น์ด"๊ฐ ์คํ๋ฉ๋๋ค.
npm start ์
๋ ฅ ์ Error: Cannot find module 'http-errors'๋ผ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
โ ๏ธ ๋ฐ์ํ ์ค๋ฅ
$ npm start express-base@0.0.0 start node ./bin/www node:internal/modules/cjs/loader:1228 throw err; ^ Error: Cannot find module 'http-errors' Require stack: - C:\Users\MSI\frontProject\programmers\express-base\app.js - C:\Users\MSI\frontProject\programmers\express-base\bin\www at Module._resolveFilename (node:internal/modules/cjs/loader:1225:15) at Module._load (node:internal/modules/cjs/loader:1051:27) at Module.require (node:internal/modules/cjs/loader:1311:19) at require (node:internal/modules/helpers:179:18) at Object.<anonymous> (C:\Users\MSI\frontProject\programmers\express-base\app.js:1:19) at Module._compile (node:internal/modules/cjs/loader:1469:14) at Module._extensions..js (node:internal/modules/cjs/loader:1548:10) at Module.load (node:internal/modules/cjs/loader:1288:32) at Module._load (node:internal/modules/cjs/loader:1104:12) at Module.require (node:internal/modules/cjs/loader:1311:19) { code: 'MODULE_NOT_FOUND', requireStack: [ 'C:\\Users\\MSI\\frontProject\\programmers\\express-base\\app.js', 'C:\\Users\\MSI\\frontProject\\programmers\\express-base\\bin\\www' ] }ํ๋ก์ ํธ์ ํจํค์ง๊ฐ ์ค์น๋์ง ์์๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ ์ค๋ฅ์ ๋๋ค. express ์ค์น๋ ๋งค ํ๋ก์ ํธ ํด๋๋ง๋ค ํด์ฃผ์ด์ผ ํฉ๋๋ค.
๐ก ํด๊ฒฐ ๊ณผ์
package.json์ ๋ช ์๋ ๋ชจ๋ ํจํค์ง๋ฅผ ์ค์นํ๋ ๋ช ๋ น์ดnpm install์ ์ด์ฉํด ํด๋ ๋ด์ ํจํค์ง๋ฅผ ๋ค์ด๋ฐ์์ฃผ๋ฉด ์ ์์ ์ผ๋ก ์๋๋ฉ๋๋ค.
Express๋ฅผ ํ์ฉํ์ฌ Map ๊ฐ์ฒด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋จํ REST API๋ฅผ ๋ง๋ค์์ต๋๋ค.
// express ๋ชจ๋ ์
ํ
const express = require('express');
const app = express();
app.listen(3000);
// ๋ฐ์ดํฐ ์
ํ
let youtuber1 = {
name: '์ฑ๋์ญ์ค์ผ',
subscribers: '688M',
videoNum: 1500,
};
let youtuber2 = {
name: '๋ฌ๋ฌ',
subscribers: '253M',
videoNum: 292,
};
let youtuber3 = {
name: 'TEO ํ
์ค',
subscribers: '124M',
videoNum: 1200,
};
let db = new Map();
db.set(1, youtuber1);
db.set(2, youtuber2);
db.set(3, youtuber3);
// REST API ์ค๊ณ
app.get('/youtuber/:id', function (req, res) {
let { id } = req.params;
id = parseInt(id);
const youtuber = db.get(id);
if (youtuber === undefined) {
res.json({
message: '์๋ ์ ํ๋ฒ์
๋๋ค.',
});
} else {
youtuber.id = id; // youtuber['id'] = id;
res.json(youtuber);
}
});
express ๋ชจ๋์ ํตํด ์๋ฒ๋ฅผ ์์ฑํ ๋ค, ์ ํ๋ฒ ์ ๋ณด๋ฅผ Map์ ์ฌ์ฉํด์ ์ ์ฅํ๊ณ , id๋ฅผ ํตํด ์ ํ๋ฒ์ ์ ๋ณด๋ฅผ ์กฐํํ๋ API๋ฅผ ์์ฑํ์์ต๋๋ค.
function add1(x, y) {
return x + y;
}
console.log('add1(1,2) >>>', add1(1, 2)); //3
let add2 = function (x, y) {
return x + y;
};
console.log('add2(1,2) >>>', add2(1, 2));
let add3 = (x, y) => {
return x + y;
};
console.log('add3(1,2) >>>', add3(1, 2));
let add4 = (x, y) => x + y;
console.log('add4(1,2) >>>', add4(1, 2));
Express ํ๋ก์ ํธ๋ฅผ ์์ฑ ํด๋ณด๋ฉด์ ์ค์ ํ๋ก์ ํธ์ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์กฐ์ ์คํ ๊ณผ์ ์ ์ตํ ์ ์์ด์ ์ข์๊ณ , ํ๋์ฉ ํบ์๋ณด๋ฉด์ ๊ณต๋ถ๋ฅผ ์ด์ฌํ ํด์ผ๊ฒ ๋ค๊ณ ๋๊ผ์ต๋๋ค.