Welcome To

후니's Blog

Hello World
Let's Focus On
미들웨어(Express.js)
·
NodeJS
미들웨어Express.js의 핵심 개념 중 하나가 바로 미들웨어(Middleware)이다.미들웨어(Middleware)는 요청(request)과 응답(response) 사이에서 중간 역할을 하며, 각종 작업(로깅, 인증, 데이터 파싱 등)을 처리할 수 있는 함수이다.즉, 미들웨어는 요청/응답의 중간에서 공통 기능을 처리하는 함수이다.클라이언트가 서버로 요청을 보내면, 미들웨어가 그 요청을 받아 원하는 처리를 한 뒤, 다음 단계로 넘긴다.app.use()로 쉽게 추가할 수 있으며, 여러 개의 미들웨어를 순차적으로 쌓아 사용할 수 있다. 미들웨어 추가 방법Express.js에서는 app.use()를 사용하여 미들웨어를 추가한다const http = require("http");const express = r..
Express.js
·
NodeJS
Express.jsNode 프로젝트에 제 3자 패키지로 설치할 수 있는 프레임워크이다.반복적이고 필수적인 작업이나 신경 쓰고 싶지 않은 세부 구현을 외부에 맡길 수 있도록 도와준다. 우리가 비지니스 로직에 집중할 수 있게 다양한 유틸리티 함수를 제공한다.데이터 파싱, 라우팅, 에러 처리 등 서버 개발에 필요한 많은 기능을 손쉽게 사용할 수 있다.예를 들어, body-parser 등 다른 패키지와의 연동도 간편하게 할 수 있다.프레임워크를 사용하면 애플리케이션만의 고유한 코드, 즉 다른 애플리케이션과 구분되는 차별점에 집중할 수 있다.세부적인 반복 작업은 Express.js에 맡길 수 있다.프레임워크는 일련의 도움 함수와 우리가 다루는 도구, 규칙의 모음이다. 특징가볍고 유연하며, 필요한 기능만 선택적으로..
NodeJS의 작업 수행 방법
·
NodeJS
NodeJS가 여러 요청을 처리하는 방법NodeJS는 하나의 JavaScript 스레드만 사용한다. 문제점각 요청마다 스레드를 지정할 수 없기 때문에, 결국 모두 하나의 스레드에서 실행될 것이다.이에 따라 보안 상의 문제가 제기될 것이다. 그렇다면, 만약 요청 A를 아직 처리 중이라면, 요청 B는 처리할 수 없는 것일까 ?➡️ 그렇지 않다 ! 둘 다 처리할 수 있다 ! 어떻게 둘 다 처리할 수 있을까 ?1. fs(파일 시스템)에 접근할 수 있는 코드들을 사용할 수 있다.하지만, 파일을 다루는 작업은 오래 걸릴 수 있다.이에 따라, 들어온 요청을 다루고 있을 때, 새로 들어온 요청은 기다리거나, 거부될 수 있다. 2. 이벤트 루프를 이용한다.이벤트 루프는 Node.js가 시작하면 프로그램에 의해 자동으로 ..
이벤트 기반 코드 이해 & 블로킹, 논블로킹 코드
·
NodeJS
이벤트 기반 코드우선, 위 코드는 작성하는 순서대로 실행되는 것이 아님예를 들어, 23번째 줄의 코드는 25 ~ 27번째 줄의 코드 실행 후에 실행이 부분에서 매우 중요한 부분이 있는데,첫 번째는 응답 발송은 이벤트 리스너 실행이 끝났다는 의미가 아니라는 점즉, 응답이 발송된 후에도 이벤트 리스너는 계속해서 실행되고 있음두 번째는 25 ~ 27번째 줄의 코드와 같이 이벤트 리스너의 응답에 영향을 줄 수 있는 어떠한 처리를 하는 것은 잘못되었음이를 해결 하기 위해, 응답 코드를 이벤트 리스너에 포함시켜야 함따라서, 아래와 같이 코드를 바꾸어야 함 ↓ ↓ ↓ 이와 같이 Node.js는 함수를 함수 안에 넣으면 안에 넣은 함수를 나중에 실행하게되는데, 이를 비동기식이라고 부름 (함수 안에 넣은 함수가 항상 ..
라우터 요청 & 요청 리디렉션 & 분석(데이터 스트림, 버퍼)
·
NodeJS
라우터 요청서버는 우리가 입력하는 루트에 따라 기능이 달라짐이는 / 뒤에 무엇을 입력하느냐가 기능을 좌우하게 됨 만약 /만 입력했을 때 유저가 데이터를 입력하는 페이지를 로드하고 이 데이터가 전송된 후 서버에 있는 파일에 저장하게 하려면 아래와 같은 코드처럼 작성할 수 있음4 : /나 /example과 같이 URL을 새로운 상수에 저장5 : if문을 사용하여 URL이 스트링이며 값이 /와 동일하면 작동되게 함8 : action="/message"는 자동으로 생성된 요청이 전달될 URL을 추가해 주게 됨name="message"는 입력 데이터를 요청 및 추가하고 할당된 이름을 통해 액세스 하게 됨10 : 전체 함수의 작동을 중단하기 위하여 return을 붙여줌만약, return을 사용하여 반환하지 않으면 ..
응답 전송
·
NodeJS
응답 전송이 작업은 우리가 반송하길 원하는 데이터로 채우기 위해 사용할 수 있음4 : 새로운 헤더를 설정할 수 있음이렇게 하면 응답에 헤더를 붙이게 되고 응답의 일부가 될 컨텐츠 유형은 HTML이라는 일련의 메타 정보를 전달하게 됨5 ~ 8 : write는 res(response)에 데이터를 기록할 수 있고, 기본적으로 대단위 혹은 다수의 라인을 통해 작동함9 : 응답의 생성이 끝났음을 노드에 알려줌end를 호출한 이후부터는 더 이상 아무것도 입력해서는 안됨end 이후에 write를 계속 호출할 수 있지만 그 경우에는 오류가 발생함위 코드를 터미널에서 실행하고 localhost:3000으로 접속하면 아래와 같이 화면이 뜸이후 개발자 도구의 Network 탭에 들어가면 아래의 사진처럼 확인할 수 있음Hea..