Node.js + express๋กœ ์„œ๋ฒ„ ๊ตฌ์ถ•ํ•˜๊ธฐ!

2022. 8. 31. 15:47ใ†BackEnd/Server

 

https://hafe-is-me.tistory.com/2

 

Node.js๋ž€?

Node.js๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?? Node.js๊ฐ€ ๋ฌด์—‡์ด๋ƒ๋Š” ์งˆ๋ฌธ์„ ๋ฐ›์•˜์„ ๋•Œ ์‰ฝ์‚ฌ๋ฆฌ ๋Œ€๋‹ตํ•  ์ˆ˜ ์—†์—ˆ๋‹ค ๊ป„๊ป„๊ป„....(์šฐ๋Š”์ค‘) ์‹ ์ž… ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž์˜€๋˜ ์ €์—๊ฒŒ node.js๋Š” live server๋ฅผ ์“ฐ๊ธฐ ์œ„ํ•œ ์ˆ˜๋‹จ์ด์—ˆ์„ ๋ฟ,,,, ๋ผ

hafe-is-me.tistory.com

 

์ง€๋‚œ ๊ธ€์— ์ด์–ด์„œ

node.js๊ฐ€ ์„œ๋ฒ„๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด node.js๋กœ ์„œ๋ฒ„๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ผ๊นŒ? 

 

express ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค.

express ๊ณต์‹๋ฌธ์„œ
http://expressjs.com/ 

๋จผ์ € ํด๋” ์ƒ์„ฑ๋ถ€ํ„ฐ ๋‚˜๋Š” study๋ผ๋Š” ๋Œ€์นดํ…Œ๊ณ ๋ฆฌ ์•ˆ์— server ํด๋”๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์—ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  install ์‹œ ํ”„๋กœ์ ํŠธ์˜ ๊ณจ๊ฒฉ ๋˜ํ•œ ๊ฐ™์ด ์ƒ์„ฑ๋˜๊ธธ ์›ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์„ค์น˜ ์นดํ…Œ๊ณ ๋ฆฌ๊ฐ€ ์•„๋‹Œ

 

์ต์Šคํ”„๋ ˆ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒ์„ฑ๊ธฐ ์นดํ…Œ๊ณ ๋ฆฌ ์•ˆ์˜ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ–ˆ๋‹ค. 

 

๊ณต์‹๋ฌธ์„œ ์ˆœ์„œ๋Œ€๋กœ

npm install express-generator

** ๊ณต์‹๋ฌธ์„œ์—์„œ๋Š” ์ „์—ญ์œผ๋กœ ์„ค์น˜ํ–ˆ์ง€๋งŒ ์Šคํ„ฐ๋””์šฉ์œผ๋กœ ์ „์—ญ์„ค์น˜๊ฐ€ ํ•„์š”์—†์–ด ์ „์—ญ์œผ๋กœ ์„ค์น˜ ์•ˆํ•จ

express --view=ejs express-sample

** ๊ณต์‹๋ฌธ์„œ์—์„œ๋Š” pug๋กœ ์„ค์น˜ํ–ˆ์ง€๋งŒ ejs๋กœ ๋ฐ”๊ฟ” ์„ค์น˜

(pug๊ฐ€ node์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ธ๋‹ค๊ณ  ํ•˜์ง€๋งŒ html์ด ํŽธํ•œ ๋‚˜๋Š” html๊ณผ ๋น„์Šทํ•œ ejs๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค)

 

๊ทธ๋Ÿผ ์ด๋ ‡๊ฒŒ express-sample ํด๋” ์•ˆ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณจ๊ฒฉ์ด ์ƒ์„ฑ๋œ๋‹ค.

๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ

