Group Study (2022-2023)/Node.js 6

[6주차] MVC 패턴

MVC(모델-뷰-컨트롤러) Model, View, Controller의 약자이다. 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴이다. 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다. MVC 소프트웨어 디자인 패턴의 세 가지 부분은 다음과 같이 설명할 수 있다. 모델 데이터와 비즈니스 로직을 관리한다. 모델은 모델의 상태에 변화가 있을 때 컨트롤러와 뷰에 이를 통보한다. 이와 같은 통보를 통해서 뷰는 최신의 결과를 보여줄 수 있고, 컨트롤러는 모델의 변화에 따른 적용 가능한 명령을 추가·제거·수정할 수 있다. 뷰 레이아웃과 화면을 ..

[Node.js] 5주차 REST API

REST API를 알아보기 앞서 REST란 “Representational State Transfer” 의 약자 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다. * 자원: 소프트웨어가 관리하는 것들, url Ex) 문서, 소프트웨어 자체 ,데이터, 그림등 상태(정보) 전달 : 데이터가 요청되어지는 시점에서 자원의 상태(정보)를 전달한다. =>JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적이다. REST API의 작동 클라이언트가 서버에 요청을 전송. 클라이언트가 API 문서에 따라 서버가 이해하는 방식으로 요청 형식을 지정. 서버가 클라이언트를 인증, 해당 요청을 수행할 수 있는 권한이 클라이언트에 있는지 확인. 서버가 요청을 수신및 내부적 ..

[Node.js 입문] 3주차 스터디: 미들웨어, REST, 쿠키와 세션

미들웨어 미들웨어는 요청과 응답의 중간에 위치한다. 뒤에 나오는 라우터와 에러 핸들러 또한 미들웨어의 일종이다. 미들웨어는 요청과 응답을 조작하여 기능을 추가하기도하고 나쁜 요청을 걸러내기도 한다. app.use((req, res, next) => { console.log('모든 요청에서 다 실행된다.'); next(); }); app.get('/', (req, res, next) => { //미들웨어 2개 연결 console.log('GET / 요청에서만 실행된다.'); next(); }, (req, res) => { throw new Error('에러는 에러 처리 미들웨어로 간다.') }); app.use((err, req, res, next) => { console.error(err); res.st..

[Node.js 입문] 3주차 스터디

노드의 동작원리 먼저 저번주에 자바스크립트의 동기와 비동기에 대해서 설명을 잘 해주셨는데, 조오금만 더 보충설명하고 싶어서 언급하려고 한다. 우선 Node = js Runtime(실행환경) 이다. 따라서 동기코드, 비동기 코드가 어떻게 실행되는지는 노드에서만의 방식이 아니라 js의 방식이고 마찬가지로 브라우저에서도 거의 유사한 방식으로 코드가 처리된다. 우선 알아야하는 노드(js 런타임)의 중요한 특징에 대해 꼽자면 싱글 스레드 Nonblocking I/O( 논블락킹 입출력) event-driven 방식 이 3가지이다. 아래의 이미지로 어떻게 노드가 동작하고 왜 위 3가지 특징이 생기는지 간략하게 설명하겠다. (노드로 더 깔끔한 이미지를 찾고 싶었는데, 안나온다. 어차피 js 실행환경이 노드니까 별 차이..

[node.js입문] js 동기와 비동기 함수와 비동기 처리의 시작

1. 동기와 비동기 1)동기(synchronous): 자바스크립트의 경우 기본적으로 동기적인 언어이다. 동기적이라는 것은 위에서부터 순차적으로 시행한다는 것이다 예제코드 Console.log(‘1’); Console.log(‘2’); Console.log(‘3’); 위 코드의 경우 순서대로 읽어서 1,2,3을 출력하는 동기적인 함수의 예시이다. 2) 비동기(asynchronous) 비동기적인 것은 언제 코드가 실행될 수 있는지 모르는 것으로 대표적으로 setTimeOut과 같은 함수가 있다. SetTimeOut은 웹api로 우리가 지정한 시간이 지나면 콜백함수를 불러와준다. l 여기서 call back 함수란 우리가 전달해준 함수를 나중에 다시 불러와 주는 함수를 의미. function printnow(..

[Node.js] 1주차 스터디 : JS 문자열 리터럴, 호이스팅, JS와 Node에서의 모듈

먼저 1주차 강의(구름에듀 섹션 02)를 듣던 중…. 강사님이 var를 쓰시는 것을 보고야 말았다. 그래서 모듈만 적으려고 했는데 호이스팅에 대해서도 적고 싶어졌다. 자바스크립트에서는 변수를 3가지 형태로 선언할 수 있는데, 이는 var, let, const이다. 여기서 const는 상수로 선언하는것이고 var와 let은 변수로 선언한다. 그렇다면 왜 기존에 var가 있는데도 ES6부터 let을 추가했을까? 바로 이유는 var에 호이스팅이라는 아주 치명적인 단점이 있기때문이다. 물론 var, let, const는 이외에도 스코프 차이등 여러 차이점이 존재하지만 가장 큰 주안점인 호이스팅에 대해 주로 말하려고 한다. 호이스팅(hoisting)이란? 인터프리터가 변수와 함수의 메모리 공간을 선언전에 미리 할..