목록Nodejs (10)
PracticeEveryday

Express-validator - 유효성 검사란 클라이언트에서 서버로 요청을 보낼 때, 정확한 데이터를 보내고 있는지 확인하는 것이다. npm install --save express-validator yarn add express-validator -D const { body, validationResult } = require('express-validator'); app.post( '/user', // username must be an email body('username').isEmail(), // password must be at least 5 chars long body('password').isLength({ min: 5 }), (req, res) => { // Finds the val..

라우팅 - 라우팅은 URI ( 또는 경로 ) 및 특정한 HTTP 요청 메소드 ( GET, POST 등 )인 특정 엔드포인트에 대한 클라이언트 요청에 애플리케이션이 응답하는 방법을 결정하는 것을 말합니다. 1. 클라이언트 요청은 URI + HTTP 메소드로 이루어진다. - 네이버 루트에 접속하는 경우 -> 'http://www.naver.com/' URI + Enter ( HTTP GET ) 2. 라우팅은 클라이언트 요청에 응답하는 방법을 말한다. - 클라이언트 요청은 URI와 HTTP 메소드로 이루어 진다고 했다. 근데 요청에 대한 응답을 주기 위해서는 URI가 어떤 구조로, 어떤 메소드로 요청을 올지 미리 서버쪽에서 정의해 두어야 한다. - 예를 들어 '/users 구조의 URI 가 GET 메서드로 올..

필요 패키지 - Swagger 형식에는 Yaml과 Json으로 설정하는 방식이 존재하는 데 Swagger 에서는 Yaml 방식을 정석으로 채택합니다. YAML 방식 YAML 방식 필요 패키지 npm install swagger-cli swagger-ui-express yamljs npm install -D @types/swagger-ui-express @types/yamljs swagger: "2.0" info: description: "This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagge..

NPM - NPM은 Node => Node.js Packaged => Package === Module Manager = 관리자의 약자입니다. - Package는 모듈이라고도 불리는데 패키지나 모듈은 프로그램보다는 조금 작은 단위의 기능을 이야기 한다. - NPM이라는 것은 Node.js로 만들어진 Package(Module)을 관리해 주는 툴을 이야기 한다. - NPM은 자바스크립트 런타임 환경인 Node.js의 기폰 패키지 관리자 역할을 하는데 이를 통해 패키지, 모듈이라고 불리는 자바스크립트 소프트웨어를 자신의 프로젝트에 설치할 수 있다. - 또한 NPM을 통해 자신의 프로젝트에서 사용중인 패키지들의 버전 업데이트도 관리할 수 있다. NPM의 구성 1. NPM 웹사이트 - NPM 웹사이트에서 패키지..

nextTickQueue , microTaskQueue - nextTickQueue와 microTaskQueue는 앞에서 말했듯 이벤트 루프의 일부가 아니다. - 정확히는 libUv에 포함되어 있지 않고 Node.js에 구현되어 있다. 따라서 이벤트 루프의 페이즈와 상관없이 동작한다. nextTickQueue nextTickQueue는 microTaskQueue 보다 높은 우선순위를 가지므로 더 먼저 실행된다. Promise.resolve().then(() => console.log("resolve")); process.nextTick(() => console.log("nextTick")); // process.nextTick은 같은 페이즈에서 호출한 즉시 실행된다. // nextTick // resol..

Pending: 보류중 Callbacks Phase - 이 페이즈에는 Pending_queue에 담기는 콜백들을 관리한다. - 이 큐에 담기는 콜백들은 이 전 이벤트 루프 반복에서 수행되지 못했던 I/O 콜백들이다. - Time Phase에서 말했듯 대부분의 페이즈는 시스템의 실행 한도의 영향을 받는다. - 시스템의 실행 한도 제한에 의해 큐에 쌓은 모든 작업을 실행하지 못하고 다음 페이즈로 넘어갈 수도 있다. - 이때 처리하지 못하고 넘어간 작업들을 쌓아놓고 실행하는 페이즈다. - 에러 헨들러 콜백 또한 pending_queue로 들어오게 된다. *nix는 TCP 단에서 ECONNREFUSED( : 연결 서버에 의해 거부)를 받으면 pending_queue에 에러 핸들러를 추가한다. static int..

이벤트 루프의 여러 페이즈 - 이벤트 루프는 말했든 여러 페이즈로 구성되어 있고 페이즈마다 관심있어 하는 작업이 다르다. - 비동기 작업의 종류마다 담기는 페이즈가 달라지고 실행 순서 또한 달라진다. 1. Timer Phase - Timer Phase 는 말 그대로 setTimeout이나 setInterval과 같은 함수가 만들어내는 타이머들을 다룬다. - // 엄밀하게 말하면 Timer Phase가 관리하는 큐에 콜백을 직접 담지는 않는다. - Timer Phase는 setTimeout이 호출 되었을 때 타이머의 콜백을 큐에 저장하지 않는다. - 그 대신 콜백을 언제 실행할 지에 정보가 담긴 타이머를 Timer Phase가 관리하는 min-heap에 넣는다. - 만약 Poll Phase에서 setTim..

이벤트 루프 Node 실행과 이벤트 루프 흐름 실제로 node someScript.js를 실행했을 때 어떤 일이 일어나는지 보자 우리가 node someScript.js를 실행하면 Node.js는 우선 이벤트 루프를 만든다. 그리고 이벤트 루프 바깥에서 someScript.js를 실행한다. 처음부터 끝까지 someScript를 실행하고 나면 Node.js는 그제서야 이벤트 루프를 확인한다. 이벤트 루프에 남은 작업이 있다면 Node.js는 이벤트 루프에 진입해 반복하며 작업을 실행한다. 이벤트 루프에 남은 작업이 없다면 Node.js는 process.on('exit', callback)을 실행하고 이벤트 루프를 종료한다. // case 1 // test.js console.log("Hello World"..

런타임 런타임이란 특정 언어로 만든 프로그램을 실행할 수 있는 환경을 뜻한다. 따라서 노드는 자바스크립트 프로그램을 컴퓨터에서 실행할 수 있게 하는 자바스크립트 실행기이다. 특히 2008년 구글이 V8 엔진을 사용하여 크롬을 출시했고 V8 엔진은 다른 자바스크립트 엔진과 달리 매우 빨라 라이언 달(Ryan Dahl)은 2009년 V8 엔진 기반의 노드 프로젝트를 시작하며 세상에 나왔다. JavaScript는 스크립트 언어이기 때문에 독립적인 프로그램을 만들 수가 없었지만 !! Nodejs가 나오면서 JavaScript라는 언어를 가지고 프로그램을 만들고 실행 시킬 수 있게 되었다!! Nodejs 특징 1. 이벤트 기반 2. 이벤트 루프 3. 논 브로킹 I/O 4. 싱글 스레드 console.log(1);..

Nodejs 1. HTML = Hyper: 들뜬 흥분한 Text Markup: 마크업(문서의 활자·조판 지정 표시) Language => HyperText(웹페이지에서 다른 페이지로 이동 할 수 있게 하는 것) 기능을 가진 문서를 만드는 언어 => HyperText 구조를 설계할 때 사용하는 웹 페이지를 위한 마크업 언어 => 정적임... 못바꿈 움직이게 동적인 효과를 주고 싶어 JavaScript 등장! => 글 넣고 그림넣고가 끝! 2. JavaScript => HTML을 동적으로 조작하기 위해 생긴 스크립트 언어( 특정한 프로그램을 돌리기 위해 등장한 언어 ) => 웹 페이지를 다이나믹하게 동적으로 바꾸는 것이 가능 => 즉, 웹 브라우저(크롬, 사파리, 익스플로러, 파이어폭스 등)가 없으면 사용할..