[내일배움캠프] TIL_221213

JungHoon Han·2022년 12월 13일
0

내일배움캠프

목록 보기
29/78

드디어 node.js !

드디어 node.js 공부를 시작했다.
한동안 파이썬으로 자료구조/알고리즘을 공부하고, 플라스크로 홈페이지를 만들며 자바스크립트를 많이 쓰지 않았던것 같다.
IE도 파이참으로 쓰다가 익숙한 VSCODE로 넘어왔다.
이제야 뭔가 심적 안정감이 찾아온다.
처음부터 동기, 비동기, 에러핸들링, 클래스, HTTP, 패키지 매니저 등 순서가 이게 맞나 싶은 뒤죽박죽 순서로(내가느끼기에는) 진도를 나가기 시작했다.
그러니 자꾸 집중이 잘안되는거 같았다.
그러다가 이제 진짜 node.js를 시작해보고 express.js로 첫 서버를 띄우고 하니 몰입이 되기 시작한다.
express.js는 node.js로 서버를 간편하게 만들수 있는 프레임워크이다.
파이썬의 Flask같은거라고 생각하면 된다.
최근에 각광받는 node.js의 프레임워크는 Nest.js라고 하는데 나는 express.js는 처음들었고 Nest.js는 유튜브인지 모집공고에서인지 몇번 본 기억이 있다.
터미널에 npm init을 입력하니 package.json 파일이 생성되고, express.js(프레임워크)를 설치하니 package-lock.json 파일이 생성된다.
이전에 프론트 공부를 하며 약 20가지의 토이프로젝트를 진행해 봤는데 그때 package.json을 제대로 설명해주지않고 넘어가 한참 고생했던 기억이 있었다.
그런데 몇달뒤에 다시보니 까먹었는데 친절하게 설명해주어서 이해가 간다.
그리고 모듈을 공부하다가 package.json파일안에 "type": 으로 "commonjs"와 "module" 방식이 있는데 "module"이 ES6방식을 사용한다고 하고 "commonjs"는 그 이전부터 사용하는 방식인거 같았다. 그런데 강의에서 계속 "commonjs"로 사용한다고 하여 요즘은 다 ES6방식을 쓰는게 아닌가 하는 궁금증이 생겨 구글링을 해보았다.

우선 CJS(commonjs)는 require/module.exports를 사용하고 동기적으로 작동하며, ESM(ECMAScript Modules)은 import/export를 사용하고 비동기적으로 작동한다.(ESM은 Top-level-Await을 지원하기 때문에 비동기적으로 동작한다. 고 한다.)
따라서 ESM은 CJS를 import 할 수 있지만 CJS에서는 ESM을 require할 수 없다.
그 이류는 CJS는 Top-level-Await을 지원하지 않기 때문이다.
이 외에도 두 모듈시스템은 가본적으로 동작이 다르고 서로 호환되지 어렵다고 한다.
자세한건 강의를 더 들어보고 찾아보도록 하자.

구글링 중 내가 언젠가 일하고싶은 토스의 기술블로그에서 참고했다.

profile
Node.js 주니어 개발자

0개의 댓글