·서버를 띄워주는 app.listen을 모듈화

1) 새로 bin 폴더를 만들어 폴더 안에 www.js라는 파일 생성

2) www.js 파일에 app.listen 부분 붙여넣기

// www.js
"use strict";

const app = require("../app.js"); // bin의 상위폴더('../')에서 app.js에 접근

app.listen(3000, () => {
  console.log('서버 가동');
});

 

3) app.js에서는 app.listen부분은 지우고 대신 www.js로 app객체를 넘겨줄 수 있도록 코드 작성(마지막 줄 수정)

// app.js
"use stirct"

// 모듈
const express = require('express'); // require를 사용하여 express라는 모듈 다운
const app = express(); // app이라는 변수에 express를 실행시켜서 넣어주기
const PORT = 3000;

// 라우팅
const home = require('./routes/home'); // 괄호 안의 경로에 있는 파일(index.js)을 읽어달라는 요청


// View 분리
app.set('views', './views'); // 화면 뷰를 저장하고 관리해줄 파일을 ./views로 지정
app.set('view engine', 'ejs'); // views 폴더 안에 생성될 html코드들을 어떤 엔진으로 해석할지 결정('ejs', 그냥 html이랑 비슷)

app.use('/', home); // use는 미들웨어를 등록해주는 메소드, index.js의 라우터를 받아옴

// 모듈화를 위해 내보낸 app.listen 함수가 www.js 파일에서도 app이라는 객체를 인식할 수 있도록 내보내기
module.exports = app;

 - app.listen에 포트 번호를 PORT객체를 통해 줬다면 www.js로 넘겨줬을 때 PORT를 숫자로 직접 바꿔야 함

 

3) 서버가동은 www.js파일을 통해 시켜야하므로 터미널에 'node ./bin/www.js'를 입력하여 실행

  -실행 명령어 단축키로 하는 방법

   (1) package.json파일 에서 "scripts":{} 안에 지정

// 원래 test만 있던 scripts에
"scripts": {
  "test": "echo \"Error: no test specified\" && exit 1"
},
  
// 명령어 단축키 추가(start만 치면 node .bin/www.js 명령어가 실행됨
"scripts": {
  "start": "node ./bin/www.js",
  "test": "echo \"Error: no test specified\" && exit 1"
},

   (2) 터미널에 'npm start' 명령어 입력시 서버 가동됨

+ Recent posts