티스토리 뷰

아주 오래전에 Node.js를 접하고 최근까지 별로 사용할 부분이 없어서 잊고 있었는데, 이 책을 통해서 최신화할 수 있게 되어서 마음 한편으로 뿌듯하게 생각한다.

Node.js를 처음 접했던게 PC용 테스트 서버를 만드는 것이었다. 데스크톱 pc로 가볍게 돌릴만한 걸 찾다가 node.js를 보고 익혀 어찌어찌 적용했던 기억이 새롭다. 그땐 아무것도 모르고 그냥 사용했었는데 이번에 읽으면서 어떤 부분들이 적용되어 편리했었구나 하는 부분들을 다시금 깨닫게 되어 새로웠다. 

상황마다 차이가 발생했던 this. 그 때마다 '이건 무슨 차이지? 왜 매번 다를까?' 하고 고민했던 게 this라는 키워드이다. 다행히 요번에 확실히 알게 되어 기쁘다.

이번에 이해한 내용을 정리하자면, this 키워드는 인스턴스 자체에 대한 참조로 쓸 수 있다. 뭔 말인고 하니 내가 '가방' 이라는 인스턴스를 만들고 가방에 속성으로 펜, 노트, 핸드폰을 넣었다고 치자. 그러면 가방에 들은 속성들을 사용할 땐 가방. 노트, 가방. 펜 이런 식으로 쓰겠지.

그런데 만약 가방이라는 인스턴스 안에서 자기 자신을 부를땐 뭐라 해야 할까? 그럴 때 this를 쓴다. this. 노트, this. 핸드폰 이렇게 가방 인스턴스 안에서 쓰면 this는 당연히 가방이 된다.

만약 가방 인스턴스 바깥에서 this를 쓰면? 그럼 this는 가방 바깥의 어느 영역(?)에 있으니까 가방이 아니라 전역 콘텍스트를 의미하고 global 객체를 가리키는 것이다. 그래서 전역 콘텍스트에서 this. 노트라고 호출하면 당연히 노트 속성은 가방 인스턴스에 있고 global 객체에는 없으니까 undefined라고 에러 나게 된다.  

 

Node.js에서 빼놓을 수 없는게 비동기 처리이고 이 중에서 콜백, 프로미스, async/await 도 빼놓을 수 없는 삼총사이다. 이것도 개념 잡기가 첨에 어려워서 매번 쓸 때마다 그냥 그려려니 하면서 썼는데, 요번에 확실히 알겠더라.

콜백은 말그대로 처리가 다 끝나면 등록된 콜백함수로 회신(콜백) 오는 것이고. 프로미스는 콜백을 여러 번 쓰려면 콜백 안에 콜백 넣고 또 콜백 넣고 해야 하는 것이 번거로워서 성공, 실패 시 then, catch 메서드가 호출되는 객체를 만든 게 프로미스이다. 성공 시 이 걸해라라고 하려면 프로미스. then(). then(). then()... 요런 식으로 성공에 따른 것들을 콜백 없이 주르륵 써주니깐 편리하게 된다. 그렇게 프로미스를 쓰다 보니 조건이나 루프에서 사용하기 불편한 게 나왔고 그래서 나온 게 async/await이다. 기존의 동기 처리처럼 비동기 프로미스 처리를 async로 감싼 함수에서 프로미스 콜에 await만 붙여주면 이전 방식처럼 루프와 분기를 쓸 수 있게 되어 편리해진 거.

 

비동기 처리의 경우 요렇게 그림으로 설명해 주면 이해가 훨~~ 씬 쉽다. 요번에 책 보면서 헷갈린 부분 있었는데 그림 보다 보니 이해가 됨.

 

CLI 프로그램을 만드는 과정도 있는데 CLI보다 테스트 프로그램 만드는 게 더 재밌었다. 테스트라는 게 그다지 좋아하지 않아서 대충(?) 개발하고 테스트는 등한시한 게 많았었는데 요번에 읽으면서 그렇게 어렵지도 않고 여러모로 프로그램 완성도 올리는데 좋은 거 같아서 이후에는 잘 써봐야겠다는 생각이 든다.

서평단으로 활동하면서 여러 가지 책을 읽기는 하는데 요번에는 부쩍 재밌었다. 예전 기억도 새롭게 나고 내가 놓친 부분들을 많이 채울 수 있어서 좋았다.

"한빛미디어 < 나는 리뷰어다 > 활동을 위해서 책을 제공받아 작성된 서평입니다."