[백엔드 스터디] WIL 1주차_기본 개발환경 설정

Tools 동아리에서 진행하는 1학기 백엔드 스터디 기록입니다! Node.js를 이용해서 간단한 게시판을 만드는 스터디입니다!

0. 개발환경 설정

먼저 참고링크를 보면서 nodejs를 다운로드 해서 설치해준다.

그리고 원하는 위치에 폴더를 생성해주고 해당 폴더의 위치로 vscode를 연다.

node -v, npm -v으로 버전을 확인했을 때 위와 같이 잘 뜨면 성공이다!

npm i express express-generator -g

  • npm(node package manager) i(install) express(웹 프레임워크) express-generator(express 프로젝트의 기본 형식을 만들어줌 명령어 모듈) -g(옵션, 전역설치)
  • express를 설치하는 명령어
  • 이때 express-generator는 전역설치로 해야 프로젝트를 생성하기 때문에 -g 옵션을 반드시 추가한다.

express tools-board
tools-board라는 이름을 가진 express 기본 프로젝트를 생성해준다. 그리고 cd tools-board 명령어로 tools-board 폴더로 들어간다!


이제 Default로 설치되어 있는 jade 템플릿 엔진을 삭제하고 ejs 템플릿 엔진을 설치하는 작업을 해야한다!

💡 참고
package.json에 dependencies에서 패키지 설치 및 버전 확인 가능


npm uninstall jade
jade 템플릿 엔진 필요없으니까 삭제

npm install nodemon ejs mysql2
ejs, nodemon, mysql2 를 설치

💡 참고

  • ejs : 기존 html을 그대로 사용하며 <%= %>, <%%> 등으로 변수 사용, 코드 제어를 가능하도록 해주는 템플릿 엔진, 확장자로 ejs 를 사용
  • nodemon : 기존에 코드를 변경 할 때는 node 서버를 껏다 켜야 하지만,nodemon 을 사용함으로써 서버 구동 중에 파일의 변경이 확인되면 자동으로 재시작을 해줘서 편리하게 작업하도록
    해주는 미들웨어

명령어 만들기

scripts에 npm을 이용해서 명령어를 만들어 볼 수 있음
이 스크립트에 "test" : "nodemon ./bin/www"를 추가

💡 참고: npm i ejs nodemon --save

  • i = install
  • --save 옵션 : devDependencies가 아니라 dependencies에 패키지가 추가된다.즉, npm install react --save와 npm install react 는 npm5버전 이상에서는 같은 명령으로 인식된다.
    참고출처

app.js는 설정과 비슷하고 생각하면 된다. 이때 view engine의 옵션 jade를 ejs로 변경한다. 여기서 __dirname은 루트 path이고 views 폴더에 결합하겠다는 의미이다.


1. express 실행

! views 폴더에 jade 파일을 전부 삭제 시켜주고 index.ejs 파일을 하나 추가하고 다음과 같이 코드를 작성해보자
<html>
    <head>

    </head>
    <body>
        Hello ejs!
        <h1><%= title%></h1>
        <hr> <!-- 하이라이트로 만들어 줌 -->
        <%= test%>
        <hr>
        <% if(!test.length){ %>
            이상하군
        <%} else{ %>
            잘 만들어졌군 
        <% } %>
    </body>
</html>
  • ejs는 <%= 변수명 %>으로 웹상으로 값을 표출해낼 수 있고 <% for, switch case, if 등등 %> 웹 페이지 안에서 조건과 변수를 이용하여 많은 것을 할 수 있다.

routes에 index.js로 가서 res.render() 안에 title: ‘Express’, test: '' 안에 텍스트를 입력하여 views폴더 안에 있는 index에 title과 test 값을 보내준다.
var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Hello World', test:"툴스 홈페이지를 만드는 그날까지.."});
});

module.exports = router;

이제 라우터를 설정해주기 위해 app.js로 이동해보자!

라우터 등록은 이렇게!


npm test
로 express를 실행시킨 후 localhos:3000 치면

완성이다!!!!!!

💡 참고
express는 /bin/www를 통해서 실행되는데 www 파일 안에는 node.js를 실행시킬 때 포트번호 혹은 module dependencies 등 여러 설정들을 조작할 수 있다.



문제발생

Error: Failed to lookup view "error" in views directory라는 에러가 떴다...

알고보니... index.ejs 파일에 test 변수를 안 만들어두고 실행해서 에러가 떴다..
쿠쿸... 바보 같군...

2. 깃허브에 업로드

git을 이용해서 형상 관리를 하게 되는데 필요없는 파일들 혹은 개인 정보가 들어가는 파일들까지 올라가는 걸 방지하기 위해 .gitignore 파일을 만들어줘야 한다.

.gitignore를 위한 사이트에 들어가서


Node라고 치고 생성한 gitignore 텍스트를 복사한 후


.gitignore 파일을 만들어준다!

그리고 깃허브에 올려라~~



3. MVC 모델 살짝 맛보기

mvc ( model view controller )

  • mvc 모델은 다른인원들이랑 협업에 강점을 받기위해서 사용
  • models = DB 관리
    controller = 총체적인 접근, 예를 들어 게임패드 같은거
    view = 프론트 엔지니어나 화면에 흩뿌려주는 그런 것들

controller 폴더를 만들고 index.js를 만들고 다음과 같이 코드를 작성한다.

async function getIndex(req, res){
    try{
        res.render('index', {title:'Express', 'test':'MVC 모델'}); // 변수추가
    }catch(err){
        return res.status(500).json(err);
    }
}

module.exports={
    index:getIndex // 모델 이름을 index로 한다! 
}
  • node.js의 특징이 비동기
  • async await = 함수에 await이 있으면 멈춰서 이걸먼저 db 연동하고 다음으로 넘어가라! 즉 이 await이 있는 함수를 먼저 끝낸 후에 다음 함수로 넘어간다!
  • 모든 컨트롤러와 모델은 예외처리를 한다. error가 나면 서버가 멈춰서 try catch로 서버가 멈추지 않도록 방지한다.

그리고 router/index.js로 가서

var express = require('express'); // express를 받고
var router = express.Router(); // 라우터를 사용하겠어! 
const indexRouter = require('../controller/index');

/* GET home page. */
/*router.get('/', function(req, res, next) {
  res.render('index', { title: 'Hello World', test:"툴스 홈페이지를 만드는 그날까지.."});
});*/

router.get('/', indexController.index);
module.exports = router;

이렇게 라우터에 controller를 직접 등록해주면 된다!

참고자료

  • 위키북스

  • npm(Node Package Manager)
    npm은 미들웨어 관리를 도와주는 명령어로, 명령어를 이용하여 미들웨어를 설치/삭제/업데이트 관리 등이 가능하다. 즉 node.js에서 사용하는 모듈들을 패키지로 만들어 npm을 통하여 관리하고 배포한다.(비슷한 개념 python의 pip)

좋은 웹페이지 즐겨찾기