본문 바로가기

[자바스크립트] express 미들웨어 들어가며 여행을 떠나보면, 언젠가 왜 이 여행을 하려 했을까 하는 생각이 들 때가 있었습니다. 공부를 할 때도 마찬가지였습니다. Node.js를 활용해서 개발을 하고 있는데, 왜 Node.js를 활용하는지 문득 궁금했습니다. Node.js의 특징, 장단점, 그리고 다른 언어와의 차이를 알아보며 Node.js에 대해 이해해야겠다고 생각했습니다. 아래의 글은 [Node.js] express 미들웨어란? 글을 보고 공부하며 정리한 글입니다. 자세한 내용은 해당 글을 참고해주세요. Express 미들웨어 미들웨어는 서로 다른 애플리케이션이 서로 통신하는 데 사용되는 소프트웨어를 뜻합니다. 그럼 Express 프레임워크에서 말하는 미들웨어는 어떤 의미일까요? 이에 대해 알아보겠습니다. Express 공식문서에는 ..
[자바스크립트] module.export, exports 들어가며 모듈을 만들고 활용하면서 module.export, exports에 대한 명확한 이해 없이 개념을 활용하고 있다는 것을 알았습니다. 이번 기회에 이 개념들을 명확하게 이해해야겠다고 생각했습니다. module.exports, exports 는 무엇일까? 개발을 하다보면, 특정 코드를 모듈화 할 때 module.exports, exports, export, export default를 사용하곤 합니다. 뭐가 이렇게 많아? 생각하실 수 있습니다. 먼저 module.exports와 exports에 대해 차근차근 알아보겠습니다. 예를 들어 아래와 같은 코드가 있다고 보겠습니다. // app.js var Person = function(name) { this.name = name; } Person.prot..
[자바스크립트] 비동기 작업의 시간을 줄여보기 들어가며 본격적으로 개발을 하면서, 다양한 API를 개발하곤 합니다. 한 번은, 검색 API를 개발하면서, 응답속도가 3초 이상이 걸리는 로직이 있었습니다. 간단한 로직이었음에도 왜 3초씩이나 걸리는지 제대로 알지 못했습니다. 지금 생각해보면, 비동기에 대한 이해가 없어서 생긴 문제였습니다. 지금부터라도 비동기에 대해 더 자세히 공부해야겠다고 생각했습니다. 아래 글은 이 글을 바탕으로 작성됐습니다. await의 숨은 병목 async, await을 활용하면 비동기 처리를 동기적으로 처리하게끔 코드를 작성할 수 있습니다. 하지만, 이 과정에서 await을 마구잡이로 사용하게 된다면, 코드를 처리하는 시간이 오래 걸릴 수 있습니다. const book = await read(param); // 1000ms c..
[자바스크립트] 비동기 작업을 순서대로 처리하기 들어가며 본격적으로 개발을 하면서, 다양한 API를 개발하곤 합니다. 한 번은, 검색 API를 개발하면서, 응답속도가 3초 이상이 걸리는 로직이 있었습니다. 간단한 로직이었음에도 왜 3초씩이나 걸리는지 제대로 알지 못했습니다. 지금 생각해보면, 비동기에 대한 이해가 없어서 생긴 문제였습니다. 지금부터라도 비동기에 대해 더 자세히 공부해야겠다고 생각했습니다. 아래 글은 이 글을 바탕으로 작성됐습니다. forEach는 순차처리가 왜 안되는가? 만약 이런 질문을 받게 된다면 어떻게 답할 수 있을까요? Q. 지금 아래의 코드는 result가 1초 후 한꺼번에 10개가 출력되는데, 이걸 1초 간격으로 10번 출력되게 코드를 고쳐주세요. function test() { const promiseFunction = (..
[자바스크립트] async와 await 들어가며 저는 async, await만 쓰면 비동기가 되는 줄로만 알고 있었습니다. 그래서 async, await을 왜 써야 하는지 생각하지도 않고 무지성으로 사용하곤 했습니다. 하지만 모든 함수에 await를 쓴다면, 처리 속도가 상당히 지연될 수 있다는 것을 배우고서는 async, await을 어떻게 써야 할지에 대한 고민을 할 수 있었습니다. 그렇다면, 내가 정말 비동기에 대해 자세히 알고 있는가? 반문해봤을 때, 제대로 알지 못한다는 것을 알았습니다. 이번 기회에 이 부분을 제대로 정리해보고자 합니다. 다음 글은 캡틴 판교님의 자바스크립트 async와 await 글을 바탕으로 정리했습니다. 글에 대해 더 자세히 보고 싶으신 분은 여기를 참고해주세요. async, await란? async와 awai..
[자바스크립트] Promise 들어가며 저는 async, await만 쓰면 비동기가 되는 줄로만 알고 있었습니다. 그래서 async, await을 왜 써야 하는지 생각하지도 않고 무지성으로 사용하곤 했습니다. 하지만 모든 함수에 await를 쓴다면, 처리 속도가 상당히 지연될 수 있다는 것을 배우고서는 async, await을 어떻게 써야 할지에 대한 고민을 할 수 있었습니다. 그렇다면, 내가 정말 비동기에 대해 자세히 알고 있는가? 반문해봤을 때, 제대로 알지 못한다는 것을 알았습니다. 이번 기회에 이 부분을 제대로 정리해보고자 합니다. 다음 글은 캡틴 판교님의 자바스크립트 Promise 쉽게 이해하기 글을 바탕으로 정리했습니다. 글에 대해 더 자세히 보고 싶으신 분은 여기를 참고해주세요. Promise가 왜 필요한가요? 프로미스는..
[자바스크립트] 비동기 처리와 콜백 함수 들어가며 저는 async, await만 쓰면 비동기가 되는 줄로만 알고 있었습니다. 그래서 async, await을 왜 써야 하는지 생각하지도 않고 무지성으로 사용하곤 했습니다. 하지만 모든 함수에 await를 쓴다면, 처리 속도가 상당히 지연될 수 있다는 것을 배우고서는 async, await을 어떻게 써야 할지에 대한 고민을 할 수 있었습니다. 그렇다면, 내가 정말 비동기에 대해 자세히 알고 있는가? 반문해봤을 때, 제대로 알지 못한다는 것을 알았습니다. 이번 기회에 이 부분을 제대로 정리해보고자 합니다. 다음 글은 캡틴판교님의 자바스크립트 비동기 처리와 콜백 함수의 글을 바탕으로 정리했습니다. 글에 대해 더 자세히 보고 싶으신 분은 여기를 참고해주세요. 비동기 처리? 그게 뭔가요? 자바스크립트의 비..
[자바스크립트] Node.js 이벤트 루프 들어가며 여행을 떠나보면, 언젠가 왜 이 여행을 하려 했을까 하는 생각이 들 때가 있었습니다. 공부를 할 때도 마찬가지였습니다. Node.js를 활용해서 개발을 하고 있는데, 왜 Node.js를 활용하는지 문득 궁금했습니다. Node.js의 특징, 장단점, 그리고 다른 언어와의 차이를 알아보며 Node.js에 대해 이해해야겠다고 생각했습니다. 아래의 글은 Node.js 이벤트 루프(Event Loop) 샅샅이 분석하기 글을 통해 더 자세히 살펴보실 수 있습니다. Node.js란? 흔히 Node.js를 싱글 스레드 논 블로킹이라고 합니다. Node.js는 하나의 스레드로 동작하지만 I/O 작업이 발생한 경우 이를 비동기적으로 처리할 수 있습니다. 분명 하나의 스레드는 하나의 실행 흐름만을 가지고 있고 파일..
[자바스크립트] Node.js 논블로킹 탐구하기 들어가며 여행을 떠나보면, 언젠가 왜 이 여행을 하려 했을까 하는 생각이 들 때가 있었습니다. 공부를 할 때도 마찬가지였습니다. Node.js를 활용해서 개발을 하고 있는데, 왜 Node.js를 활용하는지 문득 궁금했습니다. Node.js의 특징, 장단점, 그리고 다른 언어와의 차이를 알아보며 Node.js에 대해 이해해야겠다고 생각했습니다. Node.js는 무엇인가? 블로킹과 논블로킹, 동기와 비동기에 대해 정리한 글에서, Node.js는 이벤트 기반, 논 블로킹 I/O 모델을 사용해서 가볍고 효율적이라고 했는데, 그러면 논 블로킹 I/O 모델을 사용한 게 왜 가볍고 효율적인 것인지를 알아보고 싶었습니다. 그럼 지금부터 왜 논 블로킹 IO가 Node.js의 특장점인지, CPU 코어의 활용을 극대화할 수..
[자바스크립트] 블로킹과 논블로킹, 동기와 비동기 들어가며 여행을 떠나보면, 언젠가 왜 이 여행을 하려 했을까 하는 생각이 들 때가 있었습니다. 공부를 할 때도 마찬가지였습니다. Node.js를 활용해서 개발을 하고 있는데, 왜 Node.js를 활용하는지 문득 궁금했습니다. Node.js의 특징, 장단점, 그리고 다른 언어와의 차이를 알아보며 Node.js에 대해 이해해야겠다고 생각했습니다. Node.js는 무엇인가? 먼저 Node.js는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임입니다. 즉 Node.js는 JavaScript를 실행할 수 있는 환경입니다. Node.js가 세상에 나오기 전까지는 JavaScript를 실행하는 환경은 브라우저뿐이었지만 Node.js를 이용해 브라우저 외에서도 JavaScript를 실행..