.
โ”œโ”€โ”€ app.js
โ”œโ”€โ”€ bin
โ”‚   โ””โ”€โ”€ www
โ”œโ”€โ”€ package.json
โ”œโ”€โ”€ public
โ”‚   โ”œโ”€โ”€ images
โ”‚   โ”œโ”€โ”€ javascripts
โ”‚   โ””โ”€โ”€ stylesheets
โ”‚       โ””โ”€โ”€ style.css
โ”œโ”€โ”€ routes
โ”‚   โ”œโ”€โ”€ index.js
โ”‚   โ””โ”€โ”€ users.js
โ””โ”€โ”€ views
    โ”œโ”€โ”€ error.pug
    โ”œโ”€โ”€ index.pug
    โ””โ”€โ”€ layout.pug

cd express-sample
npm install

ํด๋” ์•ˆ์œผ๋กœ ๋“ค์–ด์™€ npm install์„ ํ•ด์ค€ ํ›„ ์‹คํ–‰์„ ์‹œ์ผœ์คŒ.

package.json์„ ๋ณด๋‹ˆ npm start๋ฅผ ํ•ด์ฃผ๋ฉด ์‹คํ–‰ ๋˜๋Š” ๋“ฏ!

{
  "name": "express-sample",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "cookie-parser": "~1.4.4",
    "debug": "~2.6.9",
    "ejs": "~2.6.1",
    "express": "~4.16.1",
    "http-errors": "~1.6.3",
    "morgan": "~1.9.1"
  }
}

npm start๋ฅผ ํ–ˆ๋Š”๋ฐ ์•„๋ฌด๋Ÿฐ url์ด ์•ˆ๋œจ๋‹ˆ ์ด์ƒํ•˜๋‹ค...(๋‹น์—ฐํ•˜์ง€ ์„œ๋ฒ„๋‹ˆ๊นŒ)

 

์ด๋Ÿด๋• ๊ณต์‹๋ฌธ์„œ์—์„œ์ฒ˜๋Ÿผ localhost:3000์„ ์ž…๋ ฅํ•˜์—ฌ ์•ฑ์— ์•ก์„ธ์Šคํ•˜๋ฉด ๋œ๋‹ค!

port ๋ฒˆํ˜ธ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ ์† bin -> www๋กœ ๋“ค์–ด๊ฐ€์„œ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•˜๋‹ค! 

#!/usr/bin/env node

/**
 * Module dependencies.
 */

var app = require('../app');
var debug = require('debug')('express-sample:server');
var http = require('http');

/**
 * Get port from environment and store in Express.
 */

var port = normalizePort(process.env.PORT || '3000');
app.set('port', port); // ์—ฌ๊ธฐ์„œ ํฌํŠธ๋ฒˆํ˜ธ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ

/**
 * Create HTTP server.
 */

var server = http.createServer(app);

/**
 * Listen on provided port, on all network interfaces.
 */

server.listen(port);
server.on('error', onError);
server.on('listening', onListening);

/**
 * Normalize a port into a number, string, or false.
 */

function normalizePort(val) {
  var port = parseInt(val, 10);

  if (isNaN(port)) {
    // named pipe
    return val;
  }

  if (port >= 0) {
    // port number
    return port;
  }

  return false;
}

/**
 * Event listener for HTTP server "error" event.
 */

function onError(error) {
  if (error.syscall !== 'listen') {
    throw error;
  }

  var bind = typeof port === 'string'
    ? 'Pipe ' + port
    : 'Port ' + port;

  // handle specific listen errors with friendly messages
  switch (error.code) {
    case 'EACCES':
      console.error(bind + ' requires elevated privileges');
      process.exit(1);
      break;
    case 'EADDRINUSE':
      console.error(bind + ' is already in use');
      process.exit(1);
      break;
    default:
      throw error;
  }
}

/**
 * Event listener for HTTP server "listening" event.
 */

function onListening() {
  var addr = server.address();
  var bind = typeof addr === 'string'
    ? 'pipe ' + addr
    : 'port ' + addr.port;
  debug('Listening on ' + bind);
}

 

localhost:3000์œผ๋กœ ๋“ค์–ด์˜ค๋ฉด ์•ก์„ธ์Šค ์„ฑ๊ณต!