npx express-generator
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด Express ์ ํ๋ฆฌ์ผ์ด์
์ ๊ธฐ๋ณธ ํ
ํ๋ฆฟ์ ๋ง๋ค์ด์ค๋ค.
์ฐธ๊ณ ๋ก, Express๋ Node.js๋ฅผ ์ํ ์น ํ๋ ์์ํฌ์ด๋ค!
express-generator
๋ ํ๋ก์ ํธ ๊ตฌ์กฐ๋ง ์์ฑํ๊ณ , dependencies(์์กด์ฑ)๋ ์๋์ผ๋ก ์ค์นํ์ง ์๋๋ค. ๋ฐ๋ผ์ ํ๋ก์ ํธ ์์ฑ ํ ์๋ ๋ช
๋ น์ด๋ค์ ์คํํด์ผ ํ๋ค.
npm install # ์์กด์ฑ ์ค์น
npm start # ์๋ฒ ์คํ
์์ฑ๋ Express ํ๋ก์ ํธ ๊ตฌ์กฐ
.
โโโ app.js
โโโ bin
โ โโโ www
โโโ package.json
โโโ public
โ โโโ images
โ โโโ javascripts
โ โโโ stylesheets
โ โโโ style.css
โโโ routes
โ โโโ index.js
โ โโโ users.js
โโโ views
โโโ error.pug
โโโ index.pug
โโโ layout.pug
์ด 7๊ฐ์ ๋๋ ํ ๋ฆฌ์ 9๊ฐ์ ํ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
์ฃผ์ ํ์ผ ์ค๋ช
app.js
Express ์ ํ๋ฆฌ์ผ์ด์ ์ ์ง์ ์ (์ํธ๋ฆฌ ํ์ผ)์ด๋ค. ์๋ฒ์ ์ฃผ์ ์ค์ ์ด ์ด๋ฃจ์ด์ง๋ค.
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
์ฌ๊ธฐ์์ ์ฌ๋ฌ ๋ชจ๋์ ๊ฐ์ ธ์ ์ธํ ํ๋ค.
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
๋ผ์ฐํฐ๋ฅผ ์ ์ํ๋ค.
var app = express();
Express ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
๋ทฐ ์์ง ์ค์ : Express Generator๋ ๊ธฐ๋ณธ์ ์ผ๋ก Pug(Jade)
ํ
ํ๋ฆฟ ์์ง์ ์ฌ์ฉํ๋ค.
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
๋ฏธ๋ค์จ์ด ์ค์ : ๋ฏธ๋ค์จ์ด๋ ์์ฒญ๊ณผ ์๋ต ์ฌ์ด์์ ๋ก๊น , ํ์ฑ, ์ ์ ํ์ผ ์๋น ๋ฑ์ ์์ ์ ์ํํ๋ค.
app.use('/', indexRouter);
app.use('/users', usersRouter);
๋ผ์ฐํ
์ค์ ์ด๋ค. /
๊ฒฝ๋ก์ /users
๊ฒฝ๋ก๋ก ๋ค์ด์ค๋ ์์ฒญ์ ๊ฐ๊ฐ indexRouter
์ usersRouter
๋ก ์ฒ๋ฆฌํ๋ค.
module.exports = app;
์ ํ๋ฆฌ์ผ์ด์
์ ๋ชจ๋ํํ๋ค. bin/www
ํ์ผ์์ ์ด ๋ชจ๋์ ๋ถ๋ฌ์ ์๋ฒ๋ฅผ ์คํํ๋ค.
bin/www
Express ์ ํ๋ฆฌ์ผ์ด์
์์ ์ค์ ์๋ฒ๋ฅผ ์คํํ๋ ์คํฌ๋ฆฝํธ์ด๋ค. ์ฃผ๋ก npm start
๋ช
๋ น์ด ์คํํ ๋ ์ฌ์ฉ๋๋ค.
- ํฌํธ ์ค์ :
normalizePort
๋ฅผ ํตํด ์ ํจํ ํฌํธ๋ฅผ ๊ฒฐ์ ํ ํ, Express ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์ ํ๋ค. - HTTP ์๋ฒ ์์ฑ:
http.createServer(app)
์ผ๋ก Express ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ฐ์ผ๋ก HTTP ์๋ฒ๋ฅผ ์์ฑํ๋ค. - ์๋ฒ ๋ฆฌ์ค๋ ๋ฐ ์ด๋ฒคํธ ํธ๋ค๋ฌ ์ฐ๊ฒฐ: ์๋ฒ๊ฐ ์๋ฌ๊ฐ ๋๊ฑฐ๋ ์ ์์ ์ผ๋ก ์คํ๋ ๋ ์ฒ๋ฆฌํ๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ค์ ํ๋ค.
var port = normalizePort(process.env.PORT || '9999');
app.set('port', port);
ํฌํธ๋ฅผ ์ค์ ํ๊ณ Express ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ฅํ๋ค.
var server = http.createServer(app);
app
๊ฐ์ฒด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก HTTP ์๋ฒ๋ฅผ ์์ฑํ๋ค.
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
์๋ฒ๋ฅผ ๋ฆฌ์ค๋ ์ํ๋ก ๋ง๋ค๊ณ , ์๋ฌ ๋ฐ ๋ฆฌ์ค๋ ์ด๋ฒคํธ์ ๋ํ ํธ๋ค๋ฌ๋ฅผ ์ค์ ํ๋ค.
package.json
ํ๋ก์ ํธ์ ๋ฉํ ์ ๋ณด์ ์์กด์ฑ ๊ด๋ฆฌ๋ฅผ ๋ด๋นํ๋ค. npm install
์ ์คํํ๋ฉด ์ด ํ์ผ์ ๋ช
์๋ ์์กด์ฑ๋ค์ด ์ค์น๋๋ค.
public
์ ์ ๋ฆฌ์์ค ํ์ผ(์: ์ด๋ฏธ์ง, CSS, ์๋ฐ์คํฌ๋ฆฝํธ ๋ฑ)์ ์๋นํ๋ ํด๋์ด๋ค.
routes
๊ฐ ๊ฒฝ๋ก(route)๋ฅผ ์ ์ํ๋ ํ์ผ๋ค์ด ์์นํ๋ค.
routes/index.js
: ๊ธฐ๋ณธ ๊ฒฝ๋ก/
์ ๋ํ ์์ฒญ ์ฒ๋ฆฌ ๋ด๋น.routes/users.js
:/users
๊ฒฝ๋ก์ ๋ํ ์์ฒญ ์ฒ๋ฆฌ ๋ด๋น.
๊ฐ ๋ผ์ฐํธ ํ์ผ์์๋ express.Router()
๋ฅผ ์ฌ์ฉํด ๋ผ์ฐํฐ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ , ์ด๋ฅผ module.exports
๋ก ๋ด๋ณด๋ด ๋ค๋ฅธ ํ์ผ์์ ์ฌ์ฉํ ์ ์๋๋ก ์ค์ ํ๋ค.
views
์๋ฒ ์ธก์์ ๋ ๋๋ง๋๋ ๋ทฐ ํ ํ๋ฆฟ ํ์ผ๋ค์ด ์์นํ๋ค. Express ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋์ ์ผ๋ก HTML์ ์์ฑํ ๋ ์ฌ์ฉํ๋ ํ ํ๋ฆฟ ์์ง ํ์ผ๋ค์ด๋ค.
https://expressjs.com/en/starter/generator.html
Express - Node.js web application framework
expressjs.com