ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [데브코스] 43일차 TIL
    TIL/교육 내용 정리 2024. 5. 21. 15:55

    express-generator와 우리 프로젝트 구조비교

    • bin/www : 포트 번호 등과 같은 웹 서버를 구축하는 데 필요한 설정 데이터가 정의되어 있는 파일
      .env 파일과 같이 설정 값을 가지고 에러 처리, 기타 추가 설정을 해주는 파일
    • node_modules : Node.js, Express에 필요한 모듈들이 설치되는 폴더
    • public : images, javascripts, stylesheets 폴더가 포함. → 정적 파일
      cf. 동적 : 사람마다 다른 데이터, 정적 : 로고, 회사 소개페이지
    • routes : 라우팅 하위에 존재하는 루트, 각 경로를 담당하는 모듈들이 들어있는 폴더
      = 라우팅 로직을 구현하는 모듈들 : 클라이언트에서 어떤 요청을 주냐에 따라서 어떤 로직을 수행할지 파일별로 분할 해서 관리하는 정도
      cf. 자바의 controller 역할
    • app.js : Express서버의 시작점에서 URL에 따라서 라우팅을 해준다.
    • views : 클라이언트에게 html 코드로 “화면을 보내는 파일”
    • package.json : 이 프로젝트에 설치된 모듈 이름, 버전 등,,.. 정보들이 작성되어 있는 파일

    오늘 이후로는 다시는 안 본다는 마음으로 코드를 하나씩 뜯어보자.

    + 왜 사용했는 지

    1. app.js
    const express = require('express');
    const app = express();
    
    const dotenv = require('dotenv');
    dotenv.config();
    
    app.listen(process.env.PORT);
    
    const userRouter = require('./routes/users');
    const bookRouter = require('./routes/books');
    const likeRouter = require('./routes/likes');
    const cartRouter = require('./routes/carts');
    const orderRouter = require('./routes/orders');
    
    app.use("/users", userRouter);
    app.use("/books", bookRouter);
    app.use("/likes", likeRouter);
    app.use("/carts", cartRouter);
    app.use("/orders", orderRouter);
    • const express = require('express');로 express 모듈을 불러올 수 있다.
    • const app = express();의 기능 : app의 다양한 설정과 라우팅을 정의할 수 있다.
      • 라우팅 설정 : app.get(), app.post()등,...
      • 미들웨어 설정 : app 객체를 통해 미들웨어 설정, 미들웨어는 요청이 서버에 도달하기 전 또는 서버의 응답이 클라이언트로 보내지기 전의 특정 작업을 수행하는 함수
    • const dotenv = require('dotenv'); : dotenv 모듈을 app.js로 가져온다.
    • dotenv.config(); : 환경 변수 로드 .env 파일을 읽고 그 안에 정의된 환경 변수를 process.env 객체에 로드(추가)
    • app.listen(process.env.PORT);app.listen() 메서드를 호출하여 서버를 시작하고,환경 변수 PORT에 지정된 포트에서 요청을 수신합니다..env 파일에 PORT 변수가 정의되어 있어야 합니다.
    • app.use("/users", userRouter); 라우터 미들웨어 설정
      • app.use()메서드를 사용하여 루트 경로 (/users)userRouter를 미들웨어로 추가.
      • 모든 요청은 userRouter에서 정의된 라우팅 규칙에 따라 처리.
    • const userRouter = require('./routes/users'); : 사용자 라우터 가져오기
      • (./routes/users ) 파일에서 사용자 라우터 모듈 가져옴.

    왜 const를 사용했을까?
    1. 재할당 방지
    : ‘const’로 선언된 변수는 재할당이 불가능하다. 즉, 한 번 값을 할당하면 이후에는 다른 값을 할당할 수 없다. 이는 변수의 값이 의도치 않게 변경되는 것을 방지하여 코드의 안정성을 높인다.
    2.명확한 의사 표현
    : ‘const’를 사용하면 해당 변수의 값이 변하지 않을 것임을 명시적으로 나타낸다. 이는 코드의 가독성을 높이고, 다른 개발자들이 코드를 이해하는 데 도움을 준다.
    3.블록 스코프
    : ‘const’로 선언된 변수는 블록 스코프를 가진다. 이는 변수가 선언된 블록 내에서만 접근 가능함을 의미한다. 이는 함수 스코프를 가지는 ‘var’와 비교했을 떄, 변수의 유효 범위를 제한하여 예기치 않은 버그를 줄이는 데 도움이 된다.

    1. users.js
      const express = require('express');
      const router = express.Router();
      
      router.use(express.json());
      
      router.post('/join', (req, res) =>{
      res.json('회원가입');
      });
      
      router.post('/login', (req, res) =>{
      res.json('로그인');
      });
      
      router.post('/reset', (req, res) =>{
      res.json('바말번호 초기화 요청');
      });
      
      router.put('/reset', (req, res) =>{
      res.json('비밀번호 초기화');
      });
      
      module.exports = router;
       
      • const router = express.Router();
        • Express 모듈 가져오기:express는 웹 애플리케이션을 위한 프레임워크입니다. 라우터 인스턴스 생성: const router = express.Router(); express.Router()를 호출하여 새로운 라우터 인스턴스를 생성합니다. 이 라우터 인스턴스를 통해 라우팅을 설정할 수 있습니다.
      • router.use(express.json());
        • 미들웨어 설정하는 코드. 이 코드를 통해 해당 라우터에서 JSON 형식의 요청 본문을 자동으로 파싱할 수 있다.
      • router.post('/login', (req, res) =>{ res.json('로그인'); });
        • router.post('/login', ...): 이 부분은 /login 경로에 대한 POST 요청을 처리할 라우트를 정의합니다
        • (req, res) => { ... }: 이 콜백 함수는 요청이 들어올 때 실행됩니다.
          • req 객체는 클라이언트의 요청에 대한 정보를 담고 있습니다.
          • res 객체는 서버가 클라이언트에게 응답할 때 사용하는 객체입니다.
      • res.json('로그인');: 응답으로 JSON 형식의 데이터를 클라이언트에게 보냅니다.
        • res.json() 메서드는 JSON 형식의 응답을 보내는 Express.js의 메서드입니다.
        • 여기서는 단순히 문자열 **'로그인'**을 JSON 형식으로 응답합니다.
    2.  

    'TIL > 교육 내용 정리' 카테고리의 다른 글

    [데브코스] 44일차 TIL  (0) 2024.05.22
    [데브코스]42일차 TIL  (0) 2024.05.20
    [데브코스] 30일차 TIL  (0) 2024.05.07
    [데브코스] 28일차 TIL  (0) 2024.05.05
    [데브코스] 27일차 TIL  (0) 2024.05.04
Designed by Tistory.